PulseAudio  9.0
def.h
Go to the documentation of this file.
00001 #ifndef foodefhfoo
00002 #define foodefhfoo
00003 
00004 /***
00005   This file is part of PulseAudio.
00006 
00007   Copyright 2004-2006 Lennart Poettering
00008   Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
00009 
00010   PulseAudio is free software; you can redistribute it and/or modify
00011   it under the terms of the GNU Lesser General Public License as
00012   published by the Free Software Foundation; either version 2.1 of the
00013   License, or (at your option) any later version.
00014 
00015   PulseAudio is distributed in the hope that it will be useful, but
00016   WITHOUT ANY WARRANTY; without even the implied warranty of
00017   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00018   Lesser General Public License for more details.
00019 
00020   You should have received a copy of the GNU Lesser General Public
00021   License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
00022 ***/
00023 
00024 #include <inttypes.h>
00025 #include <sys/time.h>
00026 
00027 #include <pulse/cdecl.h>
00028 #include <pulse/sample.h>
00029 #include <pulse/version.h>
00030 
00034 PA_C_DECL_BEGIN
00035 
00037 typedef enum pa_context_state {
00038     PA_CONTEXT_UNCONNECTED,    
00039     PA_CONTEXT_CONNECTING,     
00040     PA_CONTEXT_AUTHORIZING,    
00041     PA_CONTEXT_SETTING_NAME,   
00042     PA_CONTEXT_READY,          
00043     PA_CONTEXT_FAILED,         
00044     PA_CONTEXT_TERMINATED      
00045 } pa_context_state_t;
00046 
00048 static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
00049     return
00050         x == PA_CONTEXT_CONNECTING ||
00051         x == PA_CONTEXT_AUTHORIZING ||
00052         x == PA_CONTEXT_SETTING_NAME ||
00053         x == PA_CONTEXT_READY;
00054 }
00055 
00057 #define PA_CONTEXT_UNCONNECTED PA_CONTEXT_UNCONNECTED
00058 #define PA_CONTEXT_CONNECTING PA_CONTEXT_CONNECTING
00059 #define PA_CONTEXT_AUTHORIZING PA_CONTEXT_AUTHORIZING
00060 #define PA_CONTEXT_SETTING_NAME PA_CONTEXT_SETTING_NAME
00061 #define PA_CONTEXT_READY PA_CONTEXT_READY
00062 #define PA_CONTEXT_FAILED PA_CONTEXT_FAILED
00063 #define PA_CONTEXT_TERMINATED PA_CONTEXT_TERMINATED
00064 #define PA_CONTEXT_IS_GOOD PA_CONTEXT_IS_GOOD
00065 
00068 typedef enum pa_stream_state {
00069     PA_STREAM_UNCONNECTED,  
00070     PA_STREAM_CREATING,     
00071     PA_STREAM_READY,        
00072     PA_STREAM_FAILED,       
00073     PA_STREAM_TERMINATED    
00074 } pa_stream_state_t;
00075 
00077 static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
00078     return
00079         x == PA_STREAM_CREATING ||
00080         x == PA_STREAM_READY;
00081 }
00082 
00084 #define PA_STREAM_UNCONNECTED PA_STREAM_UNCONNECTED
00085 #define PA_STREAM_CREATING PA_STREAM_CREATING
00086 #define PA_STREAM_READY PA_STREAM_READY
00087 #define PA_STREAM_FAILED PA_STREAM_FAILED
00088 #define PA_STREAM_TERMINATED PA_STREAM_TERMINATED
00089 #define PA_STREAM_IS_GOOD PA_STREAM_IS_GOOD
00090 
00093 typedef enum pa_operation_state {
00094     PA_OPERATION_RUNNING,
00096     PA_OPERATION_DONE,
00098     PA_OPERATION_CANCELLED
00102 } pa_operation_state_t;
00103 
00105 #define PA_OPERATION_RUNNING PA_OPERATION_RUNNING
00106 #define PA_OPERATION_DONE PA_OPERATION_DONE
00107 #define PA_OPERATION_CANCELED PA_OPERATION_CANCELLED
00108 #define PA_OPERATION_CANCELLED PA_OPERATION_CANCELLED
00109 
00112 #define PA_INVALID_INDEX ((uint32_t) -1)
00113 
00115 typedef enum pa_context_flags {
00116     PA_CONTEXT_NOFLAGS = 0x0000U,
00118     PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
00120     PA_CONTEXT_NOFAIL = 0x0002U
00122 } pa_context_flags_t;
00123 
00125 /* Allow clients to check with #ifdef for those flags */
00126 #define PA_CONTEXT_NOAUTOSPAWN PA_CONTEXT_NOAUTOSPAWN
00127 #define PA_CONTEXT_NOFAIL PA_CONTEXT_NOFAIL
00128 
00134 typedef enum pa_direction {
00135     PA_DIRECTION_OUTPUT = 0x0001U,  
00136     PA_DIRECTION_INPUT = 0x0002U    
00137 } pa_direction_t;
00138 
00140 #define PA_DIRECTION_OUTPUT PA_DIRECTION_OUTPUT
00141 #define PA_DIRECTION_INPUT PA_DIRECTION_INPUT
00142 
00145 typedef enum pa_device_type {
00146     PA_DEVICE_TYPE_SINK,     
00147     PA_DEVICE_TYPE_SOURCE    
00148 } pa_device_type_t;
00149 
00151 #define PA_DEVICE_TYPE_SINK PA_DEVICE_TYPE_SINK
00152 #define PA_DEVICE_TYPE_SOURCE PA_DEVICE_TYPE_SOURCE
00153 
00156 typedef enum pa_stream_direction {
00157     PA_STREAM_NODIRECTION,   
00158     PA_STREAM_PLAYBACK,      
00159     PA_STREAM_RECORD,        
00160     PA_STREAM_UPLOAD         
00161 } pa_stream_direction_t;
00162 
00164 #define PA_STREAM_NODIRECTION PA_STREAM_NODIRECTION
00165 #define PA_STREAM_PLAYBACK PA_STREAM_PLAYBACK
00166 #define PA_STREAM_RECORD PA_STREAM_RECORD
00167 #define PA_STREAM_UPLOAD PA_STREAM_UPLOAD
00168 
00171 typedef enum pa_stream_flags {
00172 
00173     PA_STREAM_NOFLAGS = 0x0000U,
00176     PA_STREAM_START_CORKED = 0x0001U,
00180     PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
00192     PA_STREAM_NOT_MONOTONIC = 0x0004U,
00204     PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
00211     PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
00217     PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
00223     PA_STREAM_FIX_FORMAT = 0x0040U,
00244     PA_STREAM_FIX_RATE = 0x0080U,
00259     PA_STREAM_FIX_CHANNELS = 0x0100,
00278     PA_STREAM_DONT_MOVE = 0x0200U,
00287     PA_STREAM_VARIABLE_RATE = 0x0400U,
00293     PA_STREAM_PEAK_DETECT = 0x0800U,
00296     PA_STREAM_START_MUTED = 0x1000U,
00302     PA_STREAM_ADJUST_LATENCY = 0x2000U,
00309     PA_STREAM_EARLY_REQUESTS = 0x4000U,
00326     PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
00331     PA_STREAM_START_UNMUTED = 0x10000U,
00337     PA_STREAM_FAIL_ON_SUSPEND = 0x20000U,
00343     PA_STREAM_RELATIVE_VOLUME = 0x40000U,
00350     PA_STREAM_PASSTHROUGH = 0x80000U
00355 } pa_stream_flags_t;
00356 
00359 /* English is an evil language */
00360 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC
00361 
00362 /* Allow clients to check with #ifdef for those flags */
00363 #define PA_STREAM_START_CORKED PA_STREAM_START_CORKED
00364 #define PA_STREAM_INTERPOLATE_TIMING PA_STREAM_INTERPOLATE_TIMING
00365 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONIC
00366 #define PA_STREAM_AUTO_TIMING_UPDATE PA_STREAM_AUTO_TIMING_UPDATE
00367 #define PA_STREAM_NO_REMAP_CHANNELS PA_STREAM_NO_REMAP_CHANNELS
00368 #define PA_STREAM_NO_REMIX_CHANNELS PA_STREAM_NO_REMIX_CHANNELS
00369 #define PA_STREAM_FIX_FORMAT PA_STREAM_FIX_FORMAT
00370 #define PA_STREAM_FIX_RATE PA_STREAM_FIX_RATE
00371 #define PA_STREAM_FIX_CHANNELS PA_STREAM_FIX_CHANNELS
00372 #define PA_STREAM_DONT_MOVE PA_STREAM_DONT_MOVE
00373 #define PA_STREAM_VARIABLE_RATE PA_STREAM_VARIABLE_RATE
00374 #define PA_STREAM_PEAK_DETECT PA_STREAM_PEAK_DETECT
00375 #define PA_STREAM_START_MUTED PA_STREAM_START_MUTED
00376 #define PA_STREAM_ADJUST_LATENCY PA_STREAM_ADJUST_LATENCY
00377 #define PA_STREAM_EARLY_REQUESTS PA_STREAM_EARLY_REQUESTS
00378 #define PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND
00379 #define PA_STREAM_START_UNMUTED PA_STREAM_START_UNMUTED
00380 #define PA_STREAM_FAIL_ON_SUSPEND PA_STREAM_FAIL_ON_SUSPEND
00381 #define PA_STREAM_RELATIVE_VOLUME PA_STREAM_RELATIVE_VOLUME
00382 #define PA_STREAM_PASSTHROUGH PA_STREAM_PASSTHROUGH
00383 
00387 typedef struct pa_buffer_attr {
00388     uint32_t maxlength;
00399     uint32_t tlength;
00417     uint32_t prebuf;
00428     uint32_t minreq;
00438     uint32_t fragsize;
00452 } pa_buffer_attr;
00453 
00455 typedef enum pa_error_code {
00456     PA_OK = 0,                     
00457     PA_ERR_ACCESS,                 
00458     PA_ERR_COMMAND,                
00459     PA_ERR_INVALID,                
00460     PA_ERR_EXIST,                  
00461     PA_ERR_NOENTITY,               
00462     PA_ERR_CONNECTIONREFUSED,      
00463     PA_ERR_PROTOCOL,               
00464     PA_ERR_TIMEOUT,                
00465     PA_ERR_AUTHKEY,                
00466     PA_ERR_INTERNAL,               
00467     PA_ERR_CONNECTIONTERMINATED,   
00468     PA_ERR_KILLED,                 
00469     PA_ERR_INVALIDSERVER,          
00470     PA_ERR_MODINITFAILED,          
00471     PA_ERR_BADSTATE,               
00472     PA_ERR_NODATA,                 
00473     PA_ERR_VERSION,                
00474     PA_ERR_TOOLARGE,               
00475     PA_ERR_NOTSUPPORTED,           
00476     PA_ERR_UNKNOWN,                
00477     PA_ERR_NOEXTENSION,            
00478     PA_ERR_OBSOLETE,               
00479     PA_ERR_NOTIMPLEMENTED,         
00480     PA_ERR_FORKED,                 
00481     PA_ERR_IO,                     
00482     PA_ERR_BUSY,                   
00483     PA_ERR_MAX                     
00484 } pa_error_code_t;
00485 
00487 #define PA_OK PA_OK
00488 #define PA_ERR_ACCESS PA_ERR_ACCESS
00489 #define PA_ERR_COMMAND PA_ERR_COMMAND
00490 #define PA_ERR_INVALID PA_ERR_INVALID
00491 #define PA_ERR_EXIST PA_ERR_EXIST
00492 #define PA_ERR_NOENTITY PA_ERR_NOENTITY
00493 #define PA_ERR_CONNECTIONREFUSED PA_ERR_CONNECTIONREFUSED
00494 #define PA_ERR_PROTOCOL PA_ERR_PROTOCOL
00495 #define PA_ERR_TIMEOUT PA_ERR_TIMEOUT
00496 #define PA_ERR_AUTHKEY PA_ERR_AUTHKEY
00497 #define PA_ERR_INTERNAL PA_ERR_INTERNAL
00498 #define PA_ERR_CONNECTIONTERMINATED PA_ERR_CONNECTIONTERMINATED
00499 #define PA_ERR_KILLED PA_ERR_KILLED
00500 #define PA_ERR_INVALIDSERVER PA_ERR_INVALIDSERVER
00501 #define PA_ERR_MODINITFAILED PA_ERR_MODINITFAILED
00502 #define PA_ERR_BADSTATE PA_ERR_BADSTATE
00503 #define PA_ERR_NODATA PA_ERR_NODATA
00504 #define PA_ERR_VERSION PA_ERR_VERSION
00505 #define PA_ERR_TOOLARGE PA_ERR_TOOLARGE
00506 #define PA_ERR_NOTSUPPORTED PA_ERR_NOTSUPPORTED
00507 #define PA_ERR_UNKNOWN PA_ERR_UNKNOWN
00508 #define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION
00509 #define PA_ERR_OBSOLETE PA_ERR_OBSOLETE
00510 #define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED
00511 #define PA_ERR_FORKED PA_ERR_FORKED
00512 #define PA_ERR_MAX PA_ERR_MAX
00513 
00516 typedef enum pa_subscription_mask {
00517     PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
00520     PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
00523     PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
00526     PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
00529     PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
00532     PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
00535     PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
00538     PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
00541     PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
00545     PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
00549     PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
00552     PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
00554 } pa_subscription_mask_t;
00555 
00557 typedef enum pa_subscription_event_type {
00558     PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
00561     PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
00564     PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
00567     PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
00570     PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
00573     PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
00576     PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
00579     PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
00583     PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
00587     PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
00590     PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
00593     PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
00596     PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
00599     PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
00602     PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
00605 } pa_subscription_event_type_t;
00606 
00608 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00609 
00611 #define PA_SUBSCRIPTION_MASK_NULL PA_SUBSCRIPTION_MASK_NULL
00612 #define PA_SUBSCRIPTION_MASK_SINK PA_SUBSCRIPTION_MASK_SINK
00613 #define PA_SUBSCRIPTION_MASK_SOURCE PA_SUBSCRIPTION_MASK_SOURCE
00614 #define PA_SUBSCRIPTION_MASK_SINK_INPUT PA_SUBSCRIPTION_MASK_SINK_INPUT
00615 #define PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT
00616 #define PA_SUBSCRIPTION_MASK_MODULE PA_SUBSCRIPTION_MASK_MODULE
00617 #define PA_SUBSCRIPTION_MASK_CLIENT PA_SUBSCRIPTION_MASK_CLIENT
00618 #define PA_SUBSCRIPTION_MASK_SAMPLE_CACHE PA_SUBSCRIPTION_MASK_SAMPLE_CACHE
00619 #define PA_SUBSCRIPTION_MASK_SERVER PA_SUBSCRIPTION_MASK_SERVER
00620 #define PA_SUBSCRIPTION_MASK_AUTOLOAD PA_SUBSCRIPTION_MASK_AUTOLOAD
00621 #define PA_SUBSCRIPTION_MASK_CARD PA_SUBSCRIPTION_MASK_CARD
00622 #define PA_SUBSCRIPTION_MASK_ALL PA_SUBSCRIPTION_MASK_ALL
00623 #define PA_SUBSCRIPTION_EVENT_SINK PA_SUBSCRIPTION_EVENT_SINK
00624 #define PA_SUBSCRIPTION_EVENT_SOURCE PA_SUBSCRIPTION_EVENT_SOURCE
00625 #define PA_SUBSCRIPTION_EVENT_SINK_INPUT PA_SUBSCRIPTION_EVENT_SINK_INPUT
00626 #define PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT
00627 #define PA_SUBSCRIPTION_EVENT_MODULE PA_SUBSCRIPTION_EVENT_MODULE
00628 #define PA_SUBSCRIPTION_EVENT_CLIENT PA_SUBSCRIPTION_EVENT_CLIENT
00629 #define PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE
00630 #define PA_SUBSCRIPTION_EVENT_SERVER PA_SUBSCRIPTION_EVENT_SERVER
00631 #define PA_SUBSCRIPTION_EVENT_AUTOLOAD PA_SUBSCRIPTION_EVENT_AUTOLOAD
00632 #define PA_SUBSCRIPTION_EVENT_CARD PA_SUBSCRIPTION_EVENT_CARD
00633 #define PA_SUBSCRIPTION_EVENT_FACILITY_MASK PA_SUBSCRIPTION_EVENT_FACILITY_MASK
00634 #define PA_SUBSCRIPTION_EVENT_NEW PA_SUBSCRIPTION_EVENT_NEW
00635 #define PA_SUBSCRIPTION_EVENT_CHANGE PA_SUBSCRIPTION_EVENT_CHANGE
00636 #define PA_SUBSCRIPTION_EVENT_REMOVE PA_SUBSCRIPTION_EVENT_REMOVE
00637 #define PA_SUBSCRIPTION_EVENT_TYPE_MASK PA_SUBSCRIPTION_EVENT_TYPE_MASK
00638 
00658 typedef struct pa_timing_info {
00659     struct timeval timestamp;
00662     int synchronized_clocks;
00669     pa_usec_t sink_usec;
00674     pa_usec_t source_usec;
00678     pa_usec_t transport_usec;
00682     int playing;
00689     int write_index_corrupt;
00696     int64_t write_index;
00702     int read_index_corrupt;
00707     int64_t read_index;
00713     pa_usec_t configured_sink_usec;
00716     pa_usec_t configured_source_usec;
00719     int64_t since_underrun;
00725 } pa_timing_info;
00726 
00734 typedef struct pa_spawn_api {
00735     void (*prefork)(void);
00739     void (*postfork)(void);
00743     void (*atfork)(void);
00749 } pa_spawn_api;
00750 
00752 typedef enum pa_seek_mode {
00753     PA_SEEK_RELATIVE = 0,
00756     PA_SEEK_ABSOLUTE = 1,
00759     PA_SEEK_RELATIVE_ON_READ = 2,
00762     PA_SEEK_RELATIVE_END = 3
00764 } pa_seek_mode_t;
00765 
00767 #define PA_SEEK_RELATIVE PA_SEEK_RELATIVE
00768 #define PA_SEEK_ABSOLUTE PA_SEEK_ABSOLUTE
00769 #define PA_SEEK_RELATIVE_ON_READ PA_SEEK_RELATIVE_ON_READ
00770 #define PA_SEEK_RELATIVE_END PA_SEEK_RELATIVE_END
00771 
00774 typedef enum pa_sink_flags {
00775     PA_SINK_NOFLAGS = 0x0000U,
00778     PA_SINK_HW_VOLUME_CTRL = 0x0001U,
00782     PA_SINK_LATENCY = 0x0002U,
00785     PA_SINK_HARDWARE = 0x0004U,
00789     PA_SINK_NETWORK = 0x0008U,
00792     PA_SINK_HW_MUTE_CTRL = 0x0010U,
00796     PA_SINK_DECIBEL_VOLUME = 0x0020U,
00801     PA_SINK_FLAT_VOLUME = 0x0040U,
00805     PA_SINK_DYNAMIC_LATENCY = 0x0080U,
00809     PA_SINK_SET_FORMATS = 0x0100U,
00814 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00815 
00816     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00817      * The server will filter out these flags anyway, so you should never see
00818      * these flags in sinks. */
00819 
00820     PA_SINK_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00824     PA_SINK_DEFERRED_VOLUME = 0x2000000U,
00827 #endif
00828 
00829 } pa_sink_flags_t;
00830 
00832 #define PA_SINK_HW_VOLUME_CTRL PA_SINK_HW_VOLUME_CTRL
00833 #define PA_SINK_LATENCY PA_SINK_LATENCY
00834 #define PA_SINK_HARDWARE PA_SINK_HARDWARE
00835 #define PA_SINK_NETWORK PA_SINK_NETWORK
00836 #define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL
00837 #define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME
00838 #define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME
00839 #define PA_SINK_DYNAMIC_LATENCY PA_SINK_DYNAMIC_LATENCY
00840 #define PA_SINK_SET_FORMATS PA_SINK_SET_FORMATS
00841 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00842 #define PA_SINK_CLIENT_FLAGS_MASK 0xFFFFFF
00843 #endif
00844 
00848 typedef enum pa_sink_state { /* enum serialized in u8 */
00849     PA_SINK_INVALID_STATE = -1,
00852     PA_SINK_RUNNING = 0,
00855     PA_SINK_IDLE = 1,
00858     PA_SINK_SUSPENDED = 2,
00862     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00863      * SIDE! These values are *not* considered part of the official PA
00864      * API/ABI. If you use them your application might break when PA
00865      * is upgraded. Also, please note that these values are not useful
00866      * on the client side anyway. */
00867 
00868     PA_SINK_INIT = -2,
00871     PA_SINK_UNLINKED = -3
00875 } pa_sink_state_t;
00876 
00878 static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
00879     return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
00880 }
00881 
00883 static inline int PA_SINK_IS_RUNNING(pa_sink_state_t x) {
00884     return x == PA_SINK_RUNNING;
00885 }
00886 
00888 #define PA_SINK_INVALID_STATE PA_SINK_INVALID_STATE
00889 #define PA_SINK_RUNNING PA_SINK_RUNNING
00890 #define PA_SINK_IDLE PA_SINK_IDLE
00891 #define PA_SINK_SUSPENDED PA_SINK_SUSPENDED
00892 #define PA_SINK_INIT PA_SINK_INIT
00893 #define PA_SINK_UNLINKED PA_SINK_UNLINKED
00894 #define PA_SINK_IS_OPENED PA_SINK_IS_OPENED
00895 
00898 typedef enum pa_source_flags {
00899     PA_SOURCE_NOFLAGS = 0x0000U,
00902     PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
00906     PA_SOURCE_LATENCY = 0x0002U,
00909     PA_SOURCE_HARDWARE = 0x0004U,
00913     PA_SOURCE_NETWORK = 0x0008U,
00916     PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
00920     PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
00925     PA_SOURCE_DYNAMIC_LATENCY = 0x0040U,
00929     PA_SOURCE_FLAT_VOLUME = 0x0080U,
00933 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00934 
00935     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00936      * The server will filter out these flags anyway, so you should never see
00937      * these flags in sources. */
00938 
00939     PA_SOURCE_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00943     PA_SOURCE_DEFERRED_VOLUME = 0x2000000U,
00945 #endif
00946 } pa_source_flags_t;
00947 
00949 #define PA_SOURCE_HW_VOLUME_CTRL PA_SOURCE_HW_VOLUME_CTRL
00950 #define PA_SOURCE_LATENCY PA_SOURCE_LATENCY
00951 #define PA_SOURCE_HARDWARE PA_SOURCE_HARDWARE
00952 #define PA_SOURCE_NETWORK PA_SOURCE_NETWORK
00953 #define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL
00954 #define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME
00955 #define PA_SOURCE_DYNAMIC_LATENCY PA_SOURCE_DYNAMIC_LATENCY
00956 #define PA_SOURCE_FLAT_VOLUME PA_SOURCE_FLAT_VOLUME
00957 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00958 #define PA_SOURCE_CLIENT_FLAGS_MASK 0xFFFFFF
00959 #endif
00960 
00964 typedef enum pa_source_state {
00965     PA_SOURCE_INVALID_STATE = -1,
00968     PA_SOURCE_RUNNING = 0,
00971     PA_SOURCE_IDLE = 1,
00974     PA_SOURCE_SUSPENDED = 2,
00978     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00979      * SIDE! These values are *not* considered part of the official PA
00980      * API/ABI. If you use them your application might break when PA
00981      * is upgraded. Also, please note that these values are not useful
00982      * on the client side anyway. */
00983 
00984     PA_SOURCE_INIT = -2,
00987     PA_SOURCE_UNLINKED = -3
00991 } pa_source_state_t;
00992 
00994 static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
00995     return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
00996 }
00997 
00999 static inline int PA_SOURCE_IS_RUNNING(pa_source_state_t x) {
01000     return x == PA_SOURCE_RUNNING;
01001 }
01002 
01004 #define PA_SOURCE_INVALID_STATE PA_SOURCE_INVALID_STATE
01005 #define PA_SOURCE_RUNNING PA_SOURCE_RUNNING
01006 #define PA_SOURCE_IDLE PA_SOURCE_IDLE
01007 #define PA_SOURCE_SUSPENDED PA_SOURCE_SUSPENDED
01008 #define PA_SOURCE_INIT PA_SOURCE_INIT
01009 #define PA_SOURCE_UNLINKED PA_SOURCE_UNLINKED
01010 #define PA_SOURCE_IS_OPENED PA_SOURCE_IS_OPENED
01011 
01014 typedef void (*pa_free_cb_t)(void *p);
01015 
01019 #define PA_STREAM_EVENT_REQUEST_CORK "request-cork"
01020 
01024 #define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork"
01025 
01031 #define PA_STREAM_EVENT_FORMAT_LOST "format-lost"
01032 
01033 #ifndef __INCLUDED_FROM_PULSE_AUDIO
01034 
01036 typedef enum pa_port_available {
01037     PA_PORT_AVAILABLE_UNKNOWN = 0, 
01038     PA_PORT_AVAILABLE_NO = 1,      
01039     PA_PORT_AVAILABLE_YES = 2,     
01040 } pa_port_available_t;
01041 
01043 #define PA_PORT_AVAILABLE_UNKNOWN PA_PORT_AVAILABLE_UNKNOWN
01044 #define PA_PORT_AVAILABLE_NO PA_PORT_AVAILABLE_NO
01045 #define PA_PORT_AVAILABLE_YES PA_PORT_AVAILABLE_YES
01046 
01048 #endif
01049 
01050 PA_C_DECL_END
01051 
01052 #endif