fix: different audio frame size than 10ms (#72)
This commit is contained in:
@@ -12,6 +12,7 @@ struct FrameData {
|
||||
pub sample_rate: u32,
|
||||
pub freq: f64,
|
||||
pub amplitude: f64,
|
||||
pub phase: u64,
|
||||
}
|
||||
|
||||
impl Default for FrameData {
|
||||
@@ -20,6 +21,7 @@ impl Default for FrameData {
|
||||
sample_rate: 48000,
|
||||
freq: 440.0,
|
||||
amplitude: 1.0,
|
||||
phase: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -98,7 +100,7 @@ impl SineTrack {
|
||||
loop {
|
||||
interval.tick().await;
|
||||
|
||||
let data = frame_options.lock();
|
||||
let mut data = frame_options.lock();
|
||||
let samples_count_10ms = (data.sample_rate / 100) as usize;
|
||||
|
||||
if samples_10ms.capacity() != samples_count_10ms {
|
||||
@@ -108,10 +110,13 @@ impl SineTrack {
|
||||
for i in 0..samples_count_10ms {
|
||||
let val = data.amplitude
|
||||
* f64::sin(
|
||||
std::f64::consts::PI * 2.0 * data.freq * i as f64
|
||||
/ samples_count_10ms as f64,
|
||||
std::f64::consts::PI
|
||||
* 2.0
|
||||
* data.freq
|
||||
* (data.phase as f64 / data.sample_rate as f64),
|
||||
);
|
||||
|
||||
data.phase += 1;
|
||||
// WebRTC uses 16-bit signed PCM
|
||||
samples_10ms[i] = (val * 32768.0) as i16;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user