Ejemplo n.º 1
0
static gc_int32 gauX_streamThreadFunc(void* in_context)
{
  gau_Manager* ctx = (gau_Manager*)in_context;
  ga_StreamManager* mgr = ctx->streamMgr;
  while(!ctx->killThreads)
  {
    ga_stream_manager_buffer(mgr);
    gc_thread_sleep(50);
  }
  return 0;
}
Ejemplo n.º 2
0
static gc_int32 gauX_mixThreadFunc(void* in_context)
{
  gau_Manager* ctx = (gau_Manager*)in_context;
  ga_Mixer* m = ctx->mixer;
  gc_int32 sampleSize = ga_format_sampleSize(&ctx->format);
  while(!ctx->killThreads)
  {
    gc_int32 numToQueue = ga_device_check(ctx->device);
    while(numToQueue--)
    {
      ga_mixer_mix(m, ctx->mixBuffer);
      ga_device_queue(ctx->device, ctx->mixBuffer);
    }
    gc_thread_sleep(5);
  }
  return 0;
}
Ejemplo n.º 3
0
int main(int argc, char** argv)
{
  gau_Manager* mgr;
  ga_Mixer* mixer;
  ga_Sound* sound;
  ga_Handle* handle;
  gau_SampleSourceLoop* loopSrc = 0;
  gau_SampleSourceLoop** pLoopSrc = &loopSrc;
  gc_int32 loop = 0;
  gc_int32 quit = 0;

  /* Initialize library + manager */
  gc_initialize(0);
  mgr = gau_manager_create();
  mixer = gau_manager_mixer(mgr);

  /* Create and play shared sound */
  if(!loop)
    pLoopSrc = 0;
  sound = gau_load_sound_file("test.wav", "wav");
  handle = gau_create_handle_sound(mixer, sound, &setFlagAndDestroyOnFinish, &quit, pLoopSrc);
  ga_handle_play(handle);

  /* Bounded mix/queue/dispatch loop */
  while(!quit)
  {
    gau_manager_update(mgr);
    printf("%d / %d\n", ga_handle_tell(handle, GA_TELL_PARAM_CURRENT), ga_handle_tell(handle, GA_TELL_PARAM_TOTAL));
    gc_thread_sleep(1);
  }

  /* Clean up sound */
  ga_sound_release(sound);

  /* Clean up library + manager */
  gau_manager_destroy(mgr);
  gc_shutdown();

  return 0;
}