PulseAudio  2.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, write to the Free Software
00022   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023   USA.
00024 ***/
00025 
00026 #include <inttypes.h>
00027 #include <sys/time.h>
00028 
00029 #include <pulse/cdecl.h>
00030 #include <pulse/sample.h>
00031 #include <pulse/version.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 #define PA_CONTEXT_UNCONNECTED PA_CONTEXT_UNCONNECTED
00060 #define PA_CONTEXT_CONNECTING PA_CONTEXT_CONNECTING
00061 #define PA_CONTEXT_AUTHORIZING PA_CONTEXT_AUTHORIZING
00062 #define PA_CONTEXT_SETTING_NAME PA_CONTEXT_SETTING_NAME
00063 #define PA_CONTEXT_READY PA_CONTEXT_READY
00064 #define PA_CONTEXT_FAILED PA_CONTEXT_FAILED
00065 #define PA_CONTEXT_TERMINATED PA_CONTEXT_TERMINATED
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_CANCELLED     
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_CANCELLED
00105 #define PA_OPERATION_CANCELLED PA_OPERATION_CANCELLED
00106 
00109 #define PA_INVALID_INDEX ((uint32_t) -1)
00110 
00112 typedef enum pa_context_flags {
00113     PA_CONTEXT_NOFLAGS = 0x0000U,
00115     PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
00117     PA_CONTEXT_NOFAIL = 0x0002U
00119 } pa_context_flags_t;
00120 
00122 /* Allow clients to check with #ifdef for those flags */
00123 #define PA_CONTEXT_NOAUTOSPAWN PA_CONTEXT_NOAUTOSPAWN
00124 #define PA_CONTEXT_NOFAIL PA_CONTEXT_NOFAIL
00125 
00131 typedef enum pa_direction {
00132     PA_DIRECTION_OUTPUT = 0x0001U,  
00133     PA_DIRECTION_INPUT = 0x0002U    
00134 } pa_direction_t;
00135 
00137 #define PA_DIRECTION_OUTPUT PA_DIRECTION_OUTPUT
00138 #define PA_DIRECTION_INPUT PA_DIRECTION_INPUT
00139 
00142 typedef enum pa_device_type {
00143     PA_DEVICE_TYPE_SINK,     
00144     PA_DEVICE_TYPE_SOURCE    
00145 } pa_device_type_t;
00146 
00148 #define PA_DEVICE_TYPE_SINK PA_DEVICE_TYPE_SINK
00149 #define PA_DEVICE_TYPE_SOURCE PA_DEVICE_TYPE_SOURCE
00150 
00153 typedef enum pa_stream_direction {
00154     PA_STREAM_NODIRECTION,   
00155     PA_STREAM_PLAYBACK,      
00156     PA_STREAM_RECORD,        
00157     PA_STREAM_UPLOAD         
00158 } pa_stream_direction_t;
00159 
00161 #define PA_STREAM_NODIRECTION PA_STREAM_NODIRECTION
00162 #define PA_STREAM_PLAYBACK PA_STREAM_PLAYBACK
00163 #define PA_STREAM_RECORD PA_STREAM_RECORD
00164 #define PA_STREAM_UPLOAD PA_STREAM_UPLOAD
00165 
00168 typedef enum pa_stream_flags {
00169 
00170     PA_STREAM_NOFLAGS = 0x0000U,
00173     PA_STREAM_START_CORKED = 0x0001U,
00177     PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
00189     PA_STREAM_NOT_MONOTONIC = 0x0004U,
00201     PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
00208     PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
00214     PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
00220     PA_STREAM_FIX_FORMAT = 0x0040U,
00232     PA_STREAM_FIX_RATE = 0x0080U,
00238     PA_STREAM_FIX_CHANNELS = 0x0100,
00245     PA_STREAM_DONT_MOVE = 0x0200U,
00254     PA_STREAM_VARIABLE_RATE = 0x0400U,
00260     PA_STREAM_PEAK_DETECT = 0x0800U,
00263     PA_STREAM_START_MUTED = 0x1000U,
00269     PA_STREAM_ADJUST_LATENCY = 0x2000U,
00276     PA_STREAM_EARLY_REQUESTS = 0x4000U,
00293     PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
00298     PA_STREAM_START_UNMUTED = 0x10000U,
00304     PA_STREAM_FAIL_ON_SUSPEND = 0x20000U,
00310     PA_STREAM_RELATIVE_VOLUME = 0x40000U,
00317     PA_STREAM_PASSTHROUGH = 0x80000U
00322 } pa_stream_flags_t;
00323 
00326 /* English is an evil language */
00327 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC
00328 
00329 /* Allow clients to check with #ifdef for those flags */
00330 #define PA_STREAM_START_CORKED PA_STREAM_START_CORKED
00331 #define PA_STREAM_INTERPOLATE_TIMING PA_STREAM_INTERPOLATE_TIMING
00332 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONIC
00333 #define PA_STREAM_AUTO_TIMING_UPDATE PA_STREAM_AUTO_TIMING_UPDATE
00334 #define PA_STREAM_NO_REMAP_CHANNELS PA_STREAM_NO_REMAP_CHANNELS
00335 #define PA_STREAM_NO_REMIX_CHANNELS PA_STREAM_NO_REMIX_CHANNELS
00336 #define PA_STREAM_FIX_FORMAT PA_STREAM_FIX_FORMAT
00337 #define PA_STREAM_FIX_RATE PA_STREAM_FIX_RATE
00338 #define PA_STREAM_FIX_CHANNELS PA_STREAM_FIX_CHANNELS
00339 #define PA_STREAM_DONT_MOVE PA_STREAM_DONT_MOVE
00340 #define PA_STREAM_VARIABLE_RATE PA_STREAM_VARIABLE_RATE
00341 #define PA_STREAM_PEAK_DETECT PA_STREAM_PEAK_DETECT
00342 #define PA_STREAM_START_MUTED PA_STREAM_START_MUTED
00343 #define PA_STREAM_ADJUST_LATENCY PA_STREAM_ADJUST_LATENCY
00344 #define PA_STREAM_EARLY_REQUESTS PA_STREAM_EARLY_REQUESTS
00345 #define PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND
00346 #define PA_STREAM_START_UNMUTED PA_STREAM_START_UNMUTED
00347 #define PA_STREAM_FAIL_ON_SUSPEND PA_STREAM_FAIL_ON_SUSPEND
00348 #define PA_STREAM_RELATIVE_VOLUME PA_STREAM_RELATIVE_VOLUME
00349 #define PA_STREAM_PASSTHROUGH PA_STREAM_PASSTHROUGH
00350 
00354 typedef struct pa_buffer_attr {
00355     uint32_t maxlength;
00360     uint32_t tlength;
00378     uint32_t prebuf;
00389     uint32_t minreq;
00399     uint32_t fragsize;
00413 } pa_buffer_attr;
00414 
00416 typedef enum pa_error_code {
00417     PA_OK = 0,                     
00418     PA_ERR_ACCESS,                 
00419     PA_ERR_COMMAND,                
00420     PA_ERR_INVALID,                
00421     PA_ERR_EXIST,                  
00422     PA_ERR_NOENTITY,               
00423     PA_ERR_CONNECTIONREFUSED,      
00424     PA_ERR_PROTOCOL,               
00425     PA_ERR_TIMEOUT,                
00426     PA_ERR_AUTHKEY,                
00427     PA_ERR_INTERNAL,               
00428     PA_ERR_CONNECTIONTERMINATED,   
00429     PA_ERR_KILLED,                 
00430     PA_ERR_INVALIDSERVER,          
00431     PA_ERR_MODINITFAILED,          
00432     PA_ERR_BADSTATE,               
00433     PA_ERR_NODATA,                 
00434     PA_ERR_VERSION,                
00435     PA_ERR_TOOLARGE,               
00436     PA_ERR_NOTSUPPORTED,           
00437     PA_ERR_UNKNOWN,                
00438     PA_ERR_NOEXTENSION,            
00439     PA_ERR_OBSOLETE,               
00440     PA_ERR_NOTIMPLEMENTED,         
00441     PA_ERR_FORKED,                 
00442     PA_ERR_IO,                     
00443     PA_ERR_BUSY,                   
00444     PA_ERR_MAX                     
00445 } pa_error_code_t;
00446 
00448 #define PA_OK PA_OK
00449 #define PA_ERR_ACCESS PA_ERR_ACCESS
00450 #define PA_ERR_COMMAND PA_ERR_COMMAND
00451 #define PA_ERR_INVALID PA_ERR_INVALID
00452 #define PA_ERR_EXIST PA_ERR_EXIST
00453 #define PA_ERR_NOENTITY PA_ERR_NOENTITY
00454 #define PA_ERR_CONNECTIONREFUSED PA_ERR_CONNECTIONREFUSED
00455 #define PA_ERR_PROTOCOL PA_ERR_PROTOCOL
00456 #define PA_ERR_TIMEOUT PA_ERR_TIMEOUT
00457 #define PA_ERR_AUTHKEY PA_ERR_AUTHKEY
00458 #define PA_ERR_INTERNAL PA_ERR_INTERNAL
00459 #define PA_ERR_CONNECTIONTERMINATED PA_ERR_CONNECTIONTERMINATED
00460 #define PA_ERR_KILLED PA_ERR_KILLED
00461 #define PA_ERR_INVALIDSERVER PA_ERR_INVALIDSERVER
00462 #define PA_ERR_MODINITFAILED PA_ERR_MODINITFAILED
00463 #define PA_ERR_BADSTATE PA_ERR_BADSTATE
00464 #define PA_ERR_NODATA PA_ERR_NODATA
00465 #define PA_ERR_VERSION PA_ERR_VERSION
00466 #define PA_ERR_TOOLARGE PA_ERR_TOOLARGE
00467 #define PA_ERR_NOTSUPPORTED PA_ERR_NOTSUPPORTED
00468 #define PA_ERR_UNKNOWN PA_ERR_UNKNOWN
00469 #define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION
00470 #define PA_ERR_OBSOLETE PA_ERR_OBSOLETE
00471 #define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED
00472 #define PA_ERR_FORKED PA_ERR_FORKED
00473 #define PA_ERR_MAX PA_ERR_MAX
00474 
00477 typedef enum pa_subscription_mask {
00478     PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
00481     PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
00484     PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
00487     PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
00490     PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
00493     PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
00496     PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
00499     PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
00502     PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
00506     PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
00510     PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
00513     PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
00515 } pa_subscription_mask_t;
00516 
00518 typedef enum pa_subscription_event_type {
00519     PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
00522     PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
00525     PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
00528     PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
00531     PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
00534     PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
00537     PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
00540     PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
00544     PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
00548     PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
00551     PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
00554     PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
00557     PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
00560     PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
00563     PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
00566 } pa_subscription_event_type_t;
00567 
00569 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00570 
00572 #define PA_SUBSCRIPTION_MASK_NULL PA_SUBSCRIPTION_MASK_NULL
00573 #define PA_SUBSCRIPTION_MASK_SINK PA_SUBSCRIPTION_MASK_SINK
00574 #define PA_SUBSCRIPTION_MASK_SOURCE PA_SUBSCRIPTION_MASK_SOURCE
00575 #define PA_SUBSCRIPTION_MASK_SINK_INPUT PA_SUBSCRIPTION_MASK_SINK_INPUT
00576 #define PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT
00577 #define PA_SUBSCRIPTION_MASK_MODULE PA_SUBSCRIPTION_MASK_MODULE
00578 #define PA_SUBSCRIPTION_MASK_CLIENT PA_SUBSCRIPTION_MASK_CLIENT
00579 #define PA_SUBSCRIPTION_MASK_SAMPLE_CACHE PA_SUBSCRIPTION_MASK_SAMPLE_CACHE
00580 #define PA_SUBSCRIPTION_MASK_SERVER PA_SUBSCRIPTION_MASK_SERVER
00581 #define PA_SUBSCRIPTION_MASK_AUTOLOAD PA_SUBSCRIPTION_MASK_AUTOLOAD
00582 #define PA_SUBSCRIPTION_MASK_CARD PA_SUBSCRIPTION_MASK_CARD
00583 #define PA_SUBSCRIPTION_MASK_ALL PA_SUBSCRIPTION_MASK_ALL
00584 #define PA_SUBSCRIPTION_EVENT_SINK PA_SUBSCRIPTION_EVENT_SINK
00585 #define PA_SUBSCRIPTION_EVENT_SOURCE PA_SUBSCRIPTION_EVENT_SOURCE
00586 #define PA_SUBSCRIPTION_EVENT_SINK_INPUT PA_SUBSCRIPTION_EVENT_SINK_INPUT
00587 #define PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT
00588 #define PA_SUBSCRIPTION_EVENT_MODULE PA_SUBSCRIPTION_EVENT_MODULE
00589 #define PA_SUBSCRIPTION_EVENT_CLIENT PA_SUBSCRIPTION_EVENT_CLIENT
00590 #define PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE
00591 #define PA_SUBSCRIPTION_EVENT_SERVER PA_SUBSCRIPTION_EVENT_SERVER
00592 #define PA_SUBSCRIPTION_EVENT_AUTOLOAD PA_SUBSCRIPTION_EVENT_AUTOLOAD
00593 #define PA_SUBSCRIPTION_EVENT_CARD PA_SUBSCRIPTION_EVENT_CARD
00594 #define PA_SUBSCRIPTION_EVENT_FACILITY_MASK PA_SUBSCRIPTION_EVENT_FACILITY_MASK
00595 #define PA_SUBSCRIPTION_EVENT_NEW PA_SUBSCRIPTION_EVENT_NEW
00596 #define PA_SUBSCRIPTION_EVENT_CHANGE PA_SUBSCRIPTION_EVENT_CHANGE
00597 #define PA_SUBSCRIPTION_EVENT_REMOVE PA_SUBSCRIPTION_EVENT_REMOVE
00598 #define PA_SUBSCRIPTION_EVENT_TYPE_MASK PA_SUBSCRIPTION_EVENT_TYPE_MASK
00599 
00619 typedef struct pa_timing_info {
00620     struct timeval timestamp;
00623     int synchronized_clocks;
00630     pa_usec_t sink_usec;
00635     pa_usec_t source_usec;
00639     pa_usec_t transport_usec;
00643     int playing;
00650     int write_index_corrupt;
00657     int64_t write_index;
00663     int read_index_corrupt;
00668     int64_t read_index;
00674     pa_usec_t configured_sink_usec;
00677     pa_usec_t configured_source_usec;
00680     int64_t since_underrun;
00686 } pa_timing_info;
00687 
00695 typedef struct pa_spawn_api {
00696     void (*prefork)(void);
00700     void (*postfork)(void);
00704     void (*atfork)(void);
00710 } pa_spawn_api;
00711 
00713 typedef enum pa_seek_mode {
00714     PA_SEEK_RELATIVE = 0,
00717     PA_SEEK_ABSOLUTE = 1,
00720     PA_SEEK_RELATIVE_ON_READ = 2,
00723     PA_SEEK_RELATIVE_END = 3
00725 } pa_seek_mode_t;
00726 
00728 #define PA_SEEK_RELATIVE PA_SEEK_RELATIVE
00729 #define PA_SEEK_ABSOLUTE PA_SEEK_ABSOLUTE
00730 #define PA_SEEK_RELATIVE_ON_READ PA_SEEK_RELATIVE_ON_READ
00731 #define PA_SEEK_RELATIVE_END PA_SEEK_RELATIVE_END
00732 
00735 typedef enum pa_sink_flags {
00736     PA_SINK_NOFLAGS = 0x0000U,
00739     PA_SINK_HW_VOLUME_CTRL = 0x0001U,
00743     PA_SINK_LATENCY = 0x0002U,
00746     PA_SINK_HARDWARE = 0x0004U,
00750     PA_SINK_NETWORK = 0x0008U,
00753     PA_SINK_HW_MUTE_CTRL = 0x0010U,
00757     PA_SINK_DECIBEL_VOLUME = 0x0020U,
00762     PA_SINK_FLAT_VOLUME = 0x0040U,
00766     PA_SINK_DYNAMIC_LATENCY = 0x0080U,
00770     PA_SINK_SET_FORMATS = 0x0100U,
00775 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00776 
00777     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00778      * The server will filter out these flags anyway, so you should never see
00779      * these flags in sinks. */
00780 
00781     PA_SINK_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00785     PA_SINK_DEFERRED_VOLUME = 0x2000000U,
00788 #endif
00789 
00790 } pa_sink_flags_t;
00791 
00793 #define PA_SINK_HW_VOLUME_CTRL PA_SINK_HW_VOLUME_CTRL
00794 #define PA_SINK_LATENCY PA_SINK_LATENCY
00795 #define PA_SINK_HARDWARE PA_SINK_HARDWARE
00796 #define PA_SINK_NETWORK PA_SINK_NETWORK
00797 #define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL
00798 #define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME
00799 #define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME
00800 #define PA_SINK_DYNAMIC_LATENCY PA_SINK_DYNAMIC_LATENCY
00801 #define PA_SINK_SET_FORMATS PA_SINK_SET_FORMATS
00802 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00803 #define PA_SINK_CLIENT_FLAGS_MASK 0xFFFFFF
00804 #endif
00805 
00809 typedef enum pa_sink_state { /* enum serialized in u8 */
00810     PA_SINK_INVALID_STATE = -1,
00813     PA_SINK_RUNNING = 0,
00816     PA_SINK_IDLE = 1,
00819     PA_SINK_SUSPENDED = 2,
00823     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00824      * SIDE! These values are *not* considered part of the official PA
00825      * API/ABI. If you use them your application might break when PA
00826      * is upgraded. Also, please note that these values are not useful
00827      * on the client side anyway. */
00828 
00829     PA_SINK_INIT = -2,
00832     PA_SINK_UNLINKED = -3
00836 } pa_sink_state_t;
00837 
00839 static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
00840     return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
00841 }
00842 
00844 static inline int PA_SINK_IS_RUNNING(pa_sink_state_t x) {
00845     return x == PA_SINK_RUNNING;
00846 }
00847 
00849 #define PA_SINK_INVALID_STATE PA_SINK_INVALID_STATE
00850 #define PA_SINK_RUNNING PA_SINK_RUNNING
00851 #define PA_SINK_IDLE PA_SINK_IDLE
00852 #define PA_SINK_SUSPENDED PA_SINK_SUSPENDED
00853 #define PA_SINK_INIT PA_SINK_INIT
00854 #define PA_SINK_UNLINKED PA_SINK_UNLINKED
00855 #define PA_SINK_IS_OPENED PA_SINK_IS_OPENED
00856 
00859 typedef enum pa_source_flags {
00860     PA_SOURCE_NOFLAGS = 0x0000U,
00863     PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
00867     PA_SOURCE_LATENCY = 0x0002U,
00870     PA_SOURCE_HARDWARE = 0x0004U,
00874     PA_SOURCE_NETWORK = 0x0008U,
00877     PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
00881     PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
00886     PA_SOURCE_DYNAMIC_LATENCY = 0x0040U,
00890     PA_SOURCE_FLAT_VOLUME = 0x0080U,
00894 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00895 
00896     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00897      * The server will filter out these flags anyway, so you should never see
00898      * these flags in sources. */
00899 
00900     PA_SOURCE_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00904     PA_SOURCE_DEFERRED_VOLUME = 0x2000000U,
00906 #endif
00907 } pa_source_flags_t;
00908 
00910 #define PA_SOURCE_HW_VOLUME_CTRL PA_SOURCE_HW_VOLUME_CTRL
00911 #define PA_SOURCE_LATENCY PA_SOURCE_LATENCY
00912 #define PA_SOURCE_HARDWARE PA_SOURCE_HARDWARE
00913 #define PA_SOURCE_NETWORK PA_SOURCE_NETWORK
00914 #define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL
00915 #define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME
00916 #define PA_SOURCE_DYNAMIC_LATENCY PA_SOURCE_DYNAMIC_LATENCY
00917 #define PA_SOURCE_FLAT_VOLUME PA_SOURCE_FLAT_VOLUME
00918 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00919 #define PA_SOURCE_CLIENT_FLAGS_MASK 0xFFFFFF
00920 #endif
00921 
00925 typedef enum pa_source_state {
00926     PA_SOURCE_INVALID_STATE = -1,
00929     PA_SOURCE_RUNNING = 0,
00932     PA_SOURCE_IDLE = 1,
00935     PA_SOURCE_SUSPENDED = 2,
00939     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00940      * SIDE! These values are *not* considered part of the official PA
00941      * API/ABI. If you use them your application might break when PA
00942      * is upgraded. Also, please note that these values are not useful
00943      * on the client side anyway. */
00944 
00945     PA_SOURCE_INIT = -2,
00948     PA_SOURCE_UNLINKED = -3
00952 } pa_source_state_t;
00953 
00955 static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
00956     return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
00957 }
00958 
00960 static inline int PA_SOURCE_IS_RUNNING(pa_source_state_t x) {
00961     return x == PA_SOURCE_RUNNING;
00962 }
00963 
00965 #define PA_SOURCE_INVALID_STATE PA_SOURCE_INVALID_STATE
00966 #define PA_SOURCE_RUNNING PA_SOURCE_RUNNING
00967 #define PA_SOURCE_IDLE PA_SOURCE_IDLE
00968 #define PA_SOURCE_SUSPENDED PA_SOURCE_SUSPENDED
00969 #define PA_SOURCE_INIT PA_SOURCE_INIT
00970 #define PA_SOURCE_UNLINKED PA_SOURCE_UNLINKED
00971 #define PA_SOURCE_IS_OPENED PA_SOURCE_IS_OPENED
00972 
00975 typedef void (*pa_free_cb_t)(void *p);
00976 
00980 #define PA_STREAM_EVENT_REQUEST_CORK "request-cork"
00981 
00985 #define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork"
00986 
00992 #define PA_STREAM_EVENT_FORMAT_LOST "format-lost"
00993 
00996 typedef enum pa_port_available {
00997     PA_PORT_AVAILABLE_UNKNOWN = 0, 
00998     PA_PORT_AVAILABLE_NO = 1,      
00999     PA_PORT_AVAILABLE_YES = 2,     
01000 } pa_port_available_t;
01001 
01003 #define PA_PORT_AVAILABLE_UNKNOWN PA_PORT_AVAILABLE_UNKNOWN
01004 #define PA_PORT_AVAILABLE_NO PA_PORT_AVAILABLE_NO
01005 #define PA_PORT_AVAILABLE_YES PA_PORT_AVAILABLE_YES
01006 
01009 PA_C_DECL_END
01010 
01011 #endif