PulseAudio 1.1
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 
00128 typedef enum pa_device_type {
00129     PA_DEVICE_TYPE_SINK,     
00130     PA_DEVICE_TYPE_SOURCE    
00131 } pa_device_type_t;
00132 
00134 #define PA_DEVICE_TYPE_SINK PA_DEVICE_TYPE_SINK
00135 #define PA_DEVICE_TYPE_SOURCE PA_DEVICE_TYPE_SOURCE
00136 
00139 typedef enum pa_stream_direction {
00140     PA_STREAM_NODIRECTION,   
00141     PA_STREAM_PLAYBACK,      
00142     PA_STREAM_RECORD,        
00143     PA_STREAM_UPLOAD         
00144 } pa_stream_direction_t;
00145 
00147 #define PA_STREAM_NODIRECTION PA_STREAM_NODIRECTION
00148 #define PA_STREAM_PLAYBACK PA_STREAM_PLAYBACK
00149 #define PA_STREAM_RECORD PA_STREAM_RECORD
00150 #define PA_STREAM_UPLOAD PA_STREAM_UPLOAD
00151 
00154 typedef enum pa_stream_flags {
00155 
00156     PA_STREAM_NOFLAGS = 0x0000U,
00159     PA_STREAM_START_CORKED = 0x0001U,
00163     PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
00175     PA_STREAM_NOT_MONOTONIC = 0x0004U,
00187     PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
00194     PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
00200     PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
00206     PA_STREAM_FIX_FORMAT = 0x0040U,
00218     PA_STREAM_FIX_RATE = 0x0080U,
00224     PA_STREAM_FIX_CHANNELS = 0x0100,
00231     PA_STREAM_DONT_MOVE = 0x0200U,
00240     PA_STREAM_VARIABLE_RATE = 0x0400U,
00246     PA_STREAM_PEAK_DETECT = 0x0800U,
00249     PA_STREAM_START_MUTED = 0x1000U,
00255     PA_STREAM_ADJUST_LATENCY = 0x2000U,
00262     PA_STREAM_EARLY_REQUESTS = 0x4000U,
00279     PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
00284     PA_STREAM_START_UNMUTED = 0x10000U,
00290     PA_STREAM_FAIL_ON_SUSPEND = 0x20000U,
00296     PA_STREAM_RELATIVE_VOLUME = 0x40000U,
00303     PA_STREAM_PASSTHROUGH = 0x80000U
00308 } pa_stream_flags_t;
00309 
00312 /* English is an evil language */
00313 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC
00314 
00315 /* Allow clients to check with #ifdef for those flags */
00316 #define PA_STREAM_START_CORKED PA_STREAM_START_CORKED
00317 #define PA_STREAM_INTERPOLATE_TIMING PA_STREAM_INTERPOLATE_TIMING
00318 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONIC
00319 #define PA_STREAM_AUTO_TIMING_UPDATE PA_STREAM_AUTO_TIMING_UPDATE
00320 #define PA_STREAM_NO_REMAP_CHANNELS PA_STREAM_NO_REMAP_CHANNELS
00321 #define PA_STREAM_NO_REMIX_CHANNELS PA_STREAM_NO_REMIX_CHANNELS
00322 #define PA_STREAM_FIX_FORMAT PA_STREAM_FIX_FORMAT
00323 #define PA_STREAM_FIX_RATE PA_STREAM_FIX_RATE
00324 #define PA_STREAM_FIX_CHANNELS PA_STREAM_FIX_CHANNELS
00325 #define PA_STREAM_DONT_MOVE PA_STREAM_DONT_MOVE
00326 #define PA_STREAM_VARIABLE_RATE PA_STREAM_VARIABLE_RATE
00327 #define PA_STREAM_PEAK_DETECT PA_STREAM_PEAK_DETECT
00328 #define PA_STREAM_START_MUTED PA_STREAM_START_MUTED
00329 #define PA_STREAM_ADJUST_LATENCY PA_STREAM_ADJUST_LATENCY
00330 #define PA_STREAM_EARLY_REQUESTS PA_STREAM_EARLY_REQUESTS
00331 #define PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND
00332 #define PA_STREAM_START_UNMUTED PA_STREAM_START_UNMUTED
00333 #define PA_STREAM_FAIL_ON_SUSPEND PA_STREAM_FAIL_ON_SUSPEND
00334 #define PA_STREAM_RELATIVE_VOLUME PA_STREAM_RELATIVE_VOLUME
00335 #define PA_STREAM_PASSTHROUGH PA_STREAM_PASSTHROUGH
00336 
00340 typedef struct pa_buffer_attr {
00341     uint32_t maxlength;
00346     uint32_t tlength;
00364     uint32_t prebuf;
00375     uint32_t minreq;
00385     uint32_t fragsize;
00399 } pa_buffer_attr;
00400 
00402 enum {
00403     PA_OK = 0,                     
00404     PA_ERR_ACCESS,                 
00405     PA_ERR_COMMAND,                
00406     PA_ERR_INVALID,                
00407     PA_ERR_EXIST,                  
00408     PA_ERR_NOENTITY,               
00409     PA_ERR_CONNECTIONREFUSED,      
00410     PA_ERR_PROTOCOL,               
00411     PA_ERR_TIMEOUT,                
00412     PA_ERR_AUTHKEY,                
00413     PA_ERR_INTERNAL,               
00414     PA_ERR_CONNECTIONTERMINATED,   
00415     PA_ERR_KILLED,                 
00416     PA_ERR_INVALIDSERVER,          
00417     PA_ERR_MODINITFAILED,          
00418     PA_ERR_BADSTATE,               
00419     PA_ERR_NODATA,                 
00420     PA_ERR_VERSION,                
00421     PA_ERR_TOOLARGE,               
00422     PA_ERR_NOTSUPPORTED,           
00423     PA_ERR_UNKNOWN,                
00424     PA_ERR_NOEXTENSION,            
00425     PA_ERR_OBSOLETE,               
00426     PA_ERR_NOTIMPLEMENTED,         
00427     PA_ERR_FORKED,                 
00428     PA_ERR_IO,                     
00429     PA_ERR_BUSY,                   
00430     PA_ERR_MAX                     
00431 };
00432 
00434 #define PA_OK PA_OK
00435 #define PA_ERR_ACCESS PA_ERR_ACCESS
00436 #define PA_ERR_COMMAND PA_ERR_COMMAND
00437 #define PA_ERR_INVALID PA_ERR_INVALID
00438 #define PA_ERR_EXIST PA_ERR_EXIST
00439 #define PA_ERR_NOENTITY PA_ERR_NOENTITY
00440 #define PA_ERR_CONNECTIONREFUSED PA_ERR_CONNECTIONREFUSED
00441 #define PA_ERR_PROTOCOL PA_ERR_PROTOCOL
00442 #define PA_ERR_TIMEOUT PA_ERR_TIMEOUT
00443 #define PA_ERR_AUTHKEY PA_ERR_AUTHKEY
00444 #define PA_ERR_INTERNAL PA_ERR_INTERNAL
00445 #define PA_ERR_CONNECTIONTERMINATED PA_ERR_CONNECTIONTERMINATED
00446 #define PA_ERR_KILLED PA_ERR_KILLED
00447 #define PA_ERR_INVALIDSERVER PA_ERR_INVALIDSERVER
00448 #define PA_ERR_MODINITFAILED PA_ERR_MODINITFAILED
00449 #define PA_ERR_BADSTATE PA_ERR_BADSTATE
00450 #define PA_ERR_NODATA PA_ERR_NODATA
00451 #define PA_ERR_VERSION PA_ERR_VERSION
00452 #define PA_ERR_TOOLARGE PA_ERR_TOOLARGE
00453 #define PA_ERR_NOTSUPPORTED PA_ERR_NOTSUPPORTED
00454 #define PA_ERR_UNKNOWN PA_ERR_UNKNOWN
00455 #define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION
00456 #define PA_ERR_OBSOLETE PA_ERR_OBSOLETE
00457 #define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED
00458 #define PA_ERR_FORKED PA_ERR_FORKED
00459 #define PA_ERR_MAX PA_ERR_MAX
00460 
00463 typedef enum pa_subscription_mask {
00464     PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
00467     PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
00470     PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
00473     PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
00476     PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
00479     PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
00482     PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
00485     PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
00488     PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
00492     PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
00496     PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
00499     PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
00501 } pa_subscription_mask_t;
00502 
00504 typedef enum pa_subscription_event_type {
00505     PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
00508     PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
00511     PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
00514     PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
00517     PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
00520     PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
00523     PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
00526     PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
00530     PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
00534     PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
00537     PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
00540     PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
00543     PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
00546     PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
00549     PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
00552 } pa_subscription_event_type_t;
00553 
00555 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
00556 
00558 #define PA_SUBSCRIPTION_MASK_NULL PA_SUBSCRIPTION_MASK_NULL
00559 #define PA_SUBSCRIPTION_MASK_SINK PA_SUBSCRIPTION_MASK_SINK
00560 #define PA_SUBSCRIPTION_MASK_SOURCE PA_SUBSCRIPTION_MASK_SOURCE
00561 #define PA_SUBSCRIPTION_MASK_SINK_INPUT PA_SUBSCRIPTION_MASK_SINK_INPUT
00562 #define PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT
00563 #define PA_SUBSCRIPTION_MASK_MODULE PA_SUBSCRIPTION_MASK_MODULE
00564 #define PA_SUBSCRIPTION_MASK_CLIENT PA_SUBSCRIPTION_MASK_CLIENT
00565 #define PA_SUBSCRIPTION_MASK_SAMPLE_CACHE PA_SUBSCRIPTION_MASK_SAMPLE_CACHE
00566 #define PA_SUBSCRIPTION_MASK_SERVER PA_SUBSCRIPTION_MASK_SERVER
00567 #define PA_SUBSCRIPTION_MASK_AUTOLOAD PA_SUBSCRIPTION_MASK_AUTOLOAD
00568 #define PA_SUBSCRIPTION_MASK_CARD PA_SUBSCRIPTION_MASK_CARD
00569 #define PA_SUBSCRIPTION_MASK_ALL PA_SUBSCRIPTION_MASK_ALL
00570 #define PA_SUBSCRIPTION_EVENT_SINK PA_SUBSCRIPTION_EVENT_SINK
00571 #define PA_SUBSCRIPTION_EVENT_SOURCE PA_SUBSCRIPTION_EVENT_SOURCE
00572 #define PA_SUBSCRIPTION_EVENT_SINK_INPUT PA_SUBSCRIPTION_EVENT_SINK_INPUT
00573 #define PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT
00574 #define PA_SUBSCRIPTION_EVENT_MODULE PA_SUBSCRIPTION_EVENT_MODULE
00575 #define PA_SUBSCRIPTION_EVENT_CLIENT PA_SUBSCRIPTION_EVENT_CLIENT
00576 #define PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE
00577 #define PA_SUBSCRIPTION_EVENT_SERVER PA_SUBSCRIPTION_EVENT_SERVER
00578 #define PA_SUBSCRIPTION_EVENT_AUTOLOAD PA_SUBSCRIPTION_EVENT_AUTOLOAD
00579 #define PA_SUBSCRIPTION_EVENT_CARD PA_SUBSCRIPTION_EVENT_CARD
00580 #define PA_SUBSCRIPTION_EVENT_FACILITY_MASK PA_SUBSCRIPTION_EVENT_FACILITY_MASK
00581 #define PA_SUBSCRIPTION_EVENT_NEW PA_SUBSCRIPTION_EVENT_NEW
00582 #define PA_SUBSCRIPTION_EVENT_CHANGE PA_SUBSCRIPTION_EVENT_CHANGE
00583 #define PA_SUBSCRIPTION_EVENT_REMOVE PA_SUBSCRIPTION_EVENT_REMOVE
00584 #define PA_SUBSCRIPTION_EVENT_TYPE_MASK PA_SUBSCRIPTION_EVENT_TYPE_MASK
00585 
00605 typedef struct pa_timing_info {
00606     struct timeval timestamp;
00609     int synchronized_clocks;
00616     pa_usec_t sink_usec;
00621     pa_usec_t source_usec;
00625     pa_usec_t transport_usec;
00629     int playing;
00636     int write_index_corrupt;
00643     int64_t write_index;
00649     int read_index_corrupt;
00654     int64_t read_index;
00660     pa_usec_t configured_sink_usec;
00663     pa_usec_t configured_source_usec;
00666     int64_t since_underrun;
00672 } pa_timing_info;
00673 
00681 typedef struct pa_spawn_api {
00682     void (*prefork)(void);
00686     void (*postfork)(void);
00690     void (*atfork)(void);
00696 } pa_spawn_api;
00697 
00699 typedef enum pa_seek_mode {
00700     PA_SEEK_RELATIVE = 0,
00703     PA_SEEK_ABSOLUTE = 1,
00706     PA_SEEK_RELATIVE_ON_READ = 2,
00709     PA_SEEK_RELATIVE_END = 3
00711 } pa_seek_mode_t;
00712 
00714 #define PA_SEEK_RELATIVE PA_SEEK_RELATIVE
00715 #define PA_SEEK_ABSOLUTE PA_SEEK_ABSOLUTE
00716 #define PA_SEEK_RELATIVE_ON_READ PA_SEEK_RELATIVE_ON_READ
00717 #define PA_SEEK_RELATIVE_END PA_SEEK_RELATIVE_END
00718 
00721 typedef enum pa_sink_flags {
00722     PA_SINK_NOFLAGS = 0x0000U,
00725     PA_SINK_HW_VOLUME_CTRL = 0x0001U,
00729     PA_SINK_LATENCY = 0x0002U,
00732     PA_SINK_HARDWARE = 0x0004U,
00736     PA_SINK_NETWORK = 0x0008U,
00739     PA_SINK_HW_MUTE_CTRL = 0x0010U,
00743     PA_SINK_DECIBEL_VOLUME = 0x0020U,
00748     PA_SINK_FLAT_VOLUME = 0x0040U,
00752     PA_SINK_DYNAMIC_LATENCY = 0x0080U,
00756     PA_SINK_SET_FORMATS = 0x0100U,
00761 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00762 
00763     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00764      * The server will filter out these flags anyway, so you should never see
00765      * these flags in sinks. */
00766 
00767     PA_SINK_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00771     PA_SINK_DEFERRED_VOLUME = 0x2000000U,
00774 #endif
00775 
00776 } pa_sink_flags_t;
00777 
00779 #define PA_SINK_HW_VOLUME_CTRL PA_SINK_HW_VOLUME_CTRL
00780 #define PA_SINK_LATENCY PA_SINK_LATENCY
00781 #define PA_SINK_HARDWARE PA_SINK_HARDWARE
00782 #define PA_SINK_NETWORK PA_SINK_NETWORK
00783 #define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL
00784 #define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME
00785 #define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME
00786 #define PA_SINK_DYNAMIC_LATENCY PA_SINK_DYNAMIC_LATENCY
00787 #define PA_SINK_SET_FORMATS PA_SINK_SET_FORMATS
00788 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00789 #define PA_SINK_CLIENT_FLAGS_MASK 0xFFFFFF
00790 #endif
00791 
00795 typedef enum pa_sink_state { /* enum serialized in u8 */
00796     PA_SINK_INVALID_STATE = -1,
00799     PA_SINK_RUNNING = 0,
00802     PA_SINK_IDLE = 1,
00805     PA_SINK_SUSPENDED = 2,
00809     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00810      * SIDE! These values are *not* considered part of the official PA
00811      * API/ABI. If you use them your application might break when PA
00812      * is upgraded. Also, please note that these values are not useful
00813      * on the client side anyway. */
00814 
00815     PA_SINK_INIT = -2,
00818     PA_SINK_UNLINKED = -3
00822 } pa_sink_state_t;
00823 
00825 static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
00826     return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
00827 }
00828 
00830 #define PA_SINK_INVALID_STATE PA_SINK_INVALID_STATE
00831 #define PA_SINK_RUNNING PA_SINK_RUNNING
00832 #define PA_SINK_IDLE PA_SINK_IDLE
00833 #define PA_SINK_SUSPENDED PA_SINK_SUSPENDED
00834 #define PA_SINK_INIT PA_SINK_INIT
00835 #define PA_SINK_UNLINKED PA_SINK_UNLINKED
00836 #define PA_SINK_IS_OPENED PA_SINK_IS_OPENED
00837 
00840 typedef enum pa_source_flags {
00841     PA_SOURCE_NOFLAGS = 0x0000U,
00844     PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
00848     PA_SOURCE_LATENCY = 0x0002U,
00851     PA_SOURCE_HARDWARE = 0x0004U,
00855     PA_SOURCE_NETWORK = 0x0008U,
00858     PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
00862     PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
00867     PA_SOURCE_DYNAMIC_LATENCY = 0x0040U,
00871     PA_SOURCE_FLAT_VOLUME = 0x0080U,
00875 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00876 
00877     /* PRIVATE: Server-side values -- do not try to use these at client-side.
00878      * The server will filter out these flags anyway, so you should never see
00879      * these flags in sources. */
00880 
00881     PA_SOURCE_SHARE_VOLUME_WITH_MASTER = 0x1000000U,
00885     PA_SOURCE_DEFERRED_VOLUME = 0x2000000U,
00887 #endif
00888 } pa_source_flags_t;
00889 
00891 #define PA_SOURCE_HW_VOLUME_CTRL PA_SOURCE_HW_VOLUME_CTRL
00892 #define PA_SOURCE_LATENCY PA_SOURCE_LATENCY
00893 #define PA_SOURCE_HARDWARE PA_SOURCE_HARDWARE
00894 #define PA_SOURCE_NETWORK PA_SOURCE_NETWORK
00895 #define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL
00896 #define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME
00897 #define PA_SOURCE_DYNAMIC_LATENCY PA_SOURCE_DYNAMIC_LATENCY
00898 #define PA_SOURCE_FLAT_VOLUME PA_SOURCE_FLAT_VOLUME
00899 #ifdef __INCLUDED_FROM_PULSE_AUDIO
00900 #define PA_SOURCE_CLIENT_FLAGS_MASK 0xFFFFFF
00901 #endif
00902 
00906 typedef enum pa_source_state {
00907     PA_SOURCE_INVALID_STATE = -1,
00910     PA_SOURCE_RUNNING = 0,
00913     PA_SOURCE_IDLE = 1,
00916     PA_SOURCE_SUSPENDED = 2,
00920     /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT
00921      * SIDE! These values are *not* considered part of the official PA
00922      * API/ABI. If you use them your application might break when PA
00923      * is upgraded. Also, please note that these values are not useful
00924      * on the client side anyway. */
00925 
00926     PA_SOURCE_INIT = -2,
00929     PA_SOURCE_UNLINKED = -3
00933 } pa_source_state_t;
00934 
00936 static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
00937     return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
00938 }
00939 
00941 #define PA_SOURCE_INVALID_STATE PA_SOURCE_INVALID_STATE
00942 #define PA_SOURCE_RUNNING PA_SOURCE_RUNNING
00943 #define PA_SOURCE_IDLE PA_SOURCE_IDLE
00944 #define PA_SOURCE_SUSPENDED PA_SOURCE_SUSPENDED
00945 #define PA_SOURCE_INIT PA_SOURCE_INIT
00946 #define PA_SOURCE_UNLINKED PA_SOURCE_UNLINKED
00947 #define PA_SOURCE_IS_OPENED PA_SOURCE_IS_OPENED
00948 
00951 typedef void (*pa_free_cb_t)(void *p);
00952 
00956 #define PA_STREAM_EVENT_REQUEST_CORK "request-cork"
00957 
00961 #define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork"
00962 
00968 #define PA_STREAM_EVENT_FORMAT_LOST "format-lost"
00969 
00970 PA_C_DECL_END
00971 
00972 #endif