diff --git a/src/decoder/plugins/MadDecoderPlugin.cxx b/src/decoder/plugins/MadDecoderPlugin.cxx index aa8772859..7cc57b245 100644 --- a/src/decoder/plugins/MadDecoderPlugin.cxx +++ b/src/decoder/plugins/MadDecoderPlugin.cxx @@ -202,6 +202,11 @@ private: */ DecoderCommand SyncAndSend() noexcept; + /** + * @return false to stop decoding + */ + bool HandleCurrentFrame() noexcept; + bool Read() noexcept; }; @@ -919,7 +924,7 @@ MadDecoder::SyncAndSend() noexcept } inline bool -MadDecoder::Read() noexcept +MadDecoder::HandleCurrentFrame() noexcept { switch (mute_frame) { DecoderCommand cmd; @@ -956,6 +961,15 @@ MadDecoder::Read() noexcept return false; } + return true; +} + +inline bool +MadDecoder::Read() noexcept +{ + if (!HandleCurrentFrame()) + return false; + while (true) { MadDecoderAction ret; do {