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