pub struct FlagSet(/* private fields */);
Expand description
Flag set.
Implementations§
Source§impl FlagSet
impl FlagSet
Sourcepub const START_CORKED: Self
pub const START_CORKED: Self
Create the stream corked, requiring an explicit Stream::uncork()
call to uncork it.
Sourcepub const INTERPOLATE_TIMING: Self
pub const INTERPOLATE_TIMING: Self
Interpolate the latency for this stream. When enabled, Stream::get_latency()
and
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 round trip 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 AUTO_TIMING_UPDATE
.
Sourcepub const NOT_MONOTONIC: Self
pub const NOT_MONOTONIC: Self
Don’t force the time to increase monotonically. If this option is enabled,
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 jump ahead can be corrected quickly, without the need to wait.
Sourcepub const AUTO_TIMING_UPDATE: Self
pub const AUTO_TIMING_UPDATE: Self
If set timing update requests are issued periodically automatically. Combined with
INTERPOLATE_TIMING
you will be able to query the current time and latency with
Stream::get_time()
and Stream::get_latency()
at all times without a packet round
trip.
Sourcepub const NO_REMAP_CHANNELS: Self
pub const NO_REMAP_CHANNELS: Self
Don’t remap channels by their name, instead map them simply by their index. Implies
NO_REMIX_CHANNELS
.
Sourcepub const NO_REMIX_CHANNELS: Self
pub const NO_REMIX_CHANNELS: Self
When remapping channels by name, don’t upmix or downmix them to related channels. Copy them into matching channels of the device 1:1.
Sourcepub const FIX_FORMAT: Self
pub const FIX_FORMAT: Self
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
Stream::get_sample_spec()
. Also, if you specified manual buffer metrics it is
recommended to update them with Stream::set_buffer_attr()
to compensate for the
changed frame sizes.
When creating streams with 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 Info
object. This also
means that you can’t use Info::new_from_sample_spec()
, because that function always
sets the sample format.
Sourcepub const FIX_RATE: Self
pub const FIX_RATE: Self
Use the sample rate of the sink, and possibly ignore the rate the sample spec contains.
Usage similar to FIX_FORMAT
.
When creating streams with 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 Info
object. This also means that
you can’t use Info::new_from_sample_spec()
, because that function always sets the
sample rate.
Sourcepub const FIX_CHANNELS: Self
pub const FIX_CHANNELS: Self
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 FIX_FORMAT
.
When creating streams with 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 Info
object. This also means that you can’t use
Info::new_from_sample_spec()
, because that function always sets the channel count
(but if you only want to leave the channel map unspecified, then
Info::new_from_sample_spec()
works, because the channel map parameter is optional).
Sourcepub const DONT_MOVE: Self
pub const DONT_MOVE: Self
Don’t allow moving of this stream to another sink/device. Useful if you use any of the
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.
Sourcepub const VARIABLE_RATE: Self
pub const VARIABLE_RATE: Self
Allow dynamic changing of the sampling rate during playback with
Stream::update_sample_rate()
.
Sourcepub const PEAK_DETECT: Self
pub const PEAK_DETECT: Self
Find peaks instead of resampling.
Sourcepub const START_MUTED: Self
pub const START_MUTED: Self
Create in muted state. If neither START_UNMUTED
nor this is specified, it is left to
the server to decide whether to create the stream in muted or in un-muted state.
Sourcepub const ADJUST_LATENCY: Self
pub const ADJUST_LATENCY: Self
Try to adjust the latency of the sink/source based on the requested buffer metrics and
adjust buffer metrics accordingly. Also see BufferAttr
. This option may not be
specified at the same time as EARLY_REQUESTS
.
Sourcepub const EARLY_REQUESTS: Self
pub const EARLY_REQUESTS: Self
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
BufferAttr
. This option may not be specified at the same time as ADJUST_LATENCY
.
Sourcepub const DONT_INHIBIT_AUTO_SUSPEND: Self
pub const DONT_INHIBIT_AUTO_SUSPEND: Self
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.
Sourcepub const START_UNMUTED: Self
pub const START_UNMUTED: Self
Create in unmuted state. If neither START_MUTED
nor this is specified, it is left to
the server to decide whether to create the stream in muted or in unmuted state.
Sourcepub const FAIL_ON_SUSPEND: Self
pub const FAIL_ON_SUSPEND: Self
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.
Sourcepub const RELATIVE_VOLUME: Self
pub const RELATIVE_VOLUME: Self
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.
Sourcepub const PASSTHROUGH: Self
pub const PASSTHROUGH: Self
Used to tag content that will be rendered by passthrough sinks. The data will be left as is and not reformatted, resampled.
Source§impl FlagSet
impl FlagSet
Sourcepub const fn bits(&self) -> u32
pub const fn bits(&self) -> u32
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
Sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from a bits value.
This method will return None
if any unknown bits are set.
Sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from a bits value, unsetting any unknown bits.
Sourcepub const fn from_bits_retain(bits: u32) -> Self
pub const fn from_bits_retain(bits: u32) -> Self
Convert from a bits value exactly.
Sourcepub fn from_name(name: &str) -> Option<Self>
pub fn from_name(name: &str) -> Option<Self>
Get a flags value with the bits of a flag with the given name set.
This method will return None
if name
is empty or doesn’t
correspond to any named flag.
Sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Whether any set bits in a source flags value are also set in a target flags value.
Sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Whether all set bits in a source flags value are also set in a target flags value.
Sourcepub fn remove(&mut self, other: Self)
pub fn remove(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
remove
won’t truncate other
, but the !
operator will.
Sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
The bitwise exclusive-or (^
) of the bits in two flags values.
Sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Call insert
when value
is true
or remove
when value
is false
.
Sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
The bitwise and (&
) of the bits in two flags values.
Sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
The bitwise or (|
) of the bits in two flags values.
Sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
Sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
The bitwise exclusive-or (^
) of the bits in two flags values.
Sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
The bitwise negation (!
) of the bits in a flags value, truncating the result.
Source§impl FlagSet
impl FlagSet
Sourcepub const fn iter(&self) -> Iter<FlagSet>
pub const fn iter(&self) -> Iter<FlagSet>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
Sourcepub const fn iter_names(&self) -> IterNames<FlagSet>
pub const fn iter_names(&self) -> IterNames<FlagSet>
Yield a set of contained named flags values.
This method is like iter
, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Trait Implementations§
Source§impl BitAndAssign for FlagSet
impl BitAndAssign for FlagSet
Source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
The bitwise and (&
) of the bits in two flags values.
Source§impl BitOrAssign for FlagSet
impl BitOrAssign for FlagSet
Source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
The bitwise or (|
) of the bits in two flags values.
Source§impl BitXorAssign for FlagSet
impl BitXorAssign for FlagSet
Source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
The bitwise exclusive-or (^
) of the bits in two flags values.
Source§impl Extend<FlagSet> for FlagSet
impl Extend<FlagSet> for FlagSet
Source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
The bitwise or (|
) of the bits in each flags value.
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Source§impl Flags for FlagSet
impl Flags for FlagSet
Source§fn from_bits_retain(bits: u32) -> FlagSet
fn from_bits_retain(bits: u32) -> FlagSet
Source§fn contains_unknown_bits(&self) -> bool
fn contains_unknown_bits(&self) -> bool
true
if any unknown bits are set.Source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
Source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
Source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
Source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
Source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|
) of the bits in two flags values.Source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!
). Read moreSource§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^
) of the bits in two flags values.Source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&
) of the bits in two flags values.Source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!
). Read moreSource§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^
) of the bits in two flags values.Source§fn complement(self) -> Self
fn complement(self) -> Self
!
) of the bits in a flags value, truncating the result.Source§impl FromIterator<FlagSet> for FlagSet
impl FromIterator<FlagSet> for FlagSet
Source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
The bitwise or (|
) of the bits in each flags value.
Source§impl IntoIterator for FlagSet
impl IntoIterator for FlagSet
Source§impl Sub for FlagSet
impl Sub for FlagSet
Source§impl SubAssign for FlagSet
impl SubAssign for FlagSet
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.