00001 #ifndef foodefhfoo
00002 #define foodefhfoo
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 <inttypes.h>
00027 #include <sys/time.h>
00028 #include <time.h>
00029
00030 #include <pulse/cdecl.h>
00031 #include <pulse/sample.h>
00032 #include <pulse/version.h>
00033
00037 PA_C_DECL_BEGIN
00038
00040 typedef enum pa_context_state {
00041 PA_CONTEXT_UNCONNECTED,
00042 PA_CONTEXT_CONNECTING,
00043 PA_CONTEXT_AUTHORIZING,
00044 PA_CONTEXT_SETTING_NAME,
00045 PA_CONTEXT_READY,
00046 PA_CONTEXT_FAILED,
00047 PA_CONTEXT_TERMINATED
00048 } pa_context_state_t;
00049
00051 static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
00052 return
00053 x == PA_CONTEXT_CONNECTING ||
00054 x == PA_CONTEXT_AUTHORIZING ||
00055 x == PA_CONTEXT_SETTING_NAME ||
00056 x == PA_CONTEXT_READY;
00057 }
00058
00060 #define PA_CONTEXT_UNCONNECTED PA_CONTEXT_UNCONNECTED
00061 #define PA_CONTEXT_CONNECTING PA_CONTEXT_CONNECTING
00062 #define PA_CONTEXT_AUTHORIZING PA_CONTEXT_AUTHORIZING
00063 #define PA_CONTEXT_SETTING_NAME PA_CONTEXT_SETTING_NAME
00064 #define PA_CONTEXT_READY PA_CONTEXT_READY
00065 #define PA_CONTEXT_FAILED PA_CONTEXT_FAILED
00066 #define PA_CONTEXT_IS_GOOD PA_CONTEXT_IS_GOOD
00067
00070 typedef enum pa_stream_state {
00071 PA_STREAM_UNCONNECTED,
00072 PA_STREAM_CREATING,
00073 PA_STREAM_READY,
00074 PA_STREAM_FAILED,
00075 PA_STREAM_TERMINATED
00076 } pa_stream_state_t;
00077
00079 static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
00080 return
00081 x == PA_STREAM_CREATING ||
00082 x == PA_STREAM_READY;
00083 }
00084
00086 #define PA_STREAM_UNCONNECTED PA_STREAM_UNCONNECTED
00087 #define PA_STREAM_CREATING PA_STREAM_CREATING
00088 #define PA_STREAM_READY PA_STREAM_READY
00089 #define PA_STREAM_FAILED PA_STREAM_FAILED
00090 #define PA_STREAM_TERMINATED PA_STREAM_TERMINATED
00091 #define PA_STREAM_IS_GOOD PA_STREAM_IS_GOOD
00092
00095 typedef enum pa_operation_state {
00096 PA_OPERATION_RUNNING,
00097 PA_OPERATION_DONE,
00098 PA_OPERATION_CANCELED
00099 } pa_operation_state_t;
00100
00102 #define PA_OPERATION_RUNNING PA_OPERATION_RUNNING
00103 #define PA_OPERATION_DONE PA_OPERATION_DONE
00104 #define PA_OPERATION_CANCELED PA_OPERATION_CANCELED
00105
00108 #define PA_INVALID_INDEX ((uint32_t) -1)
00109
00111 typedef enum pa_context_flags {
00112 PA_CONTEXT_NOAUTOSPAWN = 1
00114 } pa_context_flags_t;
00115
00117
00118 #define PA_CONTEXT_NOAUTOSPAWN PA_CONTEXT_NOAUTOSPAWN
00119
00122 typedef enum pa_stream_direction {
00123 PA_STREAM_NODIRECTION,
00124 PA_STREAM_PLAYBACK,
00125 PA_STREAM_RECORD,
00126 PA_STREAM_UPLOAD
00127 } pa_stream_direction_t;
00128
00130 #define PA_STREAM_NODIRECTION PA_STREAM_NODIRECTION
00131 #define PA_STREAM_PLAYBACK PA_STREAM_PLAYBACK
00132 #define PA_STREAM_RECORD PA_STREAM_RECORD
00133 #define PA_STREAM_UPLOAD PA_STREAM_UPLOAD
00134
00137 typedef enum pa_stream_flags {
00138
00139 PA_STREAM_START_CORKED = 0x0001U,
00143 PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
00155 PA_STREAM_NOT_MONOTONIC = 0x0004U,
00167 PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
00174 PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
00180 PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
00186 PA_STREAM_FIX_FORMAT = 0x0040U,
00198 PA_STREAM_FIX_RATE = 0x0080U,
00204 PA_STREAM_FIX_CHANNELS = 0x0100,
00211 PA_STREAM_DONT_MOVE = 0x0200U,
00220 PA_STREAM_VARIABLE_RATE = 0x0400U,
00226 PA_STREAM_PEAK_DETECT = 0x0800U,
00229 PA_STREAM_START_MUTED = 0x1000U,
00235 PA_STREAM_ADJUST_LATENCY = 0x2000U,
00242 PA_STREAM_EARLY_REQUESTS = 0x4000U,
00259 PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
00264 PA_STREAM_START_UNMUTED = 0x10000U,
00270 PA_STREAM_FAIL_ON_SUSPEND = 0x20000U
00275 } pa_stream_flags_t;
00276
00279
00280 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC
00281
00282
00283 #define PA_STREAM_START_CORKED PA_STREAM_START_CORKED
00284 #define PA_STREAM_INTERPOLATE_TIMING PA_STREAM_INTERPOLATE_TIMING
00285 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONIC
00286 #define PA_STREAM_AUTO_TIMING_UPDATE PA_STREAM_AUTO_TIMING_UPDATE
00287 #define PA_STREAM_NO_REMAP_CHANNELS PA_STREAM_NO_REMAP_CHANNELS
00288 #define PA_STREAM_NO_REMIX_CHANNELS PA_STREAM_NO_REMIX_CHANNELS
00289 #define PA_STREAM_FIX_FORMAT PA_STREAM_FIX_FORMAT
00290 #define PA_STREAM_FIX_RATE PA_STREAM_FIX_RATE
00291 #define PA_STREAM_FIX_CHANNELS PA_STREAM_FIX_CHANNELS
00292 #define PA_STREAM_DONT_MOVE PA_STREAM_DONT_MOVE
00293 #define PA_STREAM_VARIABLE_RATE PA_STREAM_VARIABLE_RATE
00294 #define PA_STREAM_PEAK_DETECT PA_STREAM_PEAK_DETECT
00295 #define PA_STREAM_START_MUTED PA_STREAM_START_MUTED
00296 #define PA_STREAM_ADJUST_LATENCY PA_STREAM_ADJUST_LATENCY
00297 #define PA_STREAM_EARLY_REQUESTS PA_STREAM_EARLY_REQUESTS
00298 #define PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND
00299 #define PA_STREAM_START_UNMUTED PA_STREAM_START_UNMUTED
00300 #define PA_STREAM_FAIL_ON_SUSPEND PA_STREAM_FAIL_ON_SUSPEND
00301
00305 typedef struct pa_buffer_attr {
00306 uint32_t maxlength;
00311 uint32_t tlength;
00329 uint32_t prebuf;
00340 uint32_t minreq;
00350 uint32_t fragsize;
00364 } pa_buffer_attr;
00365
00367 enum {
00368 PA_OK = 0,
00369 PA_ERR_ACCESS,
00370 PA_ERR_COMMAND,
00371 PA_ERR_INVALID,
00372 PA_ERR_EXIST,
00373 PA_ERR_NOENTITY,
00374 PA_ERR_CONNECTIONREFUSED,
00375 PA_ERR_PROTOCOL,
00376 PA_ERR_TIMEOUT,
00377 PA_ERR_AUTHKEY,
00378 PA_ERR_INTERNAL,
00379 PA_ERR_CONNECTIONTERMINATED,
00380 PA_ERR_KILLED,
00381 PA_ERR_INVALIDSERVER,
00382 PA_ERR_MODINITFAILED,
00383 PA_ERR_BADSTATE,
00384 PA_ERR_NODATA,
00385 PA_ERR_VERSION,
00386 PA_ERR_TOOLARGE,
00387 PA_ERR_NOTSUPPORTED,
00388 PA_ERR_UNKNOWN,
00389 PA_ERR_NOEXTENSION,
00390 PA_ERR_OBSOLETE,
00391 PA_ERR_NOTIMPLEMENTED,
00392 PA_ERR_MAX
00393 };
00394
00396 #define PA_OK PA_OK
00397 #define PA_ERR_ACCESS PA_ERR_ACCESS
00398 #define PA_ERR_COMMAND PA_ERR_COMMAND
00399 #define PA_ERR_INVALID PA_ERR_INVALID
00400 #define PA_ERR_EXIST PA_ERR_EXIST
00401 #define PA_ERR_NOENTITY PA_ERR_NOENTITY
00402 #define PA_ERR_CONNECTIONREFUSED PA_ERR_CONNECTIONREFUSED
00403 #define PA_ERR_PROTOCOL PA_ERR_PROTOCOL
00404 #define PA_ERR_TIMEOUT PA_ERR_TIMEOUT
00405 #define PA_ERR_AUTHKEY PA_ERR_AUTHKEY
00406 #define PA_ERR_INTERNAL PA_ERR_INTERNAL
00407 #define PA_ERR_CONNECTIONTERMINATED PA_ERR_CONNECTIONTERMINATED
00408 #define PA_ERR_KILLED PA_ERR_KILLED
00409 #define PA_ERR_INVALIDSERVER PA_ERR_INVALIDSERVER
00410 #define PA_ERR_MODINITFAILED PA_ERR_MODINITFAILED
00411 #define PA_ERR_BADSTATE PA_ERR_BADSTATE
00412 #define PA_ERR_NODATA PA_ERR_NODATA
00413 #define PA_ERR_VERSION PA_ERR_VERSION
00414 #define PA_ERR_TOOLARGE PA_ERR_TOOLARGE
00415 #define PA_ERR_NOTSUPPORTED PA_ERR_NOTSUPPORTED
00416 #define PA_ERR_UNKNOWN PA_ERR_UNKNOWN
00417 #define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION
00418 #define PA_ERR_OBSOLETE PA_ERR_OBSOLETE
00419 #define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED
00420 #define PA_ERR_MAX PA_ERR_MAX
00421
00424 typedef enum pa_subscription_mask {
00425 PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
00428 PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
00431 PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
00434 PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
00437 PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
00440 PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
00443 PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
00446 PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
00449 PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
00453 PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
00457 PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
00460 PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
00462 } pa_subscription_mask_t;
00463
00465 typedef enum pa_subscription_event_type {
00466 PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
00469 PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
00472 PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
00475 PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
00478 PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
00481 PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
00484 PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
00487 PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
00491 PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
00495 PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
00498 PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
00501 PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
00504 PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
00507 PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
00510 PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
00513 } pa_subscription_event_type_t;
00514
00516 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00517
00519 #define PA_SUBSCRIPTION_MASK_NULL PA_SUBSCRIPTION_MASK_NULL
00520 #define PA_SUBSCRIPTION_MASK_SINK PA_SUBSCRIPTION_MASK_SINK
00521 #define PA_SUBSCRIPTION_MASK_SOURCE PA_SUBSCRIPTION_MASK_SOURCE
00522 #define PA_SUBSCRIPTION_MASK_SINK_INPUT PA_SUBSCRIPTION_MASK_SINK_INPUT
00523 #define PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT
00524 #define PA_SUBSCRIPTION_MASK_MODULE PA_SUBSCRIPTION_MASK_MODULE
00525 #define PA_SUBSCRIPTION_MASK_CLIENT PA_SUBSCRIPTION_MASK_CLIENT
00526 #define PA_SUBSCRIPTION_MASK_SAMPLE_CACHE PA_SUBSCRIPTION_MASK_SAMPLE_CACHE
00527 #define PA_SUBSCRIPTION_MASK_SERVER PA_SUBSCRIPTION_MASK_SERVER
00528 #define PA_SUBSCRIPTION_MASK_AUTOLOAD PA_SUBSCRIPTION_MASK_AUTOLOAD
00529 #define PA_SUBSCRIPTION_MASK_CARD PA_SUBSCRIPTION_MASK_CARD
00530 #define PA_SUBSCRIPTION_MASK_ALL PA_SUBSCRIPTION_MASK_ALL
00531 #define PA_SUBSCRIPTION_EVENT_SINK PA_SUBSCRIPTION_EVENT_SINK
00532 #define PA_SUBSCRIPTION_EVENT_SOURCE PA_SUBSCRIPTION_EVENT_SOURCE
00533 #define PA_SUBSCRIPTION_EVENT_SINK_INPUT PA_SUBSCRIPTION_EVENT_SINK_INPUT
00534 #define PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT
00535 #define PA_SUBSCRIPTION_EVENT_MODULE PA_SUBSCRIPTION_EVENT_MODULE
00536 #define PA_SUBSCRIPTION_EVENT_CLIENT PA_SUBSCRIPTION_EVENT_CLIENT
00537 #define PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE
00538 #define PA_SUBSCRIPTION_EVENT_SERVER PA_SUBSCRIPTION_EVENT_SERVER
00539 #define PA_SUBSCRIPTION_EVENT_AUTOLOAD PA_SUBSCRIPTION_EVENT_AUTOLOAD
00540 #define PA_SUBSCRIPTION_EVENT_CARD PA_SUBSCRIPTION_EVENT_CARD
00541 #define PA_SUBSCRIPTION_EVENT_FACILITY_MASK PA_SUBSCRIPTION_EVENT_FACILITY_MASK
00542 #define PA_SUBSCRIPTION_EVENT_NEW PA_SUBSCRIPTION_EVENT_NEW
00543 #define PA_SUBSCRIPTION_EVENT_CHANGE PA_SUBSCRIPTION_EVENT_CHANGE
00544 #define PA_SUBSCRIPTION_EVENT_REMOVE PA_SUBSCRIPTION_EVENT_REMOVE
00545 #define PA_SUBSCRIPTION_EVENT_TYPE_MASK PA_SUBSCRIPTION_EVENT_TYPE_MASK
00546
00566 typedef struct pa_timing_info {
00567 struct timeval timestamp;
00570 int synchronized_clocks;
00577 pa_usec_t sink_usec;
00582 pa_usec_t source_usec;
00586 pa_usec_t transport_usec;
00590 int playing;
00597 int write_index_corrupt;
00604 int64_t write_index;
00610 int read_index_corrupt;
00615 int64_t read_index;
00621 pa_usec_t configured_sink_usec;
00624 pa_usec_t configured_source_usec;
00627 int64_t since_underrun;
00633 } pa_timing_info;
00634
00642 typedef struct pa_spawn_api {
00643 void (*prefork)(void);
00647 void (*postfork)(void);
00651 void (*atfork)(void);
00657 } pa_spawn_api;
00658
00660 typedef enum pa_seek_mode {
00661 PA_SEEK_RELATIVE = 0,
00664 PA_SEEK_ABSOLUTE = 1,
00667 PA_SEEK_RELATIVE_ON_READ = 2,
00670 PA_SEEK_RELATIVE_END = 3
00672 } pa_seek_mode_t;
00673
00675 #define PA_SEEK_RELATIVE PA_SEEK_RELATIVE
00676 #define PA_SEEK_ABSOLUTE PA_SEEK_ABSOLUTE
00677 #define PA_SEEK_RELATIVE_ON_READ PA_SEEK_RELATIVE_ON_READ
00678 #define PA_SEEK_RELATIVE_END PA_SEEK_RELATIVE_END
00679
00682 typedef enum pa_sink_flags {
00683 PA_SINK_HW_VOLUME_CTRL = 0x0001U,
00686 PA_SINK_LATENCY = 0x0002U,
00689 PA_SINK_HARDWARE = 0x0004U,
00693 PA_SINK_NETWORK = 0x0008U,
00696 PA_SINK_HW_MUTE_CTRL = 0x0010U,
00699 PA_SINK_DECIBEL_VOLUME = 0x0020U,
00703 PA_SINK_FLAT_VOLUME = 0x0040U
00706 } pa_sink_flags_t;
00707
00709 #define PA_SINK_HW_VOLUME_CTRL PA_SINK_HW_VOLUME_CTRL
00710 #define PA_SINK_LATENCY PA_SINK_LATENCY
00711 #define PA_SINK_HARDWARE PA_SINK_HARDWARE
00712 #define PA_SINK_NETWORK PA_SINK_NETWORK
00713 #define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL
00714 #define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME
00715 #define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME
00716
00719 typedef enum pa_sink_state {
00720 PA_SINK_INVALID_STATE = -1,
00723 PA_SINK_RUNNING = 0,
00726 PA_SINK_IDLE = 1,
00729 PA_SINK_SUSPENDED = 2,
00733
00734
00735
00736
00737
00738
00739 PA_SINK_INIT = -2,
00742 PA_SINK_UNLINKED = -3
00746 } pa_sink_state_t;
00747
00749 static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
00750 return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
00751 }
00752
00754 #define PA_SINK_INVALID_STATE PA_SINK_INVALID_STATE
00755 #define PA_SINK_RUNNING PA_SINK_RUNNING
00756 #define PA_SINK_IDLE PA_SINK_IDLE
00757 #define PA_SINK_SUSPENDED PA_SINK_SUSPENDED
00758 #define PA_SINK_INIT PA_SINK_INIT
00759 #define PA_SINK_UNLINKED PA_SINK_UNLINKED
00760 #define PA_SINK_IS_OPENED PA_SINK_IS_OPENED
00761
00764 typedef enum pa_source_flags {
00765 PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
00768 PA_SOURCE_LATENCY = 0x0002U,
00771 PA_SOURCE_HARDWARE = 0x0004U,
00775 PA_SOURCE_NETWORK = 0x0008U,
00778 PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
00781 PA_SOURCE_DECIBEL_VOLUME = 0x0020U
00784 } pa_source_flags_t;
00785
00787 #define PA_SOURCE_HW_VOLUME_CTRL PA_SOURCE_HW_VOLUME_CTRL
00788 #define PA_SOURCE_LATENCY PA_SOURCE_LATENCY
00789 #define PA_SOURCE_HARDWARE PA_SOURCE_HARDWARE
00790 #define PA_SOURCE_NETWORK PA_SOURCE_NETWORK
00791 #define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL
00792 #define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME
00793
00796 typedef enum pa_source_state {
00797 PA_SOURCE_INVALID_STATE = -1,
00800 PA_SOURCE_RUNNING = 0,
00803 PA_SOURCE_IDLE = 1,
00806 PA_SOURCE_SUSPENDED = 2,
00810
00811
00812
00813
00814
00815
00816 PA_SOURCE_INIT = -2,
00819 PA_SOURCE_UNLINKED = -3
00823 } pa_source_state_t;
00824
00826 static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
00827 return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
00828 }
00829
00831 #define PA_SOURCE_INVALID_STATE PA_SOURCE_INVALID_STATE
00832 #define PA_SOURCE_RUNNING PA_SOURCE_RUNNING
00833 #define PA_SOURCE_IDLE PA_SOURCE_IDLE
00834 #define PA_SOURCE_SUSPENDED PA_SOURCE_SUSPENDED
00835 #define PA_SOURCE_INIT PA_SOURCE_INIT
00836 #define PA_SOURCE_UNLINKED PA_SOURCE_UNLINKED
00837 #define PA_SOURCE_IS_OPENED PA_SOURCE_IS_OPENED
00838
00841 typedef void (*pa_free_cb_t)(void *p);
00842
00846 #define PA_STREAM_EVENT_REQUEST_CORK "request-cork"
00847
00851 #define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork"
00852
00853 PA_C_DECL_END
00854
00855 #endif