From 06283e07140f39a9f3db636c8a4ff8fcbc56a290 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 10 Aug 2023 22:24:47 +1000 Subject: Fix issues with timing stereo streams --- src/audio/audio_task.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/audio/audio_task.cpp') diff --git a/src/audio/audio_task.cpp b/src/audio/audio_task.cpp index baa0a52d..05a06ad1 100644 --- a/src/audio/audio_task.cpp +++ b/src/audio/audio_task.cpp @@ -56,18 +56,20 @@ static const char* kTag = "audio_dec"; static constexpr std::size_t kCodecBufferLength = 240 * 4; -Timer::Timer(uint32_t sample_rate, uint32_t total_samples) - : sample_rate_(sample_rate), +Timer::Timer(const codecs::ICodec::OutputFormat& format) + : format_(format), current_seconds_(0), current_sample_in_second_(0), - total_duration_seconds_(total_samples / sample_rate) {} + total_duration_seconds_(format.total_samples.value_or(0) / + format.num_channels / format.sample_rate_hz) {} auto Timer::AddSamples(std::size_t samples) -> void { bool incremented = false; current_sample_in_second_ += samples; - while (current_sample_in_second_ >= sample_rate_) { + while (current_sample_in_second_ >= + format_.sample_rate_hz * format_.num_channels) { current_seconds_++; - current_sample_in_second_ -= sample_rate_; + current_sample_in_second_ -= format_.sample_rate_hz * format_.num_channels; incremented = true; } @@ -138,8 +140,7 @@ auto AudioTask::BeginDecoding(std::shared_ptr stream) -> bool { } if (open_res->total_samples) { - timer_.reset( - new Timer(open_res->sample_rate_hz, open_res->total_samples.value())); + timer_.reset(new Timer(open_res.value())); } else { timer_.reset(); } -- cgit v1.2.3