Struct libpulse_binding::volume::ChannelVolumes
source · #[repr(C)]pub struct ChannelVolumes { /* private fields */ }
Expand description
A structure encapsulating a per-channel volume
Implementations§
source§impl ChannelVolumes
impl ChannelVolumes
sourcepub const CHANNELS_MAX: u8 = 32u8
pub const CHANNELS_MAX: u8 = 32u8
Maximum number of allowed channels.
sourcepub fn init(&mut self) -> &Self
pub fn init(&mut self) -> &Self
Initializes the specified volume and return a pointer to it.
The sample spec will have a defined state but is_valid()
will fail for
it.
sourcepub fn set_len(&mut self, channels: u8)
pub fn set_len(&mut self, channels: u8)
Sets the number of active channels.
Volumes for up to Self::CHANNELS_MAX
channels can be held. This sets the portion of
the internal array considered “active” and thus available for reading/writing (i.e. when
borrowing self
as a slice).
Panics if the number of channels specified is greater than Self::CHANNELS_MAX
.
sourcepub fn get_mut(&mut self) -> &mut [Volume]
pub fn get_mut(&mut self) -> &mut [Volume]
Gets a mutable slice of the set of “active” channels.
sourcepub fn set(&mut self, channels: u8, v: Volume) -> &Self
pub fn set(&mut self, channels: u8, v: Volume) -> &Self
Sets the volume of the specified number of channels to the supplied volume.
sourcepub fn reset(&mut self, channels: u8) -> &Self
pub fn reset(&mut self, channels: u8) -> &Self
Sets the volume of the first n channels to Volume::NORMAL
.
sourcepub fn mute(&mut self, channels: u8) -> &Self
pub fn mute(&mut self, channels: u8) -> &Self
Sets the volume of the first n channels to Volume::MUTED
.
sourcepub fn avg_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
pub fn avg_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
Returns the average volume of all channels that are included in the specified channel map with the specified channel position mask.
If no channel is selected the returned value will be Volume::MUTED
. If mask
is None
,
has the same effect as passing POSITION_MASK_ALL
.
sourcepub fn max_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
pub fn max_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
Gets the maximum volume of all channels that are included in the specified channel map with the specified channel position mask.
If no channel is selected the returned value will be Volume::MUTED
. If mask
is None
,
has the same effect as passing POSITION_MASK_ALL
.
sourcepub fn min_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
pub fn min_mask(&self, cm: &Map, mask: Option<PositionMask>) -> Volume
Gets the minimum volume of all channels that are included in the specified channel map with the specified channel position mask.
If no channel is selected the returned value will be Volume::MUTED
. If mask
is None
,
has the same effect as passing POSITION_MASK_ALL
.
sourcepub fn sw_multiply(&mut self, with: Option<&Self>) -> &mut Self
pub fn sw_multiply(&mut self, with: Option<&Self>) -> &mut Self
Multiplies two per-channel volumes.
If with
is None
, multiplies with itself. This is only valid for software volumes!
Returns pointer to self.
sourcepub fn sw_multiply_scalar(&mut self, with: Volume) -> &mut Self
pub fn sw_multiply_scalar(&mut self, with: Volume) -> &mut Self
Multiplies a per-channel volume with a scalar volume.
This is only valid for software volumes! Returns pointer to self.
sourcepub fn sw_divide(&mut self, with: Option<&Self>) -> &mut Self
pub fn sw_divide(&mut self, with: Option<&Self>) -> &mut Self
Divides two per-channel volumes.
If with
is None
, divides with itself. This is only valid for software volumes! Returns
pointer to self.
sourcepub fn sw_divide_scalar(&mut self, with: Volume) -> &mut Self
pub fn sw_divide_scalar(&mut self, with: Volume) -> &mut Self
Divides a per-channel volume by a scalar volume.
This is only valid for software volumes! Returns pointer to self.
sourcepub fn remap(&mut self, from: &Map, to: &Map) -> &mut Self
pub fn remap(&mut self, from: &Map, to: &Map) -> &mut Self
Remaps a volume from one channel mapping to a different channel mapping.
Returns pointer to self.
sourcepub fn is_compatible_with_ss(&self, ss: &Spec) -> bool
pub fn is_compatible_with_ss(&self, ss: &Spec) -> bool
Checks if the specified volume is compatible with the specified sample spec.
sourcepub fn is_compatible_with_cm(&self, cm: &Map) -> bool
pub fn is_compatible_with_cm(&self, cm: &Map) -> bool
Checks if the specified volume is compatible with the specified channel map.
sourcepub fn get_balance(&self, map: &Map) -> f32
pub fn get_balance(&self, map: &Map) -> f32
Calculates a ‘balance’ value for the specified volume with the specified channel map.
The return value will range from -1.0
(left) to +1.0
(right). If no balance value is
applicable to this channel map the return value will always be 0.0
. See
Map::can_balance()
.
sourcepub fn set_balance(&mut self, map: &Map, new_balance: f32) -> Option<&mut Self>
pub fn set_balance(&mut self, map: &Map, new_balance: f32) -> Option<&mut Self>
Adjusts the ‘balance’ value for the specified volume with the specified channel map.
The balance is a value between -1.0
and +1.0
. This operation might not be reversible!
Also, after this call get_balance()
is not guaranteed to actually
return the requested balance value (e.g. when the input volume was zero anyway for all
channels). If no balance value is applicable to this channel map the volume will not be
modified. See Map::can_balance()
.
Returns pointer to self, or None
on error.
sourcepub fn get_fade(&self, map: &Map) -> f32
pub fn get_fade(&self, map: &Map) -> f32
Calculates a ‘fade’ value (i.e. ‘balance’ between front and rear) for the specified volume with the specified channel map.
The return value will range from -1.0f (rear) to +1.0f (left). If no fade value is
applicable to this channel map the return value will always be 0.0
. See
Map::can_fade()
.
sourcepub fn set_fade(&mut self, map: &Map, new_fade: f32) -> Option<&mut Self>
pub fn set_fade(&mut self, map: &Map, new_fade: f32) -> Option<&mut Self>
Adjusts the ‘fade’ value (i.e. ‘balance’ between front and rear) for the specified volume with the specified channel map.
The balance is a value between -1.0
and +1.0
. This operation might not be reversible!
Also, after this call get_fade()
is not guaranteed to actually return
the requested fade value (e.g. when the input volume was zero anyway for all channels). If
no fade value is applicable to this channel map the volume will not be modified. See
Map::can_fade()
.
Returns pointer to self, or None
on error.
sourcepub fn get_lfe_balance(&self, map: &Map) -> f32
Available on crate feature pa_v8
only.
pub fn get_lfe_balance(&self, map: &Map) -> f32
pa_v8
only.Calculates a ‘lfe balance’ value for the specified volume with the specified channel map.
The return value will range from -1.0
(no lfe) to +1.0
(only lfe), where 0.0
is
balanced. If no value is applicable to this channel map the return value will always be
0.0
. See Map::can_lfe_balance()
.
sourcepub fn set_lfe_balance(
&mut self,
map: &Map,
new_balance: f32
) -> Option<&mut Self>
Available on crate feature pa_v8
only.
pub fn set_lfe_balance( &mut self, map: &Map, new_balance: f32 ) -> Option<&mut Self>
pa_v8
only.Adjusts the ‘LFE balance’ value for the specified volume with the specified channel map.
The balance is a value between -1.0
(no lfe) and +1.0
(only lfe). This operation might
not be reversible! Also, after this call get_lfe_balance()
is not guaranteed to actually
return the requested value (e.g. when the input volume was zero anyway for all channels). If
no lfe balance value is applicable to this channel map the volume will not be modified. See
Map::can_lfe_balance()
.
Returns pointer to self, or None
on error.
sourcepub fn scale(&mut self, max: Volume) -> Option<&mut Self>
pub fn scale(&mut self, max: Volume) -> Option<&mut Self>
Scales so that the maximum volume of all channels equals max
.
The proportions between the channel volumes are kept.
Returns pointer to self, or None
on error.
sourcepub fn scale_mask(
&mut self,
max: Volume,
cm: &mut Map,
mask: Option<PositionMask>
) -> Option<&mut Self>
pub fn scale_mask( &mut self, max: Volume, cm: &mut Map, mask: Option<PositionMask> ) -> Option<&mut Self>
Scales so that the maximum volume of all channels selected via cm
/mask
equals max
.
This also modifies the volume of those channels that are unmasked. The proportions between the channel volumes are kept.
If mask
is None
, has the same effect as passing POSITION_MASK_ALL
.
Returns pointer to self, or None
on error.
sourcepub fn set_position(
&mut self,
map: &Map,
p: Position,
v: Volume
) -> Option<&mut Self>
pub fn set_position( &mut self, map: &Map, p: Position, v: Volume ) -> Option<&mut Self>
Sets the passed volume to all channels at the specified channel position.
Returns None
if either invalid data was provided, or if there is no channel at the
position specified. You can check if a channel map includes a specific position by calling
Map::has_position()
. On success, returns pointer to self.
sourcepub fn get_position(&self, map: &Map, p: Position) -> Volume
pub fn get_position(&self, map: &Map, p: Position) -> Volume
Gets the maximum volume of all channels at the specified channel position.
Will return 0
if there is no channel at the position specified. You can check if a channel
map includes a specific position by calling Map::has_position()
.
sourcepub fn merge(&mut self, with: &Self) -> Option<&mut Self>
pub fn merge(&mut self, with: &Self) -> Option<&mut Self>
Merges one set of channel volumes with another.
The channel count is set to the minimum between that of self and that of with
. Only this
number of channels are processed. For each channel processed, volume is set to the greatest
of the values from self and from with
. I.e if one set has three channels and the other has
two, the number of channels will be set to two, and only the first two channels will be
compared, with the greatest values of these two channels being stored. The third channel in
the one set will be ignored.
Returns pointer to self, or None
on error.
sourcepub fn inc_clamp(&mut self, inc: Volume, limit: Volume) -> Option<&mut Self>
pub fn inc_clamp(&mut self, inc: Volume, limit: Volume) -> Option<&mut Self>
Increases the volume passed in by inc
, but not exceeding limit
.
The proportions between the channels are kept.
Returns pointer to self, or None
on error.
sourcepub fn increase(&mut self, inc: Volume) -> Option<&mut Self>
pub fn increase(&mut self, inc: Volume) -> Option<&mut Self>
Increases the volume passed in by inc
.
The proportions between the channels are kept.
Returns pointer to self, or None
on error.
sourcepub fn decrease(&mut self, dec: Volume) -> Option<&mut Self>
pub fn decrease(&mut self, dec: Volume) -> Option<&mut Self>
Decreases the volume passed in by dec
.
The proportions between the channels are kept.
Returns pointer to self, or None
on error.
sourcepub fn print_verbose(&self, map: Option<&Map>, print_db: bool) -> String
pub fn print_verbose(&self, map: Option<&Map>, print_db: bool) -> String
Pretty prints a volume structure in a verbose way.
The volume for each channel is printed in several formats: the raw volume value,
percentage, and if print_db
is non-zero, also the dB value. If map
is provided, the
channel names will be printed.
Trait Implementations§
source§impl AsMut<pa_cvolume> for ChannelVolumes
impl AsMut<pa_cvolume> for ChannelVolumes
source§fn as_mut(&mut self) -> &mut pa_cvolume
fn as_mut(&mut self) -> &mut pa_cvolume
source§impl AsRef<pa_cvolume> for ChannelVolumes
impl AsRef<pa_cvolume> for ChannelVolumes
source§fn as_ref(&self) -> &pa_cvolume
fn as_ref(&self) -> &pa_cvolume
source§impl Borrow<[Volume]> for ChannelVolumes
impl Borrow<[Volume]> for ChannelVolumes
source§impl BorrowMut<[Volume]> for ChannelVolumes
impl BorrowMut<[Volume]> for ChannelVolumes
source§fn borrow_mut(&mut self) -> &mut [Volume]
fn borrow_mut(&mut self) -> &mut [Volume]
source§impl Clone for ChannelVolumes
impl Clone for ChannelVolumes
source§fn clone(&self) -> ChannelVolumes
fn clone(&self) -> ChannelVolumes
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more