|
PulseAudio
9.0
|
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