PulseAudio
2.0.0-1.mga2
|
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