reindent comments a bit

This commit is contained in:
Lennart Poettering 2008-09-03 18:51:46 +02:00
parent 40b66a0be9
commit c402de7545
5 changed files with 330 additions and 215 deletions

View file

@ -142,21 +142,34 @@ typedef enum pa_channel_position {
/** A list of channel mapping definitions for pa_channel_map_init_auto() */ /** A list of channel mapping definitions for pa_channel_map_init_auto() */
typedef enum pa_channel_map_def { typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF, /**< The mapping from RFC3551, which is based on AIFF-C */ PA_CHANNEL_MAP_AIFF,
PA_CHANNEL_MAP_ALSA, /**< The default mapping used by ALSA */ /**< The mapping from RFC3551, which is based on AIFF-C */
PA_CHANNEL_MAP_AUX, /**< Only aux channels */
PA_CHANNEL_MAP_WAVEEX, /**< Microsoft's WAVEFORMATEXTENSIBLE mapping */
PA_CHANNEL_MAP_OSS, /**< The default channel mapping used by OSS as defined in the OSS 4.0 API specs */
PA_CHANNEL_MAP_DEFAULT = PA_CHANNEL_MAP_AIFF /**< The default channel map */ PA_CHANNEL_MAP_ALSA,
/**< The default mapping used by ALSA */
PA_CHANNEL_MAP_AUX,
/**< Only aux channels */
PA_CHANNEL_MAP_WAVEEX,
/**< Microsoft's WAVEFORMATEXTENSIBLE mapping */
PA_CHANNEL_MAP_OSS,
/**< The default channel mapping used by OSS as defined in the OSS 4.0 API specs */
PA_CHANNEL_MAP_DEFAULT = PA_CHANNEL_MAP_AIFF
/**< The default channel map */
} pa_channel_map_def_t; } pa_channel_map_def_t;
/** A channel map which can be used to attach labels to specific /** A channel map which can be used to attach labels to specific
* channels of a stream. These values are relevant for conversion and * channels of a stream. These values are relevant for conversion and
* mixing of streams */ * mixing of streams */
typedef struct pa_channel_map { typedef struct pa_channel_map {
uint8_t channels; /**< Number of channels */ uint8_t channels;
pa_channel_position_t map[PA_CHANNELS_MAX]; /**< Channel labels */ /**< Number of channels */
pa_channel_position_t map[PA_CHANNELS_MAX];
/**< Channel labels */
} pa_channel_map; } pa_channel_map;
/** Initialize the specified channel map and return a pointer to it */ /** Initialize the specified channel map and return a pointer to it */

View file

@ -57,7 +57,7 @@ static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
/** The state of a stream */ /** The state of a stream */
typedef enum pa_stream_state { typedef enum pa_stream_state {
PA_STREAM_UNCONNECTED, /**< The stream is not yet connected to any sink or source */ PA_STREAM_UNCONNECTED, /**< The stream is not yet connected to any sink or source */
PA_STREAM_CREATING, /**< The stream is being created */ PA_STREAM_CREATING, /**< The stream is being created */
PA_STREAM_READY, /**< The stream is established, you may pass audio data to it now */ PA_STREAM_READY, /**< The stream is established, you may pass audio data to it now */
PA_STREAM_FAILED, /**< An error occured that made the stream invalid */ PA_STREAM_FAILED, /**< An error occured that made the stream invalid */
@ -83,7 +83,8 @@ typedef enum pa_operation_state {
/** Some special flags for contexts. */ /** Some special flags for contexts. */
typedef enum pa_context_flags { typedef enum pa_context_flags {
PA_CONTEXT_NOAUTOSPAWN = 1 /**< Disabled autospawning of the PulseAudio daemon if required */ PA_CONTEXT_NOAUTOSPAWN = 1
/**< Disabled autospawning of the PulseAudio daemon if required */
} pa_context_flags_t; } pa_context_flags_t;
/** The direction of a pa_stream object */ /** The direction of a pa_stream object */
@ -225,87 +226,64 @@ typedef enum pa_stream_flags {
/** Playback and record buffer metrics */ /** Playback and record buffer metrics */
typedef struct pa_buffer_attr { typedef struct pa_buffer_attr {
uint32_t maxlength; /**< Maximum length of the uint32_t maxlength;
* buffer. Setting this to (uint32_t) -1 will /**< Maximum length of the buffer. Setting this to (uint32_t) -1
* initialize this to the maximum value * will initialize this to the maximum value supported by server,
* supported by server, which is * which is recommended. */
* recommended. */
uint32_t tlength; /**< Playback only: target length of the uint32_t tlength;
* buffer. The server tries to assure /**< Playback only: target length of the buffer. The server tries
* that at least tlength bytes are always * to assure that at least tlength bytes are always available in
* available in the per-stream * the per-stream server-side playback buffer. It is recommended
* server-side playback buffer. It is * to set this to (uint32_t) -1, which will initialize this to a
* recommended to set this to (uint32_t) * value that is deemed sensible by the server. However, this
* -1, which will initialize this to a * value will default to something like 2s, i.e. for applications
* value that is deemed sensible by the * that have specific latency requirements this value should be
* server. However, this value will * set to the maximum latency that the application can deal
* default to something like 2s, i.e. for * with. When PA_STREAM_ADJUST_LATENCY is not set this value will
* applications that have specific * influence only the per-stream playback buffer size. When
* latency requirements this value should * PA_STREAM_ADJUST_LATENCY is set the overall latency of the sink
* be set to the maximum latency that the * plus the playback buffer size is configured to this value. Set
* application can deal with. When * PA_STREAM_ADJUST_LATENCY if you are interested in adjusting the
* PA_STREAM_ADJUST_LATENCY is not set * overall latency. Don't set it if you are interested in
* this value will influence only the * configuring the server-sider per-stream playback buffer
* per-stream playback buffer size. When * size. */
* PA_STREAM_ADJUST_LATENCY is set the
* overall latency of the sink plus the uint32_t prebuf;
* playback buffer size is configured to /**< Playback only: pre-buffering. The server does not start with
* this value. Set * playback before at least prebug bytes are available in the
* PA_STREAM_ADJUST_LATENCY if you are * buffer. It is recommended to set this to (uint32_t) -1, which
* interested in adjusting the overall * will initialize this to the same value as tlength, whatever
* latency. Don't set it if you are * that may be. Initialize to 0 to enable manual start/stop
* interested in configuring the * control of the stream. This means that playback will not stop
* server-sider per-stream playback * on underrun and playback will not start automatically. Instead
* buffer size. */ * pa_stream_corked() needs to be called explicitly. If you set
uint32_t prebuf; /**< Playback only: pre-buffering. The * this value to 0 you should also set PA_STREAM_START_CORKED. */
* server does not start with playback
* before at least prebug bytes are uint32_t minreq;
* available in the buffer. It is /**< Playback only: minimum request. The server does not request
* recommended to set this to (uint32_t) * less than minreq bytes from the client, instead waits until the
* -1, which will initialize this to the * buffer is free enough to request more bytes at once. It is
* same value as tlength, whatever that * recommended to set this to (uint32_t) -1, which will initialize
* may be. Initialize to 0 to enable * this to a value that is deemed sensible by the server. This
* manual start/stop control of the * should be set to a value that gives PulseAudio enough time to
* stream. This means that playback will * move the data from the per-stream playback buffer into the
* not stop on underrun and playback will * hardware playback buffer. */
* not start automatically. Instead
* pa_stream_corked() needs to be called uint32_t fragsize;
* explicitly. If you set this value to 0 /**< Recording only: fragment size. The server sends data in
* you should also set * blocks of fragsize bytes size. Large values deminish
* PA_STREAM_START_CORKED. */ * interactivity with other operations on the connection context
uint32_t minreq; /**< Playback only: minimum request. The * but decrease control overhead. It is recommended to set this to
* server does not request less than * (uint32_t) -1, which will initialize this to a value that is
* minreq bytes from the client, instead * deemed sensible by the server. However, this value will default
* waits until the buffer is free enough * to something like 2s, i.e. for applications that have specific
* to request more bytes at once. It is * latency requirements this value should be set to the maximum
* recommended to set this to (uint32_t) * latency that the application can deal with. If
* -1, which will initialize this to a * PA_STREAM_ADJUST_LATENCY is set the overall source latency will
* value that is deemed sensible by the * be adjusted according to this value. If it is not set the
* server. This should be set to a value * source latency is left unmodified. */
* that gives PulseAudio enough time to
* move the data from the per-stream
* playback buffer into the hardware
* playback buffer. */
uint32_t fragsize; /**< Recording only: fragment size. The
* server sends data in blocks of
* fragsize bytes size. Large values
* deminish interactivity with other
* operations on the connection context
* but decrease control overhead. It is
* recommended to set this to (uint32_t)
* -1, which will initialize this to a
* value that is deemed sensible by the
* server. However, this value will
* default to something like 2s, i.e. for
* applications that have specific
* latency requirements this value should
* be set to the maximum latency that the
* application can deal with. If
* PA_STREAM_ADJUST_LATENCY is set the
* overall source latency will be
* adjusted according to this value. If
* it is not set the source latency is
* left unmodified. */
} pa_buffer_attr; } pa_buffer_attr;
/** Error values as used by pa_context_errno(). Use pa_strerror() to convert these values to human readable strings */ /** Error values as used by pa_context_errno(). Use pa_strerror() to convert these values to human readable strings */
@ -337,36 +315,84 @@ enum {
/** Subscription event mask, as used by pa_context_subscribe() */ /** Subscription event mask, as used by pa_context_subscribe() */
typedef enum pa_subscription_mask { typedef enum pa_subscription_mask {
PA_SUBSCRIPTION_MASK_NULL = 0, /**< No events */ PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
PA_SUBSCRIPTION_MASK_SINK = 1, /**< Sink events */ /**< No events */
PA_SUBSCRIPTION_MASK_SOURCE = 2, /**< Source events */
PA_SUBSCRIPTION_MASK_SINK_INPUT = 4, /**< Sink input events */ PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 8, /**< Source output events */ /**< Sink events */
PA_SUBSCRIPTION_MASK_MODULE = 16, /**< Module events */
PA_SUBSCRIPTION_MASK_CLIENT = 32, /**< Client events */ PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 64, /**< Sample cache events */ /**< Source events */
PA_SUBSCRIPTION_MASK_SERVER = 128, /**< Other global server changes. */
PA_SUBSCRIPTION_MASK_AUTOLOAD = 256, /**< Autoload table events. */ PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
PA_SUBSCRIPTION_MASK_ALL = 511 /**< Catch all events */ /**< Sink input events */
PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
/**< Source output events */
PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
/**< Module events */
PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
/**< Client events */
PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
/**< Sample cache events */
PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
/**< Other global server changes. */
PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
/**< Autoload table events. */
PA_SUBSCRIPTION_MASK_ALL = 0x01ffU
/**< Catch all events */
} pa_subscription_mask_t; } pa_subscription_mask_t;
/** Subscription event types, as used by pa_context_subscribe() */ /** Subscription event types, as used by pa_context_subscribe() */
typedef enum pa_subscription_event_type { typedef enum pa_subscription_event_type {
PA_SUBSCRIPTION_EVENT_SINK = 0, /**< Event type: Sink */ PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
PA_SUBSCRIPTION_EVENT_SOURCE = 1, /**< Event type: Source */ /**< Event type: Sink */
PA_SUBSCRIPTION_EVENT_SINK_INPUT = 2, /**< Event type: Sink input */
PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 3, /**< Event type: Source output */ PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
PA_SUBSCRIPTION_EVENT_MODULE = 4, /**< Event type: Module */ /**< Event type: Source */
PA_SUBSCRIPTION_EVENT_CLIENT = 5, /**< Event type: Client */
PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 6, /**< Event type: Sample cache item */ PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
PA_SUBSCRIPTION_EVENT_SERVER = 7, /**< Event type: Global server change, only occuring with PA_SUBSCRIPTION_EVENT_CHANGE. */ /**< Event type: Sink input */
PA_SUBSCRIPTION_EVENT_AUTOLOAD = 8, /**< Event type: Autoload table changes. */
PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 15, /**< A mask to extract the event type from an event value */ PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
/**< Event type: Source output */
PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
/**< Event type: Module */
PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
/**< Event type: Client */
PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
/**< Event type: Sample cache item */
PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
/**< Event type: Global server change, only occuring with PA_SUBSCRIPTION_EVENT_CHANGE. */
PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
/**< Event type: Autoload table changes. */
PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
/**< A mask to extract the event type from an event value */
PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
/**< A new object was created */
PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
/**< A property of the object was modified */
PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
/**< An object was removed */
PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U,
/**< A mask to extract the event operation from an event value */
PA_SUBSCRIPTION_EVENT_NEW = 0, /**< A new object was created */
PA_SUBSCRIPTION_EVENT_CHANGE = 16, /**< A property of the object was modified */
PA_SUBSCRIPTION_EVENT_REMOVE = 32, /**< An object was removed */
PA_SUBSCRIPTION_EVENT_TYPE_MASK = 16+32 /**< A mask to extract the event operation from an event value */
} pa_subscription_event_type_t; } pa_subscription_event_type_t;
/** Return one if an event type t matches an event mask bitfield */ /** Return one if an event type t matches an event mask bitfield */
@ -391,69 +417,71 @@ typedef enum pa_subscription_event_type {
* note that this structure can be extended as part of evolutionary * note that this structure can be extended as part of evolutionary
* API updates at any time in any new release.*/ * API updates at any time in any new release.*/
typedef struct pa_timing_info { typedef struct pa_timing_info {
struct timeval timestamp; /**< The time when this timing info structure was current */ struct timeval timestamp;
int synchronized_clocks; /**< Non-zero if the local and the /**< The time when this timing info structure was current */
* remote machine have synchronized
* clocks. If synchronized clocks are
* detected transport_usec becomes much
* more reliable. However, the code that
* detects synchronized clocks is very
* limited und unreliable itself. */
pa_usec_t sink_usec; /**< Time in usecs a sample takes to be played on the sink. For playback streams and record streams connected to a monitor source. */ int synchronized_clocks;
pa_usec_t source_usec; /**< Time in usecs a sample takes from being recorded to being delivered to the application. Only for record streams. */ /**< Non-zero if the local and the remote machine have
pa_usec_t transport_usec; /**< Estimated time in usecs a sample takes to be transferred to/from the daemon. For both playback and record streams. */ * synchronized clocks. If synchronized clocks are detected
* transport_usec becomes much more reliable. However, the code
* that detects synchronized clocks is very limited und unreliable
* itself. */
int playing; /**< Non-zero when the stream is pa_usec_t sink_usec;
* currently not underrun and data is /**< Time in usecs a sample takes to be played on the sink. For
* being passed on to the device. Only * playback streams and record streams connected to a monitor
* for playback streams. This field does * source. */
* not say whether the data is actually
* already being played. To determine
* this check whether since_underrun
* (converted to usec) is larger than
* sink_usec.*/
int write_index_corrupt; /**< Non-zero if write_index is not pa_usec_t source_usec;
* up-to-date because a local write /**< Time in usecs a sample takes from being recorded to being
* command that corrupted it has been * delivered to the application. Only for record streams. */
* issued in the time since this latency
* info was current . Only write
* commands with SEEK_RELATIVE_ON_READ
* and SEEK_RELATIVE_END can corrupt
* write_index. */
int64_t write_index; /**< Current write index into the
* playback buffer in bytes. Think twice before
* using this for seeking purposes: it
* might be out of date a the time you
* want to use it. Consider using
* PA_SEEK_RELATIVE instead. */
int read_index_corrupt; /**< Non-zero if read_index is not pa_usec_t transport_usec;
* up-to-date because a local pause or /**< Estimated time in usecs a sample takes to be transferred
* flush request that corrupted it has * to/from the daemon. For both playback and record streams. */
* been issued in the time since this
* latency info was current. */
int64_t read_index; /**< Current read index into the int playing;
* playback buffer in bytes. Think twice before /**< Non-zero when the stream is currently not underrun and data
* using this for seeking purposes: it * is being passed on to the device. Only for playback
* might be out of date a the time you * streams. This field does not say whether the data is actually
* want to use it. Consider using * already being played. To determine this check whether
* PA_SEEK_RELATIVE_ON_READ * since_underrun (converted to usec) is larger than sink_usec.*/
* instead. */
pa_usec_t configured_sink_usec; /**< The configured latency for int write_index_corrupt;
* the sink. \since 0.9.11 */ /**< Non-zero if write_index is not up-to-date because a local
pa_usec_t configured_source_usec; /**< The configured latency for * write command that corrupted it has been issued in the time
* the source. \since 0.9.11 */ * since this latency info was current . Only write commands with
* SEEK_RELATIVE_ON_READ and SEEK_RELATIVE_END can corrupt
* write_index. */
int64_t since_underrun; /**< Bytes that were handed to the sink int64_t write_index;
since the last underrun happened, or /**< Current write index into the playback buffer in bytes. Think
since playback started again after * twice before using this for seeking purposes: it might be out
the last underrun. playing will tell * of date a the time you want to use it. Consider using
you which case it is. \since * PA_SEEK_RELATIVE instead. */
0.9.11 */
int read_index_corrupt;
/**< Non-zero if read_index is not up-to-date because a local
* pause or flush request that corrupted it has been issued in the
* time since this latency info was current. */
int64_t read_index;
/**< Current read index into the playback buffer in bytes. Think
* twice before using this for seeking purposes: it might be out
* of date a the time you want to use it. Consider using
* PA_SEEK_RELATIVE_ON_READ instead. */
pa_usec_t configured_sink_usec;
/**< The configured latency for the sink. \since 0.9.11 */
pa_usec_t configured_source_usec;
/**< The configured latency for * the source. \since 0.9.11 */
int64_t since_underrun;
/**< Bytes that were handed to the sink since the last underrun
* happened, or since playback started again after the last
* underrun. playing will tell you which case it is. \since
* 0.9.11 */
} pa_timing_info; } pa_timing_info;
@ -465,43 +493,81 @@ typedef struct pa_timing_info {
* thread compatible way. You might have to do this in * thread compatible way. You might have to do this in
* prefork/postfork. */ * prefork/postfork. */
typedef struct pa_spawn_api { typedef struct pa_spawn_api {
void (*prefork)(void); /**< Is called just before the fork in the parent process. May be NULL. */ void (*prefork)(void);
void (*postfork)(void); /**< Is called immediately after the fork in the parent process. May be NULL.*/ /**< Is called just before the fork in the parent process. May be
void (*atfork)(void); /**< Is called immediately after the * NULL. */
* fork in the child process. May be
* NULL. It is not safe to close all void (*postfork)(void);
* file descriptors in this function /**< Is called immediately after the fork in the parent
* unconditionally, since a UNIX socket * process. May be NULL.*/
* (created using socketpair()) is
* passed to the new process. */ void (*atfork)(void);
/**< Is called immediately after the fork in the child
* process. May be NULL. It is not safe to close all file
* descriptors in this function unconditionally, since a UNIX
* socket (created using socketpair()) is passed to the new
* process. */
} pa_spawn_api; } pa_spawn_api;
/** Seek type for pa_stream_write(). */ /** Seek type for pa_stream_write(). */
typedef enum pa_seek_mode { typedef enum pa_seek_mode {
PA_SEEK_RELATIVE = 0, /**< Seek relatively to the write index */ PA_SEEK_RELATIVE = 0,
PA_SEEK_ABSOLUTE = 1, /**< Seek relatively to the start of the buffer queue */ /**< Seek relatively to the write index */
PA_SEEK_RELATIVE_ON_READ = 2, /**< Seek relatively to the read index. */
PA_SEEK_RELATIVE_END = 3 /**< Seek relatively to the current end of the buffer queue. */ PA_SEEK_ABSOLUTE = 1,
/**< Seek relatively to the start of the buffer queue */
PA_SEEK_RELATIVE_ON_READ = 2,
/**< Seek relatively to the read index. */
PA_SEEK_RELATIVE_END = 3
/**< Seek relatively to the current end of the buffer queue. */
} pa_seek_mode_t; } pa_seek_mode_t;
/** Special sink flags. */ /** Special sink flags. */
typedef enum pa_sink_flags { typedef enum pa_sink_flags {
PA_SINK_HW_VOLUME_CTRL = 1, /**< Supports hardware volume control */ PA_SINK_HW_VOLUME_CTRL = 0x0001U,
PA_SINK_LATENCY = 2, /**< Supports latency querying */ /**< Supports hardware volume control */
PA_SINK_HARDWARE = 4, /**< Is a hardware sink of some kind, in contrast to "virtual"/software sinks \since 0.9.3 */
PA_SINK_NETWORK = 8, /**< Is a networked sink of some kind. \since 0.9.7 */ PA_SINK_LATENCY = 0x0002U,
PA_SINK_HW_MUTE_CTRL = 16, /**< Supports hardware mute control \since 0.9.11 */ /**< Supports latency querying */
PA_SINK_DECIBEL_VOLUME = 32 /**< Volume can be translated to dB with pa_sw_volume_to_dB() \since 0.9.11 */
PA_SINK_HARDWARE = 0x0004U,
/**< Is a hardware sink of some kind, in contrast to
* "virtual"/software sinks \since 0.9.3 */
PA_SINK_NETWORK = 0x0008U,
/**< Is a networked sink of some kind. \since 0.9.7 */
PA_SINK_HW_MUTE_CTRL = 0x0010U,
/**< Supports hardware mute control \since 0.9.11 */
PA_SINK_DECIBEL_VOLUME = 0x0020U
/**< Volume can be translated to dB with pa_sw_volume_to_dB()
* \since 0.9.11 */
} pa_sink_flags_t; } pa_sink_flags_t;
/** Special source flags. */ /** Special source flags. */
typedef enum pa_source_flags { typedef enum pa_source_flags {
PA_SOURCE_HW_VOLUME_CTRL = 1, /**< Supports hardware volume control */ PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
PA_SOURCE_LATENCY = 2, /**< Supports latency querying */ /**< Supports hardware volume control */
PA_SOURCE_HARDWARE = 4, /**< Is a hardware source of some kind, in contrast to "virtual"/software source \since 0.9.3 */
PA_SOURCE_NETWORK = 8, /**< Is a networked sink of some kind. \since 0.9.7 */ PA_SOURCE_LATENCY = 0x0002U,
PA_SOURCE_HW_MUTE_CTRL = 16, /**< Supports hardware mute control \since 0.9.11 */ /**< Supports latency querying */
PA_SOURCE_DECIBEL_VOLUME = 32 /**< Volume can be translated to dB with pa_sw_volume_to_dB() \since 0.9.11 */
PA_SOURCE_HARDWARE = 0x0004U,
/**< Is a hardware source of some kind, in contrast to
* "virtual"/software source \since 0.9.3 */
PA_SOURCE_NETWORK = 0x0008U,
/**< Is a networked sink of some kind. \since 0.9.7 */
PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
/**< Supports hardware mute control \since 0.9.11 */
PA_SOURCE_DECIBEL_VOLUME = 0x0020U
/**< Volume can be translated to dB with pa_sw_volume_to_dB()
* \since 0.9.11 */
} pa_source_flags_t; } pa_source_flags_t;
/** A generic free() like callback prototype */ /** A generic free() like callback prototype */

View file

@ -561,7 +561,7 @@ typedef enum pa_autoload_type {
typedef struct pa_autoload_info { typedef struct pa_autoload_info {
uint32_t index; /**< Index of this autoload entry */ uint32_t index; /**< Index of this autoload entry */
const char *name; /**< Name of the sink or source */ const char *name; /**< Name of the sink or source */
pa_autoload_type_t type; /**< Type of the autoload entry */ pa_autoload_type_t type; /**< Type of the autoload entry */
const char *module; /**< Module name to load */ const char *module; /**< Module name to load */
const char *argument; /**< Argument string for module */ const char *argument; /**< Argument string for module */
} pa_autoload_info; } pa_autoload_info;

View file

@ -168,9 +168,19 @@ int pa_proplist_get(pa_proplist *p, const char *key, const void **data, size_t *
/** Update mode enum for pa_proplist_update(). \since 0.9.11 */ /** Update mode enum for pa_proplist_update(). \since 0.9.11 */
typedef enum pa_update_mode { typedef enum pa_update_mode {
PA_UPDATE_SET, /*< Replace the entirey property list with the new one. Don't keep any of the old data around */ PA_UPDATE_SET,
PA_UPDATE_MERGE, /*< Merge new property list into the existing one, not replacing any old entries if they share a common key with the new property list. */ /*< Replace the entirey property list with the new one. Don't keep
PA_UPDATE_REPLACE /*< Merge new property list into the existing one, replacing all old entries that share a common key with the new property list. */ * any of the old data around */
PA_UPDATE_MERGE,
/*< Merge new property list into the existing one, not replacing
* any old entries if they share a common key with the new
* property list. */
PA_UPDATE_REPLACE
/*< Merge new property list into the existing one, replacing all
* old entries that share a common key with the new property
* list. */
} pa_update_mode_t; } pa_update_mode_t;
/** Merge property list "other" into "p", adhering the merge mode as /** Merge property list "other" into "p", adhering the merge mode as

View file

@ -120,17 +120,38 @@ PA_C_DECL_BEGIN
/** Sample format */ /** Sample format */
typedef enum pa_sample_format { typedef enum pa_sample_format {
PA_SAMPLE_U8, /**< Unsigned 8 Bit PCM */ PA_SAMPLE_U8,
PA_SAMPLE_ALAW, /**< 8 Bit a-Law */ /**< Unsigned 8 Bit PCM */
PA_SAMPLE_ULAW, /**< 8 Bit mu-Law */
PA_SAMPLE_S16LE, /**< Signed 16 Bit PCM, little endian (PC) */ PA_SAMPLE_ALAW,
PA_SAMPLE_S16BE, /**< Signed 16 Bit PCM, big endian */ /**< 8 Bit a-Law */
PA_SAMPLE_FLOAT32LE, /**< 32 Bit IEEE floating point, little endian, range -1 to 1 */
PA_SAMPLE_FLOAT32BE, /**< 32 Bit IEEE floating point, big endian, range -1 to 1 */ PA_SAMPLE_ULAW,
PA_SAMPLE_S32LE, /**< Signed 32 Bit PCM, little endian (PC) */ /**< 8 Bit mu-Law */
PA_SAMPLE_S32BE, /**< Signed 32 Bit PCM, big endian (PC) */
PA_SAMPLE_MAX, /**< Upper limit of valid sample types */ PA_SAMPLE_S16LE,
PA_SAMPLE_INVALID = -1 /**< An invalid value */ /**< Signed 16 Bit PCM, little endian (PC) */
PA_SAMPLE_S16BE,
/**< Signed 16 Bit PCM, big endian */
PA_SAMPLE_FLOAT32LE,
/**< 32 Bit IEEE floating point, little endian, range -1 to 1 */
PA_SAMPLE_FLOAT32BE,
/**< 32 Bit IEEE floating point, big endian, range -1 to 1 */
PA_SAMPLE_S32LE,
/**< Signed 32 Bit PCM, little endian (PC) */
PA_SAMPLE_S32BE,
/**< Signed 32 Bit PCM, big endian (PC) */
PA_SAMPLE_MAX,
/**< Upper limit of valid sample types */
PA_SAMPLE_INVALID = -1
/**< An invalid value */
} pa_sample_format_t; } pa_sample_format_t;
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
@ -166,9 +187,14 @@ typedef enum pa_sample_format {
/** A sample format and attribute specification */ /** A sample format and attribute specification */
typedef struct pa_sample_spec { typedef struct pa_sample_spec {
pa_sample_format_t format; /**< The sample format */ pa_sample_format_t format;
uint32_t rate; /**< The sample rate. (e.g. 44100) */ /**< The sample format */
uint8_t channels; /**< Audio channels. (1 for mono, 2 for stereo, ...) */
uint32_t rate;
/**< The sample rate. (e.g. 44100) */
uint8_t channels;
/**< Audio channels. (1 for mono, 2 for stereo, ...) */
} pa_sample_spec; } pa_sample_spec;
/** Type for usec specifications (unsigned). Always 64 bit. */ /** Type for usec specifications (unsigned). Always 64 bit. */