From a440d71bef42a2c9cc10d9f3f49fa097257d25f9 Mon Sep 17 00:00:00 2001 From: ailurux Date: Mon, 22 Jul 2024 16:04:20 +1000 Subject: [PATCH] Continue decoding even if OV_HOLE is returned --- src/codecs/vorbis.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/codecs/vorbis.cpp b/src/codecs/vorbis.cpp index 0b2af691..ea33a2af 100644 --- a/src/codecs/vorbis.cpp +++ b/src/codecs/vorbis.cpp @@ -137,10 +137,15 @@ auto TremorVorbisDecoder::DecodeTo(std::span output) ((output.size() - 1) * sizeof(sample::Sample)), &unused); if (bytes_written == OV_HOLE) { ESP_LOGE(kTag, "got OV_HOLE"); - return cpp::fail(Error::kMalformedData); + return OutputInfo{ + .samples_written = 0, + .is_stream_finished = false, + }; } else if (bytes_written == OV_EBADLINK) { ESP_LOGE(kTag, "got OV_EBADLINK"); return cpp::fail(Error::kMalformedData); + } else if (bytes_written == OV_EINVAL) { + return cpp::fail(Error::kMalformedData); } return OutputInfo{