mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-09-03 10:13:47 +00:00
ts-audiotestsrc: actually use volume & mute properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2392>
This commit is contained in:
parent
b5af06c88b
commit
00cd58a21c
1 changed files with 10 additions and 1 deletions
|
@ -132,6 +132,7 @@ struct AudioTestSrcTask {
|
||||||
need_initial_events: bool,
|
need_initial_events: bool,
|
||||||
|
|
||||||
volume: f64,
|
volume: f64,
|
||||||
|
mute: bool,
|
||||||
freq: f64,
|
freq: f64,
|
||||||
rate: u32,
|
rate: u32,
|
||||||
channels: usize,
|
channels: usize,
|
||||||
|
@ -162,6 +163,7 @@ impl AudioTestSrcTask {
|
||||||
need_initial_events: true,
|
need_initial_events: true,
|
||||||
|
|
||||||
volume: DEFAULT_VOLUME,
|
volume: DEFAULT_VOLUME,
|
||||||
|
mute: DEFAULT_MUTE,
|
||||||
freq: DEFAULT_FREQ as f64,
|
freq: DEFAULT_FREQ as f64,
|
||||||
rate: DEFAULT_RATE,
|
rate: DEFAULT_RATE,
|
||||||
channels: DEFAULT_CHANNELS,
|
channels: DEFAULT_CHANNELS,
|
||||||
|
@ -302,7 +304,10 @@ impl TaskImpl for AudioTestSrcTask {
|
||||||
self.is_live = settings.is_live;
|
self.is_live = settings.is_live;
|
||||||
self.samples_per_buffer = settings.samples_per_buffer;
|
self.samples_per_buffer = settings.samples_per_buffer;
|
||||||
self.num_buffers = settings.num_buffers;
|
self.num_buffers = settings.num_buffers;
|
||||||
|
// TODO handle live changes for these settings
|
||||||
self.freq = settings.freq as f64;
|
self.freq = settings.freq as f64;
|
||||||
|
self.volume = settings.volume;
|
||||||
|
self.mute = settings.mute;
|
||||||
|
|
||||||
#[cfg(feature = "tuning")]
|
#[cfg(feature = "tuning")]
|
||||||
{
|
{
|
||||||
|
@ -395,7 +400,11 @@ impl TaskImpl for AudioTestSrcTask {
|
||||||
let mut mapped = buffer_mut.map_writable().unwrap();
|
let mut mapped = buffer_mut.map_writable().unwrap();
|
||||||
let data = mapped.as_mut_slice_of::<i16>().unwrap();
|
let data = mapped.as_mut_slice_of::<i16>().unwrap();
|
||||||
for chunk in data.chunks_exact_mut(self.channels) {
|
for chunk in data.chunks_exact_mut(self.channels) {
|
||||||
let value = (self.accumulator.sin() * self.volume * (i16::MAX as f64)) as i16;
|
let value = if self.mute {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
(self.accumulator.sin() * self.volume * (i16::MAX as f64)) as i16
|
||||||
|
};
|
||||||
for sample in chunk {
|
for sample in chunk {
|
||||||
*sample = value;
|
*sample = value;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue