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 output) is_eof_ = buffer_.Refill(input_.get()); if (is_eof_) { buffer_.AddBytes([&](cpp::span 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 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 output) } auto XiphOpusDecoder::SeekTo(size_t target) -> cpp::result { + 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 output) } auto TremorVorbisDecoder::SeekTo(size_t target) -> cpp::result { + if (ov_pcm_seek(&vorbis_, target) != 0) { + return cpp::fail(Error::kInternalError); + } return {}; }