PulseAudio 0.9.22
|
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 #include <time.h> 00029 00030 #include <pulse/cdecl.h> 00031 #include <pulse/sample.h> 00032 #include <pulse/version.h> 00033 00037 PA_C_DECL_BEGIN 00038 00040 typedef enum pa_context_state { 00041 PA_CONTEXT_UNCONNECTED, 00042 PA_CONTEXT_CONNECTING, 00043 PA_CONTEXT_AUTHORIZING, 00044 PA_CONTEXT_SETTING_NAME, 00045 PA_CONTEXT_READY, 00046 PA_CONTEXT_FAILED, 00047 PA_CONTEXT_TERMINATED 00048 } pa_context_state_t; 00049 00051 static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) { 00052 return 00053 x == PA_CONTEXT_CONNECTING || 00054 x == PA_CONTEXT_AUTHORIZING || 00055 x == PA_CONTEXT_SETTING_NAME || 00056 x == PA_CONTEXT_READY; 00057 } 00058 00060 #define PA_CONTEXT_UNCONNECTED PA_CONTEXT_UNCONNECTED 00061 #define PA_CONTEXT_CONNECTING PA_CONTEXT_CONNECTING 00062 #define PA_CONTEXT_AUTHORIZING PA_CONTEXT_AUTHORIZING 00063 #define PA_CONTEXT_SETTING_NAME PA_CONTEXT_SETTING_NAME 00064 #define PA_CONTEXT_READY PA_CONTEXT_READY 00065 #define PA_CONTEXT_FAILED PA_CONTEXT_FAILED 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_stream_direction { 00129 PA_STREAM_NODIRECTION, 00130 PA_STREAM_PLAYBACK, 00131 PA_STREAM_RECORD, 00132 PA_STREAM_UPLOAD 00133 } pa_stream_direction_t; 00134 00136 #define PA_STREAM_NODIRECTION PA_STREAM_NODIRECTION 00137 #define PA_STREAM_PLAYBACK PA_STREAM_PLAYBACK 00138 #define PA_STREAM_RECORD PA_STREAM_RECORD 00139 #define PA_STREAM_UPLOAD PA_STREAM_UPLOAD 00140 00143 typedef enum pa_stream_flags { 00144 00145 PA_STREAM_NOFLAGS = 0x0000U, 00148 PA_STREAM_START_CORKED = 0x0001U, 00152 PA_STREAM_INTERPOLATE_TIMING = 0x0002U, 00164 PA_STREAM_NOT_MONOTONIC = 0x0004U, 00176 PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U, 00183 PA_STREAM_NO_REMAP_CHANNELS = 0x0010U, 00189 PA_STREAM_NO_REMIX_CHANNELS = 0x0020U, 00195 PA_STREAM_FIX_FORMAT = 0x0040U, 00207 PA_STREAM_FIX_RATE = 0x0080U, 00213 PA_STREAM_FIX_CHANNELS = 0x0100, 00220 PA_STREAM_DONT_MOVE = 0x0200U, 00229 PA_STREAM_VARIABLE_RATE = 0x0400U, 00235 PA_STREAM_PEAK_DETECT = 0x0800U, 00238 PA_STREAM_START_MUTED = 0x1000U, 00244 PA_STREAM_ADJUST_LATENCY = 0x2000U, 00251 PA_STREAM_EARLY_REQUESTS = 0x4000U, 00268 PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U, 00273 PA_STREAM_START_UNMUTED = 0x10000U, 00279 PA_STREAM_FAIL_ON_SUSPEND = 0x20000U 00284 } pa_stream_flags_t; 00285 00288 /* English is an evil language */ 00289 #define PA_STREAM_NOT_MONOTONOUS PA_STREAM_NOT_MONOTONIC 00290 00291 /* Allow clients to check with #ifdef for those flags */ 00292 #define PA_STREAM_START_CORKED PA_STREAM_START_CORKED 00293 #define PA_STREAM_INTERPOLATE_TIMING PA_STREAM_INTERPOLATE_TIMING 00294 #define PA_STREAM_NOT_MONOTONIC PA_STREAM_NOT_MONOTONIC 00295 #define PA_STREAM_AUTO_TIMING_UPDATE PA_STREAM_AUTO_TIMING_UPDATE 00296 #define PA_STREAM_NO_REMAP_CHANNELS PA_STREAM_NO_REMAP_CHANNELS 00297 #define PA_STREAM_NO_REMIX_CHANNELS PA_STREAM_NO_REMIX_CHANNELS 00298 #define PA_STREAM_FIX_FORMAT PA_STREAM_FIX_FORMAT 00299 #define PA_STREAM_FIX_RATE PA_STREAM_FIX_RATE 00300 #define PA_STREAM_FIX_CHANNELS PA_STREAM_FIX_CHANNELS 00301 #define PA_STREAM_DONT_MOVE PA_STREAM_DONT_MOVE 00302 #define PA_STREAM_VARIABLE_RATE PA_STREAM_VARIABLE_RATE 00303 #define PA_STREAM_PEAK_DETECT PA_STREAM_PEAK_DETECT 00304 #define PA_STREAM_START_MUTED PA_STREAM_START_MUTED 00305 #define PA_STREAM_ADJUST_LATENCY PA_STREAM_ADJUST_LATENCY 00306 #define PA_STREAM_EARLY_REQUESTS PA_STREAM_EARLY_REQUESTS 00307 #define PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND 00308 #define PA_STREAM_START_UNMUTED PA_STREAM_START_UNMUTED 00309 #define PA_STREAM_FAIL_ON_SUSPEND PA_STREAM_FAIL_ON_SUSPEND 00310 00314 typedef struct pa_buffer_attr { 00315 uint32_t maxlength; 00320 uint32_t tlength; 00338 uint32_t prebuf; 00349 uint32_t minreq; 00359 uint32_t fragsize; 00373 } pa_buffer_attr; 00374 00376 enum { 00377 PA_OK = 0, 00378 PA_ERR_ACCESS, 00379 PA_ERR_COMMAND, 00380 PA_ERR_INVALID, 00381 PA_ERR_EXIST, 00382 PA_ERR_NOENTITY, 00383 PA_ERR_CONNECTIONREFUSED, 00384 PA_ERR_PROTOCOL, 00385 PA_ERR_TIMEOUT, 00386 PA_ERR_AUTHKEY, 00387 PA_ERR_INTERNAL, 00388 PA_ERR_CONNECTIONTERMINATED, 00389 PA_ERR_KILLED, 00390 PA_ERR_INVALIDSERVER, 00391 PA_ERR_MODINITFAILED, 00392 PA_ERR_BADSTATE, 00393 PA_ERR_NODATA, 00394 PA_ERR_VERSION, 00395 PA_ERR_TOOLARGE, 00396 PA_ERR_NOTSUPPORTED, 00397 PA_ERR_UNKNOWN, 00398 PA_ERR_NOEXTENSION, 00399 PA_ERR_OBSOLETE, 00400 PA_ERR_NOTIMPLEMENTED, 00401 PA_ERR_FORKED, 00402 PA_ERR_IO, 00403 PA_ERR_BUSY, 00404 PA_ERR_MAX 00405 }; 00406 00408 #define PA_OK PA_OK 00409 #define PA_ERR_ACCESS PA_ERR_ACCESS 00410 #define PA_ERR_COMMAND PA_ERR_COMMAND 00411 #define PA_ERR_INVALID PA_ERR_INVALID 00412 #define PA_ERR_EXIST PA_ERR_EXIST 00413 #define PA_ERR_NOENTITY PA_ERR_NOENTITY 00414 #define PA_ERR_CONNECTIONREFUSED PA_ERR_CONNECTIONREFUSED 00415 #define PA_ERR_PROTOCOL PA_ERR_PROTOCOL 00416 #define PA_ERR_TIMEOUT PA_ERR_TIMEOUT 00417 #define PA_ERR_AUTHKEY PA_ERR_AUTHKEY 00418 #define PA_ERR_INTERNAL PA_ERR_INTERNAL 00419 #define PA_ERR_CONNECTIONTERMINATED PA_ERR_CONNECTIONTERMINATED 00420 #define PA_ERR_KILLED PA_ERR_KILLED 00421 #define PA_ERR_INVALIDSERVER PA_ERR_INVALIDSERVER 00422 #define PA_ERR_MODINITFAILED PA_ERR_MODINITFAILED 00423 #define PA_ERR_BADSTATE PA_ERR_BADSTATE 00424 #define PA_ERR_NODATA PA_ERR_NODATA 00425 #define PA_ERR_VERSION PA_ERR_VERSION 00426 #define PA_ERR_TOOLARGE PA_ERR_TOOLARGE 00427 #define PA_ERR_NOTSUPPORTED PA_ERR_NOTSUPPORTED 00428 #define PA_ERR_UNKNOWN PA_ERR_UNKNOWN 00429 #define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION 00430 #define PA_ERR_OBSOLETE PA_ERR_OBSOLETE 00431 #define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED 00432 #define PA_ERR_FORKED PA_ERR_FORKED 00433 #define PA_ERR_MAX PA_ERR_MAX 00434 00437 typedef enum pa_subscription_mask { 00438 PA_SUBSCRIPTION_MASK_NULL = 0x0000U, 00441 PA_SUBSCRIPTION_MASK_SINK = 0x0001U, 00444 PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U, 00447 PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U, 00450 PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U, 00453 PA_SUBSCRIPTION_MASK_MODULE = 0x0010U, 00456 PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U, 00459 PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U, 00462 PA_SUBSCRIPTION_MASK_SERVER = 0x0080U, 00466 PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U, 00470 PA_SUBSCRIPTION_MASK_CARD = 0x0200U, 00473 PA_SUBSCRIPTION_MASK_ALL = 0x02ffU 00475 } pa_subscription_mask_t; 00476 00478 typedef enum pa_subscription_event_type { 00479 PA_SUBSCRIPTION_EVENT_SINK = 0x0000U, 00482 PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U, 00485 PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U, 00488 PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U, 00491 PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U, 00494 PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U, 00497 PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U, 00500 PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U, 00504 PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U, 00508 PA_SUBSCRIPTION_EVENT_CARD = 0x0009U, 00511 PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU, 00514 PA_SUBSCRIPTION_EVENT_NEW = 0x0000U, 00517 PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U, 00520 PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U, 00523 PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U 00526 } pa_subscription_event_type_t; 00527 00529 #define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK)))) 00530 00532 #define PA_SUBSCRIPTION_MASK_NULL PA_SUBSCRIPTION_MASK_NULL 00533 #define PA_SUBSCRIPTION_MASK_SINK PA_SUBSCRIPTION_MASK_SINK 00534 #define PA_SUBSCRIPTION_MASK_SOURCE PA_SUBSCRIPTION_MASK_SOURCE 00535 #define PA_SUBSCRIPTION_MASK_SINK_INPUT PA_SUBSCRIPTION_MASK_SINK_INPUT 00536 #define PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT 00537 #define PA_SUBSCRIPTION_MASK_MODULE PA_SUBSCRIPTION_MASK_MODULE 00538 #define PA_SUBSCRIPTION_MASK_CLIENT PA_SUBSCRIPTION_MASK_CLIENT 00539 #define PA_SUBSCRIPTION_MASK_SAMPLE_CACHE PA_SUBSCRIPTION_MASK_SAMPLE_CACHE 00540 #define PA_SUBSCRIPTION_MASK_SERVER PA_SUBSCRIPTION_MASK_SERVER 00541 #define PA_SUBSCRIPTION_MASK_AUTOLOAD PA_SUBSCRIPTION_MASK_AUTOLOAD 00542 #define PA_SUBSCRIPTION_MASK_CARD PA_SUBSCRIPTION_MASK_CARD 00543 #define PA_SUBSCRIPTION_MASK_ALL PA_SUBSCRIPTION_MASK_ALL 00544 #define PA_SUBSCRIPTION_EVENT_SINK PA_SUBSCRIPTION_EVENT_SINK 00545 #define PA_SUBSCRIPTION_EVENT_SOURCE PA_SUBSCRIPTION_EVENT_SOURCE 00546 #define PA_SUBSCRIPTION_EVENT_SINK_INPUT PA_SUBSCRIPTION_EVENT_SINK_INPUT 00547 #define PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT 00548 #define PA_SUBSCRIPTION_EVENT_MODULE PA_SUBSCRIPTION_EVENT_MODULE 00549 #define PA_SUBSCRIPTION_EVENT_CLIENT PA_SUBSCRIPTION_EVENT_CLIENT 00550 #define PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE 00551 #define PA_SUBSCRIPTION_EVENT_SERVER PA_SUBSCRIPTION_EVENT_SERVER 00552 #define PA_SUBSCRIPTION_EVENT_AUTOLOAD PA_SUBSCRIPTION_EVENT_AUTOLOAD 00553 #define PA_SUBSCRIPTION_EVENT_CARD PA_SUBSCRIPTION_EVENT_CARD 00554 #define PA_SUBSCRIPTION_EVENT_FACILITY_MASK PA_SUBSCRIPTION_EVENT_FACILITY_MASK 00555 #define PA_SUBSCRIPTION_EVENT_NEW PA_SUBSCRIPTION_EVENT_NEW 00556 #define PA_SUBSCRIPTION_EVENT_CHANGE PA_SUBSCRIPTION_EVENT_CHANGE 00557 #define PA_SUBSCRIPTION_EVENT_REMOVE PA_SUBSCRIPTION_EVENT_REMOVE 00558 #define PA_SUBSCRIPTION_EVENT_TYPE_MASK PA_SUBSCRIPTION_EVENT_TYPE_MASK 00559 00579 typedef struct pa_timing_info { 00580 struct timeval timestamp; 00583 int synchronized_clocks; 00590 pa_usec_t sink_usec; 00595 pa_usec_t source_usec; 00599 pa_usec_t transport_usec; 00603 int playing; 00610 int write_index_corrupt; 00617 int64_t write_index; 00623 int read_index_corrupt; 00628 int64_t read_index; 00634 pa_usec_t configured_sink_usec; 00637 pa_usec_t configured_source_usec; 00640 int64_t since_underrun; 00646 } pa_timing_info; 00647 00655 typedef struct pa_spawn_api { 00656 void (*prefork)(void); 00660 void (*postfork)(void); 00664 void (*atfork)(void); 00670 } pa_spawn_api; 00671 00673 typedef enum pa_seek_mode { 00674 PA_SEEK_RELATIVE = 0, 00677 PA_SEEK_ABSOLUTE = 1, 00680 PA_SEEK_RELATIVE_ON_READ = 2, 00683 PA_SEEK_RELATIVE_END = 3 00685 } pa_seek_mode_t; 00686 00688 #define PA_SEEK_RELATIVE PA_SEEK_RELATIVE 00689 #define PA_SEEK_ABSOLUTE PA_SEEK_ABSOLUTE 00690 #define PA_SEEK_RELATIVE_ON_READ PA_SEEK_RELATIVE_ON_READ 00691 #define PA_SEEK_RELATIVE_END PA_SEEK_RELATIVE_END 00692 00695 typedef enum pa_sink_flags { 00696 PA_SINK_NOFLAGS = 0x0000U, 00699 PA_SINK_HW_VOLUME_CTRL = 0x0001U, 00702 PA_SINK_LATENCY = 0x0002U, 00705 PA_SINK_HARDWARE = 0x0004U, 00709 PA_SINK_NETWORK = 0x0008U, 00712 PA_SINK_HW_MUTE_CTRL = 0x0010U, 00715 PA_SINK_DECIBEL_VOLUME = 0x0020U, 00719 PA_SINK_FLAT_VOLUME = 0x0040U, 00723 PA_SINK_DYNAMIC_LATENCY = 0x0080U 00726 } pa_sink_flags_t; 00727 00729 #define PA_SINK_HW_VOLUME_CTRL PA_SINK_HW_VOLUME_CTRL 00730 #define PA_SINK_LATENCY PA_SINK_LATENCY 00731 #define PA_SINK_HARDWARE PA_SINK_HARDWARE 00732 #define PA_SINK_NETWORK PA_SINK_NETWORK 00733 #define PA_SINK_HW_MUTE_CTRL PA_SINK_HW_MUTE_CTRL 00734 #define PA_SINK_DECIBEL_VOLUME PA_SINK_DECIBEL_VOLUME 00735 #define PA_SINK_FLAT_VOLUME PA_SINK_FLAT_VOLUME 00736 #define PA_SINK_DYNAMIC_LATENCY PA_SINK_DYNAMIC_LATENCY 00737 00740 typedef enum pa_sink_state { /* enum serialized in u8 */ 00741 PA_SINK_INVALID_STATE = -1, 00744 PA_SINK_RUNNING = 0, 00747 PA_SINK_IDLE = 1, 00750 PA_SINK_SUSPENDED = 2, 00754 /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT 00755 * SIDE! These values are *not* considered part of the official PA 00756 * API/ABI. If you use them your application might break when PA 00757 * is upgraded. Also, please note that these values are not useful 00758 * on the client side anyway. */ 00759 00760 PA_SINK_INIT = -2, 00763 PA_SINK_UNLINKED = -3 00767 } pa_sink_state_t; 00768 00770 static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) { 00771 return x == PA_SINK_RUNNING || x == PA_SINK_IDLE; 00772 } 00773 00775 #define PA_SINK_INVALID_STATE PA_SINK_INVALID_STATE 00776 #define PA_SINK_RUNNING PA_SINK_RUNNING 00777 #define PA_SINK_IDLE PA_SINK_IDLE 00778 #define PA_SINK_SUSPENDED PA_SINK_SUSPENDED 00779 #define PA_SINK_INIT PA_SINK_INIT 00780 #define PA_SINK_UNLINKED PA_SINK_UNLINKED 00781 #define PA_SINK_IS_OPENED PA_SINK_IS_OPENED 00782 00785 typedef enum pa_source_flags { 00786 PA_SOURCE_NOFLAGS = 0x0000U, 00789 PA_SOURCE_HW_VOLUME_CTRL = 0x0001U, 00792 PA_SOURCE_LATENCY = 0x0002U, 00795 PA_SOURCE_HARDWARE = 0x0004U, 00799 PA_SOURCE_NETWORK = 0x0008U, 00802 PA_SOURCE_HW_MUTE_CTRL = 0x0010U, 00805 PA_SOURCE_DECIBEL_VOLUME = 0x0020U, 00809 PA_SOURCE_DYNAMIC_LATENCY = 0x0040U 00812 } pa_source_flags_t; 00813 00815 #define PA_SOURCE_HW_VOLUME_CTRL PA_SOURCE_HW_VOLUME_CTRL 00816 #define PA_SOURCE_LATENCY PA_SOURCE_LATENCY 00817 #define PA_SOURCE_HARDWARE PA_SOURCE_HARDWARE 00818 #define PA_SOURCE_NETWORK PA_SOURCE_NETWORK 00819 #define PA_SOURCE_HW_MUTE_CTRL PA_SOURCE_HW_MUTE_CTRL 00820 #define PA_SOURCE_DECIBEL_VOLUME PA_SOURCE_DECIBEL_VOLUME 00821 #define PA_SOURCE_DYNAMIC_LATENCY PA_SOURCE_DYNAMIC_LATENCY 00822 00825 typedef enum pa_source_state { 00826 PA_SOURCE_INVALID_STATE = -1, 00829 PA_SOURCE_RUNNING = 0, 00832 PA_SOURCE_IDLE = 1, 00835 PA_SOURCE_SUSPENDED = 2, 00839 /* PRIVATE: Server-side values -- DO NOT USE THIS ON THE CLIENT 00840 * SIDE! These values are *not* considered part of the official PA 00841 * API/ABI. If you use them your application might break when PA 00842 * is upgraded. Also, please note that these values are not useful 00843 * on the client side anyway. */ 00844 00845 PA_SOURCE_INIT = -2, 00848 PA_SOURCE_UNLINKED = -3 00852 } pa_source_state_t; 00853 00855 static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) { 00856 return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE; 00857 } 00858 00860 #define PA_SOURCE_INVALID_STATE PA_SOURCE_INVALID_STATE 00861 #define PA_SOURCE_RUNNING PA_SOURCE_RUNNING 00862 #define PA_SOURCE_IDLE PA_SOURCE_IDLE 00863 #define PA_SOURCE_SUSPENDED PA_SOURCE_SUSPENDED 00864 #define PA_SOURCE_INIT PA_SOURCE_INIT 00865 #define PA_SOURCE_UNLINKED PA_SOURCE_UNLINKED 00866 #define PA_SOURCE_IS_OPENED PA_SOURCE_IS_OPENED 00867 00870 typedef void (*pa_free_cb_t)(void *p); 00871 00875 #define PA_STREAM_EVENT_REQUEST_CORK "request-cork" 00876 00880 #define PA_STREAM_EVENT_REQUEST_UNCORK "request-uncork" 00881 00882 PA_C_DECL_END 00883 00884 #endif