diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-11 12:32:50 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-11 12:32:50 +1000 |
| commit | 205e3053506191fab69d01e7523e733dccc09d77 (patch) | |
| tree | 9e3082c017544d83ef36c15807bfa98afdf7a999 | |
| parent | 9ddaca4fcbfac588128a8b655685030d2c9ca4c5 (diff) | |
| download | tangara-fw-205e3053506191fab69d01e7523e733dccc09d77.tar.gz | |
Implement the easy seeks
| -rw-r--r-- | src/codecs/mad.cpp | 7 | ||||
| -rw-r--r-- | src/codecs/opus.cpp | 3 | ||||
| -rw-r--r-- | src/codecs/vorbis.cpp | 3 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/codecs/mad.cpp b/src/codecs/mad.cpp index f4cfb3b9..9f1655e9 100644 --- a/src/codecs/mad.cpp +++ b/src/codecs/mad.cpp @@ -106,12 +106,12 @@ auto MadMp3Decoder::DecodeTo(cpp::span<sample::Sample> output) is_eof_ = buffer_.Refill(input_.get()); if (is_eof_) { buffer_.AddBytes([&](cpp::span<std::byte> buf) -> size_t { - if (buf.size() < 8) { + if (buf.size() < MAD_BUFFER_GUARD) { is_eof_ = false; return 0; } - ESP_LOGI(kTag, "adding MAD_HEADER_GUARD"); - std::fill_n(buf.begin(), 8, std::byte(0)); + ESP_LOGI(kTag, "adding MAD_BUFFER_GUARD"); + std::fill_n(buf.begin(), MAD_BUFFER_GUARD, std::byte(0)); return 8; }); } @@ -132,7 +132,6 @@ auto MadMp3Decoder::DecodeTo(cpp::span<sample::Sample> output) } if (stream_.error == MAD_ERROR_BUFLEN) { if (is_eof_) { - ESP_LOGI(kTag, "BUFLEN while eof; this is eos"); is_eos_ = true; } return GetBytesUsed(); diff --git a/src/codecs/opus.cpp b/src/codecs/opus.cpp index e6e3a1af..6e9512b1 100644 --- a/src/codecs/opus.cpp +++ b/src/codecs/opus.cpp @@ -152,6 +152,9 @@ auto XiphOpusDecoder::DecodeTo(cpp::span<sample::Sample> output) } auto XiphOpusDecoder::SeekTo(size_t target) -> cpp::result<void, Error> { + if (op_pcm_seek(opus_, target) != 0) { + return cpp::fail(Error::kInternalError); + } return {}; } diff --git a/src/codecs/vorbis.cpp b/src/codecs/vorbis.cpp index cf783978..750ac9a8 100644 --- a/src/codecs/vorbis.cpp +++ b/src/codecs/vorbis.cpp @@ -152,6 +152,9 @@ auto TremorVorbisDecoder::DecodeTo(cpp::span<sample::Sample> output) } auto TremorVorbisDecoder::SeekTo(size_t target) -> cpp::result<void, Error> { + if (ov_pcm_seek(&vorbis_, target) != 0) { + return cpp::fail(Error::kInternalError); + } return {}; } |
