#ifndef DEPENDENCY_AUDIO_DECODE_OGG
//Stubs:
//(none required)
#else

#ifdef QB64_BACKSLASH_FILESYSTEM
 #define STB_VORBIS_HEADER_ONLY
 #include "src\\stb_vorbis.c"
#else
 #define STB_VORBIS_HEADER_ONLY
 #include "src/stb_vorbis.c"
#endif

snd_sequence_struct *snd_decode_ogg(uint8 *buffer,int32 bytes){
  
  int result;
  int channels;
  int samplerate;
  short *out;
  result=stb_vorbis_decode_memory((unsigned char *)buffer,bytes,&channels,&samplerate,&out);
  if (result==-1) return NULL;
  //extern int stb_vorbis_decode_memory(unsigned char *mem, int len, int *channels, int *sample_rate, short **output);
  // decode an entire file and output the data interleaved into a malloc()ed
  // buffer stored in *output. The return value is the number of samples
  // decoded, or -1 if the file could not be opened or was not an ogg vorbis file.
  // When you're done with it, just free() the pointer returned in *output.
  
  //attach to new sequence
  static int32 seq_handle; seq_handle=list_add(snd_sequences);
  static snd_sequence_struct *seq; seq=(snd_sequence_struct*)list_get(snd_sequences,seq_handle);
  memset(seq,0,sizeof(snd_sequence_struct));
  seq->references=1;
  
  seq->channels=channels;
  seq->sample_rate=samplerate;
  seq->bits_per_sample=16;
  seq->endian=0;//native
  seq->is_unsigned=0;
  seq->data=(uint16*)out;
  seq->data_size=result*2*channels;
  
  
  return seq; 
}




#endif

