PulseAudio  5.0
def.h File Reference

Global definitions. More...

Go to the source code of this file.

Data Structures

struct  pa_buffer_attr
 Playback and record buffer metrics. More...
 
struct  pa_timing_info
 A structure for all kinds of timing information of a stream. More...
 
struct  pa_spawn_api
 A structure for the spawn api. More...
 

Macros

#define PA_INVALID_INDEX   ((uint32_t) -1)
 An invalid index. More...
 
#define pa_subscription_match_flags(m, t)   (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
 Return one if an event type t matches an event mask bitfield. More...
 
#define PA_STREAM_EVENT_REQUEST_CORK   "request-cork"
 A stream policy/meta event requesting that an application should cork a specific stream. More...
 
#define PA_STREAM_EVENT_REQUEST_UNCORK   "request-uncork"
 A stream policy/meta event requesting that an application should cork a specific stream. More...
 
#define PA_STREAM_EVENT_FORMAT_LOST   "format-lost"
 A stream event notifying that the stream is going to be disconnected because the underlying sink changed and no longer supports the format that was originally negotiated. More...
 

Typedefs

typedef enum pa_context_state pa_context_state_t
 The state of a connection context. More...
 
typedef enum pa_stream_state pa_stream_state_t
 The state of a stream. More...
 
typedef enum pa_operation_state pa_operation_state_t
 The state of an operation. More...
 
typedef enum pa_context_flags pa_context_flags_t
 Some special flags for contexts. More...
 
typedef enum pa_direction pa_direction_t
 Direction bitfield - while we currently do not expose anything bidirectional, one should test against the bit instead of the value (e.g. if (d & PA_DIRECTION_OUTPUT)), because we might add bidirectional stuff in the future. More...
 
typedef enum pa_device_type pa_device_type_t
 The type of device we are dealing with. More...
 
typedef enum pa_stream_direction pa_stream_direction_t
 The direction of a pa_stream object. More...
 
typedef enum pa_stream_flags pa_stream_flags_t
 Some special flags for stream connections. More...
 
typedef struct pa_buffer_attr pa_buffer_attr
 Playback and record buffer metrics. More...
 
typedef enum pa_error_code pa_error_code_t
 Error values as used by pa_context_errno(). More...
 
typedef enum pa_subscription_mask pa_subscription_mask_t
 Subscription event mask, as used by pa_context_subscribe() More...
 
typedef enum
pa_subscription_event_type 
pa_subscription_event_type_t
 Subscription event types, as used by pa_context_subscribe() More...
 
typedef struct pa_timing_info pa_timing_info
 A structure for all kinds of timing information of a stream. More...
 
typedef struct pa_spawn_api pa_spawn_api
 A structure for the spawn api. More...
 
typedef enum pa_seek_mode pa_seek_mode_t
 Seek type for pa_stream_write(). More...
 
typedef enum pa_sink_flags pa_sink_flags_t
 Special sink flags. More...
 
typedef enum pa_sink_state pa_sink_state_t
 Sink state. More...
 
typedef enum pa_source_flags pa_source_flags_t
 Special source flags. More...
 
typedef enum pa_source_state pa_source_state_t
 Source state. More...
 
typedef void(* pa_free_cb_t )(void *p)
 A generic free() like callback prototype. More...
 
typedef enum pa_port_available pa_port_available_t
 Port availability / jack detection status. More...
 

Enumerations

enum  pa_context_state {
  PA_CONTEXT_UNCONNECTED,
  PA_CONTEXT_CONNECTING,
  PA_CONTEXT_AUTHORIZING,
  PA_CONTEXT_SETTING_NAME,
  PA_CONTEXT_READY,
  PA_CONTEXT_FAILED,
  PA_CONTEXT_TERMINATED
}
 The state of a connection context. More...
 
enum  pa_stream_state {
  PA_STREAM_UNCONNECTED,
  PA_STREAM_CREATING,
  PA_STREAM_READY,
  PA_STREAM_FAILED,
  PA_STREAM_TERMINATED
}
 The state of a stream. More...
 
enum  pa_operation_state {
  PA_OPERATION_RUNNING,
  PA_OPERATION_DONE,
  PA_OPERATION_CANCELLED
}
 The state of an operation. More...
 
enum  pa_context_flags {
  PA_CONTEXT_NOFLAGS = 0x0000U,
  PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
  PA_CONTEXT_NOFAIL = 0x0002U
}
 Some special flags for contexts. More...
 
enum  pa_direction {
  PA_DIRECTION_OUTPUT = 0x0001U,
  PA_DIRECTION_INPUT = 0x0002U
}
 Direction bitfield - while we currently do not expose anything bidirectional, one should test against the bit instead of the value (e.g. if (d & PA_DIRECTION_OUTPUT)), because we might add bidirectional stuff in the future. More...
 
enum  pa_device_type {
  PA_DEVICE_TYPE_SINK,
  PA_DEVICE_TYPE_SOURCE
}
 The type of device we are dealing with. More...
 
enum  pa_stream_direction {
  PA_STREAM_NODIRECTION,
  PA_STREAM_PLAYBACK,
  PA_STREAM_RECORD,
  PA_STREAM_UPLOAD
}
 The direction of a pa_stream object. More...
 
enum  pa_stream_flags {
  PA_STREAM_NOFLAGS = 0x0000U,
  PA_STREAM_START_CORKED = 0x0001U,
  PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
  PA_STREAM_NOT_MONOTONIC = 0x0004U,
  PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
  PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
  PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
  PA_STREAM_FIX_FORMAT = 0x0040U,
  PA_STREAM_FIX_RATE = 0x0080U,
  PA_STREAM_FIX_CHANNELS = 0x0100,
  PA_STREAM_DONT_MOVE = 0x0200U,
  PA_STREAM_VARIABLE_RATE = 0x0400U,
  PA_STREAM_PEAK_DETECT = 0x0800U,
  PA_STREAM_START_MUTED = 0x1000U,
  PA_STREAM_ADJUST_LATENCY = 0x2000U,
  PA_STREAM_EARLY_REQUESTS = 0x4000U,
  PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
  PA_STREAM_START_UNMUTED = 0x10000U,
  PA_STREAM_FAIL_ON_SUSPEND = 0x20000U,
  PA_STREAM_RELATIVE_VOLUME = 0x40000U,
  PA_STREAM_PASSTHROUGH = 0x80000U
}
 Some special flags for stream connections. More...
 
enum  pa_error_code {
  PA_OK = 0,
  PA_ERR_ACCESS,
  PA_ERR_COMMAND,
  PA_ERR_INVALID,
  PA_ERR_EXIST,
  PA_ERR_NOENTITY,
  PA_ERR_CONNECTIONREFUSED,
  PA_ERR_PROTOCOL,
  PA_ERR_TIMEOUT,
  PA_ERR_AUTHKEY,
  PA_ERR_INTERNAL,
  PA_ERR_CONNECTIONTERMINATED,
  PA_ERR_KILLED,
  PA_ERR_INVALIDSERVER,
  PA_ERR_MODINITFAILED,
  PA_ERR_BADSTATE,
  PA_ERR_NODATA,
  PA_ERR_VERSION,
  PA_ERR_TOOLARGE,
  PA_ERR_NOTSUPPORTED,
  PA_ERR_UNKNOWN,
  PA_ERR_NOEXTENSION,
  PA_ERR_OBSOLETE,
  PA_ERR_NOTIMPLEMENTED,
  PA_ERR_FORKED,
  PA_ERR_IO,
  PA_ERR_BUSY,
  PA_ERR_MAX
}
 Error values as used by pa_context_errno(). More...
 
enum  pa_subscription_mask {
  PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
  PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
  PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
  PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
  PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
  PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
  PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
  PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
  PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
  PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
  PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
}
 Subscription event mask, as used by pa_context_subscribe() More...
 
enum  pa_subscription_event_type {
  PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
  PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
  PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
  PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
  PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
  PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
  PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
  PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
  PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
  PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
  PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
  PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
  PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
  PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
}
 Subscription event types, as used by pa_context_subscribe() More...
 
enum  pa_seek_mode {
  PA_SEEK_RELATIVE = 0,
  PA_SEEK_ABSOLUTE = 1,
  PA_SEEK_RELATIVE_ON_READ = 2,
  PA_SEEK_RELATIVE_END = 3
}
 Seek type for pa_stream_write(). More...
 
enum  pa_sink_flags {
  PA_SINK_NOFLAGS = 0x0000U,
  PA_SINK_HW_VOLUME_CTRL = 0x0001U,
  PA_SINK_LATENCY = 0x0002U,
  PA_SINK_HARDWARE = 0x0004U,
  PA_SINK_NETWORK = 0x0008U,
  PA_SINK_HW_MUTE_CTRL = 0x0010U,
  PA_SINK_DECIBEL_VOLUME = 0x0020U,
  PA_SINK_FLAT_VOLUME = 0x0040U,
  PA_SINK_DYNAMIC_LATENCY = 0x0080U,
  PA_SINK_SET_FORMATS = 0x0100U
}
 Special sink flags. More...
 
enum  pa_sink_state {
  PA_SINK_INVALID_STATE = -1,
  PA_SINK_RUNNING = 0,
  PA_SINK_IDLE = 1,
  PA_SINK_SUSPENDED = 2
}
 Sink state. More...
 
enum  pa_source_flags {
  PA_SOURCE_NOFLAGS = 0x0000U,
  PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
  PA_SOURCE_LATENCY = 0x0002U,
  PA_SOURCE_HARDWARE = 0x0004U,
  PA_SOURCE_NETWORK = 0x0008U,
  PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
  PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
  PA_SOURCE_DYNAMIC_LATENCY = 0x0040U,
  PA_SOURCE_FLAT_VOLUME = 0x0080U
}
 Special source flags. More...
 
enum  pa_source_state {
  PA_SOURCE_INVALID_STATE = -1,
  PA_SOURCE_RUNNING = 0,
  PA_SOURCE_IDLE = 1,
  PA_SOURCE_SUSPENDED = 2
}
 Source state. More...
 
enum  pa_port_available {
  PA_PORT_AVAILABLE_UNKNOWN = 0,
  PA_PORT_AVAILABLE_NO = 1,
  PA_PORT_AVAILABLE_YES = 2
}
 Port availability / jack detection status. More...
 

Detailed Description

Global definitions.

Macro Definition Documentation

#define PA_INVALID_INDEX   ((uint32_t) -1)

An invalid index.

#define PA_STREAM_EVENT_FORMAT_LOST   "format-lost"

A stream event notifying that the stream is going to be disconnected because the underlying sink changed and no longer supports the format that was originally negotiated.

Clients need to connect a new stream to renegotiate a format and continue playback.

Since
1.0
#define PA_STREAM_EVENT_REQUEST_CORK   "request-cork"

A stream policy/meta event requesting that an application should cork a specific stream.

See pa_stream_event_cb_t for more information.

Since
0.9.15
#define PA_STREAM_EVENT_REQUEST_UNCORK   "request-uncork"

A stream policy/meta event requesting that an application should cork a specific stream.

See pa_stream_event_cb_t for more information,

Since
0.9.15
#define pa_subscription_match_flags (   m,
 
)    (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))

Return one if an event type t matches an event mask bitfield.

Typedef Documentation

Playback and record buffer metrics.

Some special flags for contexts.

The state of a connection context.

The type of device we are dealing with.

Direction bitfield - while we currently do not expose anything bidirectional, one should test against the bit instead of the value (e.g. if (d & PA_DIRECTION_OUTPUT)), because we might add bidirectional stuff in the future.

Since
2.0

Error values as used by pa_context_errno().

Use pa_strerror() to convert these values to human readable strings

typedef void(* pa_free_cb_t)(void *p)

A generic free() like callback prototype.

The state of an operation.

Port availability / jack detection status.

Since
2.0

Seek type for pa_stream_write().

Special sink flags.

Sink state.

Since
0.9.15

Special source flags.

Source state.

Since
0.9.15
typedef struct pa_spawn_api pa_spawn_api

A structure for the spawn api.

This may be used to integrate auto spawned daemons into your application. For more information see pa_context_connect(). When spawning a new child process the waitpid() is used on the child's PID. The spawn routine will not block or ignore SIGCHLD signals, since this cannot be done in a thread compatible way. You might have to do this in prefork/postfork.

The direction of a pa_stream object.

Some special flags for stream connections.

The state of a stream.

Subscription event types, as used by pa_context_subscribe()

Subscription event mask, as used by pa_context_subscribe()

A structure for all kinds of timing information of a stream.

See pa_stream_update_timing_info() and pa_stream_get_timing_info(). The total output latency a sample that is written with pa_stream_write() takes to be played may be estimated by sink_usec+buffer_usec+transport_usec. (where buffer_usec is defined as pa_bytes_to_usec(write_index-read_index)) The output buffer which buffer_usec relates to may be manipulated freely (with pa_stream_write()'s seek argument, pa_stream_flush() and friends), the buffers sink_usec and source_usec relate to are first-in first-out (FIFO) buffers which cannot be flushed or manipulated in any way. The total input latency a sample that is recorded takes to be delivered to the application is: source_usec+buffer_usec+transport_usec-sink_usec. (Take care of sign issues!) When connected to a monitor source sink_usec contains the latency of the owning sink. The two latency estimations described here are implemented in pa_stream_get_latency(). Please note that this structure can be extended as part of evolutionary API updates at any time in any new release.

Enumeration Type Documentation

Some special flags for contexts.

Enumerator
PA_CONTEXT_NOFLAGS 

Flag to pass when no specific options are needed (used to avoid casting)

Since
0.9.19
PA_CONTEXT_NOAUTOSPAWN 

Disabled autospawning of the PulseAudio daemon if required.

PA_CONTEXT_NOFAIL 

Don't fail if the daemon is not available when pa_context_connect() is called, instead enter PA_CONTEXT_CONNECTING state and wait for the daemon to appear.

Since
0.9.15

The state of a connection context.

Enumerator
PA_CONTEXT_UNCONNECTED 

The context hasn't been connected yet.

PA_CONTEXT_CONNECTING 

A connection is being established.

PA_CONTEXT_AUTHORIZING 

The client is authorizing itself to the daemon.

PA_CONTEXT_SETTING_NAME 

The client is passing its application name to the daemon.

PA_CONTEXT_READY 

The connection is established, the context is ready to execute operations.

PA_CONTEXT_FAILED 

The connection failed or was disconnected.

PA_CONTEXT_TERMINATED 

The connection was terminated cleanly.

The type of device we are dealing with.

Enumerator
PA_DEVICE_TYPE_SINK 

Playback device.

PA_DEVICE_TYPE_SOURCE 

Recording device.

Direction bitfield - while we currently do not expose anything bidirectional, one should test against the bit instead of the value (e.g. if (d & PA_DIRECTION_OUTPUT)), because we might add bidirectional stuff in the future.

Since
2.0
Enumerator
PA_DIRECTION_OUTPUT 

Output direction.

PA_DIRECTION_INPUT 

Input direction.

Error values as used by pa_context_errno().

Use pa_strerror() to convert these values to human readable strings

Enumerator
PA_OK 

No error.

PA_ERR_ACCESS 

Access failure.

PA_ERR_COMMAND 

Unknown command.

PA_ERR_INVALID 

Invalid argument.

PA_ERR_EXIST 

Entity exists.

PA_ERR_NOENTITY 

No such entity.

PA_ERR_CONNECTIONREFUSED 

Connection refused.

PA_ERR_PROTOCOL 

Protocol error.

PA_ERR_TIMEOUT 

Timeout.

PA_ERR_AUTHKEY 

No authorization key.

PA_ERR_INTERNAL 

Internal error.

PA_ERR_CONNECTIONTERMINATED 

Connection terminated.

PA_ERR_KILLED 

Entity killed.

PA_ERR_INVALIDSERVER 

Invalid server.

PA_ERR_MODINITFAILED 

Module initialization failed.

PA_ERR_BADSTATE 

Bad state.

PA_ERR_NODATA 

No data.

PA_ERR_VERSION 

Incompatible protocol version.

PA_ERR_TOOLARGE 

Data too large.

PA_ERR_NOTSUPPORTED 

Operation not supported.

Since
0.9.5
PA_ERR_UNKNOWN 

The error code was unknown to the client.

PA_ERR_NOEXTENSION 

Extension does not exist.

Since
0.9.12
PA_ERR_OBSOLETE 

Obsolete functionality.

Since
0.9.15
PA_ERR_NOTIMPLEMENTED 

Missing implementation.

Since
0.9.15
PA_ERR_FORKED 

The caller forked without calling execve() and tried to reuse the context.

Since
0.9.15
PA_ERR_IO 

An IO error happened.

Since
0.9.16
PA_ERR_BUSY 

Device or resource busy.

Since
0.9.17
PA_ERR_MAX 

Not really an error but the first invalid error code.

The state of an operation.

Enumerator
PA_OPERATION_RUNNING 

The operation is still running.

PA_OPERATION_DONE 

The operation has completed.

PA_OPERATION_CANCELLED 

The operation has been cancelled.

Operations may get cancelled by the application, or as a result of the context getting disconneted while the operation is pending.

Port availability / jack detection status.

Since
2.0
Enumerator
PA_PORT_AVAILABLE_UNKNOWN 

This port does not support jack detection.

Since
2.0
PA_PORT_AVAILABLE_NO 

This port is not available, likely because the jack is not plugged in.

Since
2.0
PA_PORT_AVAILABLE_YES 

This port is available, likely because the jack is plugged in.

Since
2.0

Seek type for pa_stream_write().

Enumerator
PA_SEEK_RELATIVE 

Seek relatively to the write index.

PA_SEEK_ABSOLUTE 

Seek relatively to the start of the buffer queue.

PA_SEEK_RELATIVE_ON_READ 

Seek relatively to the read index.

PA_SEEK_RELATIVE_END 

Seek relatively to the current end of the buffer queue.

Special sink flags.

Enumerator
PA_SINK_NOFLAGS 

Flag to pass when no specific options are needed (used to avoid casting)

Since
0.9.19
PA_SINK_HW_VOLUME_CTRL 

Supports hardware volume control.

This is a dynamic flag and may change at runtime after the sink has initialized

PA_SINK_LATENCY 

Supports latency querying.

PA_SINK_HARDWARE 

Is a hardware sink of some kind, in contrast to "virtual"/software sinks.

Since
0.9.3
PA_SINK_NETWORK 

Is a networked sink of some kind.

Since
0.9.7
PA_SINK_HW_MUTE_CTRL 

Supports hardware mute control.

This is a dynamic flag and may change at runtime after the sink has initialized

Since
0.9.11
PA_SINK_DECIBEL_VOLUME 

Volume can be translated to dB with pa_sw_volume_to_dB().

This is a dynamic flag and may change at runtime after the sink has initialized

Since
0.9.11
PA_SINK_FLAT_VOLUME 

This sink is in flat volume mode, i.e. always the maximum of the volume of all connected inputs.

Since
0.9.15
PA_SINK_DYNAMIC_LATENCY 

The latency can be adjusted dynamically depending on the needs of the connected streams.

Since
0.9.15
PA_SINK_SET_FORMATS 

The sink allows setting what formats are supported by the connected hardware.

The actual functionality to do this might be provided by an extension.

Since
1.0

Sink state.

Since
0.9.15
Enumerator
PA_SINK_INVALID_STATE 

This state is used when the server does not support sink state introspection.

Since
0.9.15
PA_SINK_RUNNING 

Running, sink is playing and used by at least one non-corked sink-input.

Since
0.9.15
PA_SINK_IDLE 

When idle, the sink is playing but there is no non-corked sink-input attached to it.

Since
0.9.15
PA_SINK_SUSPENDED 

When suspended, actual sink access can be closed, for instance.

Since
0.9.15

Special source flags.

Enumerator
PA_SOURCE_NOFLAGS 

Flag to pass when no specific options are needed (used to avoid casting)

Since
0.9.19
PA_SOURCE_HW_VOLUME_CTRL 

Supports hardware volume control.

This is a dynamic flag and may change at runtime after the source has initialized

PA_SOURCE_LATENCY 

Supports latency querying.

PA_SOURCE_HARDWARE 

Is a hardware source of some kind, in contrast to "virtual"/software source.

Since
0.9.3
PA_SOURCE_NETWORK 

Is a networked source of some kind.

Since
0.9.7
PA_SOURCE_HW_MUTE_CTRL 

Supports hardware mute control.

This is a dynamic flag and may change at runtime after the source has initialized

Since
0.9.11
PA_SOURCE_DECIBEL_VOLUME 

Volume can be translated to dB with pa_sw_volume_to_dB().

This is a dynamic flag and may change at runtime after the source has initialized

Since
0.9.11
PA_SOURCE_DYNAMIC_LATENCY 

The latency can be adjusted dynamically depending on the needs of the connected streams.

Since
0.9.15
PA_SOURCE_FLAT_VOLUME 

This source is in flat volume mode, i.e. always the maximum of the volume of all connected outputs.

Since
1.0

Source state.

Since
0.9.15
Enumerator
PA_SOURCE_INVALID_STATE 

This state is used when the server does not support source state introspection.

Since
0.9.15
PA_SOURCE_RUNNING 

Running, source is recording and used by at least one non-corked source-output.

Since
0.9.15
PA_SOURCE_IDLE 

When idle, the source is still recording but there is no non-corked source-output.

Since
0.9.15
PA_SOURCE_SUSPENDED 

When suspended, actual source access can be closed, for instance.

Since
0.9.15

The direction of a pa_stream object.

Enumerator
PA_STREAM_NODIRECTION 

Invalid direction.

PA_STREAM_PLAYBACK 

Playback stream.

PA_STREAM_RECORD 

Record stream.

PA_STREAM_UPLOAD 

Sample upload stream.

Some special flags for stream connections.

Enumerator
PA_STREAM_NOFLAGS 

Flag to pass when no specific options are needed (used to avoid casting)

Since
0.9.19
PA_STREAM_START_CORKED 

Create the stream corked, requiring an explicit pa_stream_cork() call to uncork it.

PA_STREAM_INTERPOLATE_TIMING 

Interpolate the latency for this stream.

When enabled, pa_stream_get_latency() and pa_stream_get_time() will try to estimate the current record/playback time based on the local time that passed since the last timing info update. Using this option has the advantage of not requiring a whole roundtrip when the current playback/recording time is needed. Consider using this option when requesting latency information frequently. This is especially useful on long latency network connections. It makes a lot of sense to combine this option with PA_STREAM_AUTO_TIMING_UPDATE.

PA_STREAM_NOT_MONOTONIC 

Don't force the time to increase monotonically.

If this option is enabled, pa_stream_get_time() will not necessarily return always monotonically increasing time values on each call. This may confuse applications which cannot deal with time going 'backwards', but has the advantage that bad transport latency estimations that caused the time to to jump ahead can be corrected quickly, without the need to wait. (Please note that this flag was named PA_STREAM_NOT_MONOTONOUS in releases prior to 0.9.11. The old name is still defined too, for compatibility reasons.

PA_STREAM_AUTO_TIMING_UPDATE 

If set timing update requests are issued periodically automatically.

Combined with PA_STREAM_INTERPOLATE_TIMING you will be able to query the current time and latency with pa_stream_get_time() and pa_stream_get_latency() at all times without a packet round trip.

PA_STREAM_NO_REMAP_CHANNELS 

Don't remap channels by their name, instead map them simply by their index.

Implies PA_STREAM_NO_REMIX_CHANNELS. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

Since
0.9.8
PA_STREAM_NO_REMIX_CHANNELS 

When remapping channels by name, don't upmix or downmix them to related channels.

Copy them into matching channels of the device 1:1. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

Since
0.9.8
PA_STREAM_FIX_FORMAT 

Use the sample format of the sink/device this stream is being connected to, and possibly ignore the format the sample spec contains – but you still have to pass a valid value in it as a hint to PulseAudio what would suit your stream best.

If this is used you should query the used sample format after creating the stream by using pa_stream_get_sample_spec(). Also, if you specified manual buffer metrics it is recommended to update them with pa_stream_set_buffer_attr() to compensate for the changed frame sizes. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

When creating streams with pa_stream_new_extended(), this flag has no effect. If you specify a format with PCM encoding, and you want the server to choose the sample format, then you should leave the sample format unspecified in the pa_format_info object. This also means that you can't use pa_format_info_from_sample_spec(), because that function always sets the sample format.

Since
0.9.8
PA_STREAM_FIX_RATE 

Use the sample rate of the sink, and possibly ignore the rate the sample spec contains.

Usage similar to PA_STREAM_FIX_FORMAT. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

When creating streams with pa_stream_new_extended(), this flag has no effect. If you specify a format with PCM encoding, and you want the server to choose the sample rate, then you should leave the rate unspecified in the pa_format_info object. This also means that you can't use pa_format_info_from_sample_spec(), because that function always sets the sample rate.

Since
0.9.8
PA_STREAM_FIX_CHANNELS 

Use the number of channels and the channel map of the sink, and possibly ignore the number of channels and the map the sample spec and the passed channel map contains.

Usage similar to PA_STREAM_FIX_FORMAT. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

When creating streams with pa_stream_new_extended(), this flag has no effect. If you specify a format with PCM encoding, and you want the server to choose the channel count and/or channel map, then you should leave the channels and/or the channel map unspecified in the pa_format_info object. This also means that you can't use pa_format_info_from_sample_spec(), because that function always sets the channel count (but if you only want to leave the channel map unspecified, then pa_format_info_from_sample_spec() works, because it accepts a NULL channel map).

Since
0.9.8
PA_STREAM_DONT_MOVE 

Don't allow moving of this stream to another sink/device.

Useful if you use any of the PA_STREAM_FIX_ flags and want to make sure that resampling never takes place – which might happen if the stream is moved to another sink/source with a different sample spec/channel map. Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

Since
0.9.8
PA_STREAM_VARIABLE_RATE 

Allow dynamic changing of the sampling rate during playback with pa_stream_update_sample_rate().

Only supported when the server is at least PA 0.9.8. It is ignored on older servers.

Since
0.9.8
PA_STREAM_PEAK_DETECT 

Find peaks instead of resampling.

Since
0.9.11
PA_STREAM_START_MUTED 

Create in muted state.

If neither PA_STREAM_START_UNMUTED nor PA_STREAM_START_MUTED it is left to the server to decide whether to create the stream in muted or in unmuted state.

Since
0.9.11
PA_STREAM_ADJUST_LATENCY 

Try to adjust the latency of the sink/source based on the requested buffer metrics and adjust buffer metrics accordingly.

Also see pa_buffer_attr. This option may not be specified at the same time as PA_STREAM_EARLY_REQUESTS.

Since
0.9.11
PA_STREAM_EARLY_REQUESTS 

Enable compatibility mode for legacy clients that rely on a "classic" hardware device fragment-style playback model.

If this option is set, the minreq value of the buffer metrics gets a new meaning: instead of just specifying that no requests asking for less new data than this value will be made to the client it will also guarantee that requests are generated as early as this limit is reached. This flag should only be set in very few situations where compatibility with a fragment-based playback model needs to be kept and the client applications cannot deal with data requests that are delayed to the latest moment possible. (Usually these are programs that use usleep() or a similar call in their playback loops instead of sleeping on the device itself.) Also see pa_buffer_attr. This option may not be specified at the same time as PA_STREAM_ADJUST_LATENCY.

Since
0.9.12
PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND 

If set this stream won't be taken into account when it is checked whether the device this stream is connected to should auto-suspend.

Since
0.9.15
PA_STREAM_START_UNMUTED 

Create in unmuted state.

If neither PA_STREAM_START_UNMUTED nor PA_STREAM_START_MUTED it is left to the server to decide whether to create the stream in muted or in unmuted state.

Since
0.9.15
PA_STREAM_FAIL_ON_SUSPEND 

If the sink/source this stream is connected to is suspended during the creation of this stream, cause it to fail.

If the sink/source is being suspended during creation of this stream, make sure this stream is terminated.

Since
0.9.15
PA_STREAM_RELATIVE_VOLUME 

If a volume is passed when this stream is created, consider it relative to the sink's current volume, never as absolute device volume.

If this is not specified the volume will be consider absolute when the sink is in flat volume mode, relative otherwise.

Since
0.9.20
PA_STREAM_PASSTHROUGH 

Used to tag content that will be rendered by passthrough sinks.

The data will be left as is and not reformatted, resampled.

Since
1.0

The state of a stream.

Enumerator
PA_STREAM_UNCONNECTED 

The stream is not yet connected to any sink or source.

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_FAILED 

An error occurred that made the stream invalid.

PA_STREAM_TERMINATED 

The stream has been terminated cleanly.

Subscription event types, as used by pa_context_subscribe()

Enumerator
PA_SUBSCRIPTION_EVENT_SINK 

Event type: Sink.

PA_SUBSCRIPTION_EVENT_SOURCE 

Event type: Source.

PA_SUBSCRIPTION_EVENT_SINK_INPUT 

Event type: Sink input.

PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT 

Event type: Source output.

PA_SUBSCRIPTION_EVENT_MODULE 

Event type: Module.

PA_SUBSCRIPTION_EVENT_CLIENT 

Event type: Client.

PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE 

Event type: Sample cache item.

PA_SUBSCRIPTION_EVENT_SERVER 

Event type: Global server change, only occurring with PA_SUBSCRIPTION_EVENT_CHANGE.

PA_SUBSCRIPTION_EVENT_CARD 

Event type: Card.

Since
0.9.15
PA_SUBSCRIPTION_EVENT_FACILITY_MASK 

A mask to extract the event type from an event value.

PA_SUBSCRIPTION_EVENT_NEW 

A new object was created.

PA_SUBSCRIPTION_EVENT_CHANGE 

A property of the object was modified.

PA_SUBSCRIPTION_EVENT_REMOVE 

An object was removed.

PA_SUBSCRIPTION_EVENT_TYPE_MASK 

A mask to extract the event operation from an event value.

Subscription event mask, as used by pa_context_subscribe()

Enumerator
PA_SUBSCRIPTION_MASK_NULL 

No events.

PA_SUBSCRIPTION_MASK_SINK 

Sink events.

PA_SUBSCRIPTION_MASK_SOURCE 

Source events.

PA_SUBSCRIPTION_MASK_SINK_INPUT 

Sink input events.

PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT 

Source output events.

PA_SUBSCRIPTION_MASK_MODULE 

Module events.

PA_SUBSCRIPTION_MASK_CLIENT 

Client events.

PA_SUBSCRIPTION_MASK_SAMPLE_CACHE 

Sample cache events.

PA_SUBSCRIPTION_MASK_SERVER 

Other global server changes.

PA_SUBSCRIPTION_MASK_CARD 

Card events.

Since
0.9.15
PA_SUBSCRIPTION_MASK_ALL 

Catch all events.