Name Description Size
cubeb.h @mainpage @section intro Introduction This is the documentation for the <tt>libcubeb</tt> C API. <tt>libcubeb</tt> is a callback-based audio API library allowing the authoring of portable multiplatform audio playback and recording. @section example Example code This example shows how to create a duplex stream that pipes the microphone to the speakers, with minimal latency and the proper sample-rate for the platform. @code cubeb * app_ctx; cubeb_init(&app_ctx, "Example Application", NULL); int rv; uint32_t rate; uint32_t latency_frames; uint64_t ts; rv = cubeb_get_preferred_sample_rate(app_ctx, &rate); if (rv != CUBEB_OK) { fprintf(stderr, "Could not get preferred sample-rate"); return rv; } cubeb_stream_params output_params; output_params.format = CUBEB_SAMPLE_FLOAT32NE; output_params.rate = rate; output_params.channels = 2; output_params.layout = CUBEB_LAYOUT_UNDEFINED; output_params.prefs = CUBEB_STREAM_PREF_NONE; rv = cubeb_get_min_latency(app_ctx, &output_params, &latency_frames); if (rv != CUBEB_OK) { fprintf(stderr, "Could not get minimum latency"); return rv; } cubeb_stream_params input_params; input_params.format = CUBEB_SAMPLE_FLOAT32NE; input_params.rate = rate; input_params.channels = 1; input_params.layout = CUBEB_LAYOUT_UNDEFINED; input_params.prefs = CUBEB_STREAM_PREF_NONE; cubeb_stream * stm; rv = cubeb_stream_init(app_ctx, &stm, "Example Stream 1", NULL, &input_params, NULL, &output_params, latency_frames, data_cb, state_cb, NULL); if (rv != CUBEB_OK) { fprintf(stderr, "Could not open the stream"); return rv; } rv = cubeb_stream_start(stm); if (rv != CUBEB_OK) { fprintf(stderr, "Could not start the stream"); return rv; } for (;;) { cubeb_stream_get_position(stm, &ts); printf("time=%llu\n", ts); sleep(1); } rv = cubeb_stream_stop(stm); if (rv != CUBEB_OK) { fprintf(stderr, "Could not stop the stream"); return rv; } cubeb_stream_destroy(stm); cubeb_destroy(app_ctx); @endcode @code long data_cb(cubeb_stream * stm, void * user, const void * input_buffer, void * output_buffer, long nframes) { const float * in = input_buffer; float * out = output_buffer; for (int i = 0; i < nframes; ++i) { for (int c = 0; c < 2; ++c) { out[2 * i + c] = in[i]; } } return nframes; } @endcode @code void state_cb(cubeb_stream * stm, void * user, cubeb_state state) { printf("state=%d\n", state); } @endcode 32890