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
00027
00028 #include <inttypes.h>
00029 #include <sys/time.h>
00030 #include <time.h>
00031
00032 #include <pulse/cdecl.h>
00033 #include <pulse/sample.h>
00034
00038 PA_C_DECL_BEGIN
00039
00041 typedef enum pa_context_state {
00042 PA_CONTEXT_UNCONNECTED,
00043 PA_CONTEXT_CONNECTING,
00044 PA_CONTEXT_AUTHORIZING,
00045 PA_CONTEXT_SETTING_NAME,
00046 PA_CONTEXT_READY,
00047 PA_CONTEXT_FAILED,
00048 PA_CONTEXT_TERMINATED
00049 } pa_context_state_t;
00050
00052 static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
00053 return
00054 x == PA_CONTEXT_CONNECTING ||
00055 x == PA_CONTEXT_AUTHORIZING ||
00056 x == PA_CONTEXT_SETTING_NAME ||
00057 x == PA_CONTEXT_READY;
00058 }
00059
00061 typedef enum pa_stream_state {
00062 PA_STREAM_UNCONNECTED,
00063 PA_STREAM_CREATING,
00064 PA_STREAM_READY,
00065 PA_STREAM_FAILED,
00066 PA_STREAM_TERMINATED
00067 } pa_stream_state_t;
00068
00070 static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
00071 return
00072 x == PA_STREAM_CREATING ||
00073 x == PA_STREAM_READY;
00074 }
00075
00077 typedef enum pa_operation_state {
00078 PA_OPERATION_RUNNING,
00079 PA_OPERATION_DONE,
00080 PA_OPERATION_CANCELED
00081 } pa_operation_state_t;
00082
00084 #define PA_INVALID_INDEX ((uint32_t) -1)
00085
00087 typedef enum pa_context_flags {
00088 PA_CONTEXT_NOAUTOSPAWN = 1
00089 } pa_context_flags_t;
00090
00092 typedef enum pa_stream_direction {
00093 PA_STREAM_NODIRECTION,
00094 PA_STREAM_PLAYBACK,
00095 PA_STREAM_RECORD,
00096 PA_STREAM_UPLOAD
00097 } pa_stream_direction_t;
00098
00100 typedef enum pa_stream_flags {
00101 PA_STREAM_START_CORKED = 1,
00102 PA_STREAM_INTERPOLATE_TIMING = 2,
00125 PA_STREAM_NOT_MONOTONOUS = 4,
00141 PA_STREAM_AUTO_TIMING_UPDATE = 8,
00151 PA_STREAM_NO_REMAP_CHANNELS = 16,
00160 PA_STREAM_NO_REMIX_CHANNELS = 32,
00170 PA_STREAM_FIX_FORMAT = 64,
00191 PA_STREAM_FIX_RATE = 128,
00199 PA_STREAM_FIX_CHANNELS = 256,
00209 PA_STREAM_DONT_MOVE = 512,
00220 PA_STREAM_VARIABLE_RATE = 1024,
00228 PA_STREAM_PEAK_DETECT = 2048,
00231 PA_STREAM_START_MUTED = 4096,
00234 PA_STREAM_ADJUST_LATENCY = 8192,
00239 } pa_stream_flags_t;
00240
00241
00243 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONOUS
00244
00246 typedef struct pa_buffer_attr {
00247 uint32_t maxlength;
00252 uint32_t tlength;
00265 uint32_t prebuf;
00272 uint32_t minreq;
00280 uint32_t fragsize;
00295 } pa_buffer_attr;
00296
00298 enum {
00299 PA_OK = 0,
00300 PA_ERR_ACCESS,
00301 PA_ERR_COMMAND,
00302 PA_ERR_INVALID,
00303 PA_ERR_EXIST,
00304 PA_ERR_NOENTITY,
00305 PA_ERR_CONNECTIONREFUSED,
00306 PA_ERR_PROTOCOL,
00307 PA_ERR_TIMEOUT,
00308 PA_ERR_AUTHKEY,
00309 PA_ERR_INTERNAL,
00310 PA_ERR_CONNECTIONTERMINATED,
00311 PA_ERR_KILLED,
00312 PA_ERR_INVALIDSERVER,
00313 PA_ERR_MODINITFAILED,
00314 PA_ERR_BADSTATE,
00315 PA_ERR_NODATA,
00316 PA_ERR_VERSION,
00317 PA_ERR_TOOLARGE,
00318 PA_ERR_NOTSUPPORTED,
00319 PA_ERR_UNKNOWN,
00320 PA_ERR_MAX
00321 };
00322
00324 typedef enum pa_subscription_mask {
00325 PA_SUBSCRIPTION_MASK_NULL = 0,
00326 PA_SUBSCRIPTION_MASK_SINK = 1,
00327 PA_SUBSCRIPTION_MASK_SOURCE = 2,
00328 PA_SUBSCRIPTION_MASK_SINK_INPUT = 4,
00329 PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 8,
00330 PA_SUBSCRIPTION_MASK_MODULE = 16,
00331 PA_SUBSCRIPTION_MASK_CLIENT = 32,
00332 PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 64,
00333 PA_SUBSCRIPTION_MASK_SERVER = 128,
00334 PA_SUBSCRIPTION_MASK_AUTOLOAD = 256,
00335 PA_SUBSCRIPTION_MASK_ALL = 511
00336 } pa_subscription_mask_t;
00337
00339 typedef enum pa_subscription_event_type {
00340 PA_SUBSCRIPTION_EVENT_SINK = 0,
00341 PA_SUBSCRIPTION_EVENT_SOURCE = 1,
00342 PA_SUBSCRIPTION_EVENT_SINK_INPUT = 2,
00343 PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 3,
00344 PA_SUBSCRIPTION_EVENT_MODULE = 4,
00345 PA_SUBSCRIPTION_EVENT_CLIENT = 5,
00346 PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 6,
00347 PA_SUBSCRIPTION_EVENT_SERVER = 7,
00348 PA_SUBSCRIPTION_EVENT_AUTOLOAD = 8,
00349 PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 15,
00351 PA_SUBSCRIPTION_EVENT_NEW = 0,
00352 PA_SUBSCRIPTION_EVENT_CHANGE = 16,
00353 PA_SUBSCRIPTION_EVENT_REMOVE = 32,
00354 PA_SUBSCRIPTION_EVENT_TYPE_MASK = 16+32
00355 } pa_subscription_event_type_t;
00356
00358 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00359
00378 typedef struct pa_timing_info {
00379 struct timeval timestamp;
00380 int synchronized_clocks;
00388 pa_usec_t sink_usec;
00389 pa_usec_t source_usec;
00390 pa_usec_t transport_usec;
00392 int playing;
00402 int write_index_corrupt;
00410 int64_t write_index;
00417 int read_index_corrupt;
00423 int64_t read_index;
00431 pa_usec_t configured_sink_usec;
00433 pa_usec_t configured_source_usec;
00436 int64_t since_underrun;
00443 } pa_timing_info;
00444
00452 typedef struct pa_spawn_api {
00453 void (*prefork)(void);
00454 void (*postfork)(void);
00455 void (*atfork)(void);
00462 } pa_spawn_api;
00463
00465 typedef enum pa_seek_mode {
00466 PA_SEEK_RELATIVE = 0,
00467 PA_SEEK_ABSOLUTE = 1,
00468 PA_SEEK_RELATIVE_ON_READ = 2,
00469 PA_SEEK_RELATIVE_END = 3
00470 } pa_seek_mode_t;
00471
00473 typedef enum pa_sink_flags {
00474 PA_SINK_HW_VOLUME_CTRL = 1,
00475 PA_SINK_LATENCY = 2,
00476 PA_SINK_HARDWARE = 4,
00477 PA_SINK_NETWORK = 8,
00478 PA_SINK_HW_MUTE_CTRL = 16,
00479 PA_SINK_DECIBEL_VOLUME = 32
00480 } pa_sink_flags_t;
00481
00483 typedef enum pa_source_flags {
00484 PA_SOURCE_HW_VOLUME_CTRL = 1,
00485 PA_SOURCE_LATENCY = 2,
00486 PA_SOURCE_HARDWARE = 4,
00487 PA_SOURCE_NETWORK = 8,
00488 PA_SOURCE_HW_MUTE_CTRL = 16,
00489 PA_SOURCE_DECIBEL_VOLUME = 32
00490 } pa_source_flags_t;
00491
00493 typedef void (*pa_free_cb_t)(void *p);
00494
00495 PA_C_DECL_END
00496
00497 #endif