예제 #1
0
bool audio_loadStream(audio_StreamSource *source, char const * filename) {
  // TODO select approprate decoder (there is only one right now though!)
  source->decoder = streamDecoders[0];
  
  char const* infile = filesystem_locateReadableFile(filename);

  bool good = source->decoder->openFile(infile, &source->decoderData);
  if(!good) {
    return false;
  }

  audio_SourceCommon_init(&source->common);

  alGenBuffers(preloadBufferCount, source->buffers);

  initialPreload(source);

  source->looping = false;

  // Make copy of filename (allows simple free on the filename when closing a stream)
  source->filename = malloc(sizeof(char) * (strlen(filename) + 1));
  strcpy(source->filename, filename);

  return good;
}
예제 #2
0
void audio_StaticSource_clone(audio_StaticSource const* oldSrc, audio_StaticSource * newSrc) {
  audio_SourceCommon_init(&newSrc->common);

  audio_StaticBuffer_ref(oldSrc->buffer);
  newSrc->buffer = oldSrc->buffer;

  alSourcei(newSrc->common.source, AL_BUFFER, newSrc->buffer->buffer);
}
예제 #3
0
bool audio_loadStream(audio_StreamSource *source, char const * filename) {
  // TODO select approprate decoder (there only one right now though!)
  source->decoder = streamDecoders[0];

  bool good = source->decoder->openFile(filename, &source->decoderData);
  if(!good) {
    return false;
  }

  audio_SourceCommon_init(&source->common);

  alGenBuffers(2, source->buffers);

  initialPreload(source);

  source->looping = false;

  source->filename = malloc(sizeof(char) * (strlen(filename) + 1));
  strcpy(source->filename, filename);

  return good;
}
예제 #4
0
bool audio_loadStatic(audio_StaticSource *source, char const * filename) {
  while(filename[0] == '/') {
    ++filename;
  }

  char const* infile = filesystem_locateReadableFile(filename);

  audio_SourceCommon_init(&source->common);

  source->buffer = audio_StaticBuffer_new();

  // decoder shall close the file
  bool loaded = staticDecoders[0]->loadFile(source->buffer->buffer, infile);

  if(!loaded) {
    audio_StaticBuffer_free(source->buffer);
    audio_SourceCommon_free(&source->common);
    return false;
  }

  alSourcei(source->common.source, AL_BUFFER, source->buffer->buffer);
  return true;
}