00001 #ifndef foostreamhfoo
00002 #define foostreamhfoo
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <sys/types.h>
00027
00028 #include <pulse/sample.h>
00029 #include <pulse/channelmap.h>
00030 #include <pulse/volume.h>
00031 #include <pulse/def.h>
00032 #include <pulse/cdecl.h>
00033 #include <pulse/operation.h>
00034
00313 PA_C_DECL_BEGIN
00314
00316 typedef struct pa_stream pa_stream;
00317
00319 typedef void (*pa_stream_success_cb_t) (pa_stream*s, int success, void *userdata);
00320
00322 typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t bytes, void *userdata);
00323
00325 typedef void (*pa_stream_notify_cb_t)(pa_stream *p, void *userdata);
00326
00333 typedef void (*pa_stream_event_cb_t)(pa_stream *p, const char *name, pa_proplist *pl, void *userdata);
00334
00338 pa_stream* pa_stream_new(
00339 pa_context *c ,
00340 const char *name ,
00341 const pa_sample_spec *ss ,
00342 const pa_channel_map *map );
00343
00347 pa_stream* pa_stream_new_with_proplist(
00348 pa_context *c ,
00349 const char *name ,
00350 const pa_sample_spec *ss ,
00351 const pa_channel_map *map ,
00352 pa_proplist *p );
00353
00355 void pa_stream_unref(pa_stream *s);
00356
00358 pa_stream *pa_stream_ref(pa_stream *s);
00359
00361 pa_stream_state_t pa_stream_get_state(pa_stream *p);
00362
00364 pa_context* pa_stream_get_context(pa_stream *p);
00365
00370 uint32_t pa_stream_get_index(pa_stream *s);
00371
00380 uint32_t pa_stream_get_device_index(pa_stream *s);
00381
00390 const char *pa_stream_get_device_name(pa_stream *s);
00391
00396 int pa_stream_is_suspended(pa_stream *s);
00397
00400 int pa_stream_is_corked(pa_stream *s);
00401
00403 int pa_stream_connect_playback(
00404 pa_stream *s ,
00405 const char *dev ,
00406 const pa_buffer_attr *attr ,
00407 pa_stream_flags_t flags ,
00408 pa_cvolume *volume ,
00409 pa_stream *sync_stream );
00410
00412 int pa_stream_connect_record(
00413 pa_stream *s ,
00414 const char *dev ,
00415 const pa_buffer_attr *attr ,
00416 pa_stream_flags_t flags );
00417
00419 int pa_stream_disconnect(pa_stream *s);
00420
00430 int pa_stream_write(
00431 pa_stream *p ,
00432 const void *data ,
00433 size_t nbytes ,
00434 pa_free_cb_t free_cb ,
00435 int64_t offset,
00436 pa_seek_mode_t seek );
00437
00443 int pa_stream_peek(
00444 pa_stream *p ,
00445 const void **data ,
00446 size_t *nbytes );
00447
00450 int pa_stream_drop(pa_stream *p);
00451
00453 size_t pa_stream_writable_size(pa_stream *p);
00454
00456 size_t pa_stream_readable_size(pa_stream *p);
00457
00459 pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
00460
00465 pa_operation* pa_stream_update_timing_info(pa_stream *p, pa_stream_success_cb_t cb, void *userdata);
00466
00468 void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata);
00469
00472 void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
00473
00476 void pa_stream_set_read_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
00477
00479 void pa_stream_set_overflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00480
00482 void pa_stream_set_underflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00483
00489 void pa_stream_set_started_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00490
00494 void pa_stream_set_latency_update_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00495
00501 void pa_stream_set_moved_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00502
00511 void pa_stream_set_suspended_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00512
00515 void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata);
00516
00522 void pa_stream_set_buffer_attr_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata);
00523
00534 pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata);
00535
00540 pa_operation* pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
00541
00544 pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
00545
00549 pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata);
00550
00552 pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata);
00553
00585 int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec);
00586
00597 int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative);
00598
00613 const pa_timing_info* pa_stream_get_timing_info(pa_stream *s);
00614
00616 const pa_sample_spec* pa_stream_get_sample_spec(pa_stream *s);
00617
00619 const pa_channel_map* pa_stream_get_channel_map(pa_stream *s);
00620
00629 const pa_buffer_attr* pa_stream_get_buffer_attr(pa_stream *s);
00630
00639 pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr, pa_stream_success_cb_t cb, void *userdata);
00640
00646 pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata);
00647
00654 pa_operation *pa_stream_proplist_update(pa_stream *s, pa_update_mode_t mode, pa_proplist *p, pa_stream_success_cb_t cb, void *userdata);
00655
00658 pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata);
00659
00664 int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx);
00665
00668 uint32_t pa_stream_get_monitor_stream(pa_stream *s);
00669
00670 PA_C_DECL_END
00671
00672 #endif