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
00036 PA_C_DECL_BEGIN
00037
00039 typedef enum pa_context_state {
00040 PA_CONTEXT_UNCONNECTED,
00041 PA_CONTEXT_CONNECTING,
00042 PA_CONTEXT_AUTHORIZING,
00043 PA_CONTEXT_SETTING_NAME,
00044 PA_CONTEXT_READY,
00045 PA_CONTEXT_FAILED,
00046 PA_CONTEXT_TERMINATED
00047 } pa_context_state_t;
00048
00050 static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
00051 return
00052 x == PA_CONTEXT_CONNECTING ||
00053 x == PA_CONTEXT_AUTHORIZING ||
00054 x == PA_CONTEXT_SETTING_NAME ||
00055 x == PA_CONTEXT_READY;
00056 }
00057
00059 typedef enum pa_stream_state {
00060 PA_STREAM_UNCONNECTED,
00061 PA_STREAM_CREATING,
00062 PA_STREAM_READY,
00063 PA_STREAM_FAILED,
00064 PA_STREAM_TERMINATED
00065 } pa_stream_state_t;
00066
00068 static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
00069 return
00070 x == PA_STREAM_CREATING ||
00071 x == PA_STREAM_READY;
00072 }
00073
00075 typedef enum pa_operation_state {
00076 PA_OPERATION_RUNNING,
00077 PA_OPERATION_DONE,
00078 PA_OPERATION_CANCELED
00079 } pa_operation_state_t;
00080
00082 #define PA_INVALID_INDEX ((uint32_t) -1)
00083
00085 typedef enum pa_context_flags {
00086 PA_CONTEXT_NOAUTOSPAWN = 1
00087 } pa_context_flags_t;
00088
00090 typedef enum pa_stream_direction {
00091 PA_STREAM_NODIRECTION,
00092 PA_STREAM_PLAYBACK,
00093 PA_STREAM_RECORD,
00094 PA_STREAM_UPLOAD
00095 } pa_stream_direction_t;
00096
00098 typedef enum pa_stream_flags {
00099 PA_STREAM_START_CORKED = 1,
00100 PA_STREAM_INTERPOLATE_TIMING = 2,
00123 PA_STREAM_NOT_MONOTONIC = 4,
00144 PA_STREAM_AUTO_TIMING_UPDATE = 8,
00154 PA_STREAM_NO_REMAP_CHANNELS = 16,
00163 PA_STREAM_NO_REMIX_CHANNELS = 32,
00173 PA_STREAM_FIX_FORMAT = 64,
00194 PA_STREAM_FIX_RATE = 128,
00202 PA_STREAM_FIX_CHANNELS = 256,
00212 PA_STREAM_DONT_MOVE = 512,
00223 PA_STREAM_VARIABLE_RATE = 1024,
00231 PA_STREAM_PEAK_DETECT = 2048,
00234 PA_STREAM_START_MUTED = 4096,
00237 PA_STREAM_ADJUST_LATENCY = 8192,
00242 } pa_stream_flags_t;
00243
00244
00246 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC
00247
00249 typedef struct pa_buffer_attr {
00250 uint32_t maxlength;
00255 uint32_t tlength;
00268 uint32_t prebuf;
00275 uint32_t minreq;
00283 uint32_t fragsize;
00298 } pa_buffer_attr;
00299
00301 enum {
00302 PA_OK = 0,
00303 PA_ERR_ACCESS,
00304 PA_ERR_COMMAND,
00305 PA_ERR_INVALID,
00306 PA_ERR_EXIST,
00307 PA_ERR_NOENTITY,
00308 PA_ERR_CONNECTIONREFUSED,
00309 PA_ERR_PROTOCOL,
00310 PA_ERR_TIMEOUT,
00311 PA_ERR_AUTHKEY,
00312 PA_ERR_INTERNAL,
00313 PA_ERR_CONNECTIONTERMINATED,
00314 PA_ERR_KILLED,
00315 PA_ERR_INVALIDSERVER,
00316 PA_ERR_MODINITFAILED,
00317 PA_ERR_BADSTATE,
00318 PA_ERR_NODATA,
00319 PA_ERR_VERSION,
00320 PA_ERR_TOOLARGE,
00321 PA_ERR_NOTSUPPORTED,
00322 PA_ERR_UNKNOWN,
00323 PA_ERR_MAX
00324 };
00325
00327 typedef enum pa_subscription_mask {
00328 PA_SUBSCRIPTION_MASK_NULL = 0,
00329 PA_SUBSCRIPTION_MASK_SINK = 1,
00330 PA_SUBSCRIPTION_MASK_SOURCE = 2,
00331 PA_SUBSCRIPTION_MASK_SINK_INPUT = 4,
00332 PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 8,
00333 PA_SUBSCRIPTION_MASK_MODULE = 16,
00334 PA_SUBSCRIPTION_MASK_CLIENT = 32,
00335 PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 64,
00336 PA_SUBSCRIPTION_MASK_SERVER = 128,
00337 PA_SUBSCRIPTION_MASK_AUTOLOAD = 256,
00338 PA_SUBSCRIPTION_MASK_ALL = 511
00339 } pa_subscription_mask_t;
00340
00342 typedef enum pa_subscription_event_type {
00343 PA_SUBSCRIPTION_EVENT_SINK = 0,
00344 PA_SUBSCRIPTION_EVENT_SOURCE = 1,
00345 PA_SUBSCRIPTION_EVENT_SINK_INPUT = 2,
00346 PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 3,
00347 PA_SUBSCRIPTION_EVENT_MODULE = 4,
00348 PA_SUBSCRIPTION_EVENT_CLIENT = 5,
00349 PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 6,
00350 PA_SUBSCRIPTION_EVENT_SERVER = 7,
00351 PA_SUBSCRIPTION_EVENT_AUTOLOAD = 8,
00352 PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 15,
00354 PA_SUBSCRIPTION_EVENT_NEW = 0,
00355 PA_SUBSCRIPTION_EVENT_CHANGE = 16,
00356 PA_SUBSCRIPTION_EVENT_REMOVE = 32,
00357 PA_SUBSCRIPTION_EVENT_TYPE_MASK = 16+32
00358 } pa_subscription_event_type_t;
00359
00361 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00362
00381 typedef struct pa_timing_info {
00382 struct timeval timestamp;
00383 int synchronized_clocks;
00391 pa_usec_t sink_usec;
00392 pa_usec_t source_usec;
00393 pa_usec_t transport_usec;
00395 int playing;
00405 int write_index_corrupt;
00413 int64_t write_index;
00420 int read_index_corrupt;
00426 int64_t read_index;
00434 pa_usec_t configured_sink_usec;
00436 pa_usec_t configured_source_usec;
00439 int64_t since_underrun;
00446 } pa_timing_info;
00447
00455 typedef struct pa_spawn_api {
00456 void (*prefork)(void);
00457 void (*postfork)(void);
00458 void (*atfork)(void);
00465 } pa_spawn_api;
00466
00468 typedef enum pa_seek_mode {
00469 PA_SEEK_RELATIVE = 0,
00470 PA_SEEK_ABSOLUTE = 1,
00471 PA_SEEK_RELATIVE_ON_READ = 2,
00472 PA_SEEK_RELATIVE_END = 3
00473 } pa_seek_mode_t;
00474
00476 typedef enum pa_sink_flags {
00477 PA_SINK_HW_VOLUME_CTRL = 1,
00478 PA_SINK_LATENCY = 2,
00479 PA_SINK_HARDWARE = 4,
00480 PA_SINK_NETWORK = 8,
00481 PA_SINK_HW_MUTE_CTRL = 16,
00482 PA_SINK_DECIBEL_VOLUME = 32
00483 } pa_sink_flags_t;
00484
00486 typedef enum pa_source_flags {
00487 PA_SOURCE_HW_VOLUME_CTRL = 1,
00488 PA_SOURCE_LATENCY = 2,
00489 PA_SOURCE_HARDWARE = 4,
00490 PA_SOURCE_NETWORK = 8,
00491 PA_SOURCE_HW_MUTE_CTRL = 16,
00492 PA_SOURCE_DECIBEL_VOLUME = 32
00493 } pa_source_flags_t;
00494
00496 typedef void (*pa_free_cb_t)(void *p);
00497
00498 PA_C_DECL_END
00499
00500 #endif