Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62be8e17 authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Recover from a certain mp3 decoder error instead of signalling an error...

Merge "Recover from a certain mp3 decoder error instead of signalling an error and thereby stopping decoding."
parents e0e6a9c0 ff0c5c19
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -160,7 +160,12 @@ status_t MP3Decoder::read(
    mConfig->outputFrameSize = buffer->size() / sizeof(int16_t);
    mConfig->pOutputBuffer = static_cast<int16_t *>(buffer->data());

    if (pvmp3_framedecoder(mConfig, mDecoderBuf) != NO_DECODING_ERROR) {
    ERROR_CODE decoderErr;
    if ((decoderErr = pvmp3_framedecoder(mConfig, mDecoderBuf))
            != NO_DECODING_ERROR) {
        LOGV("mp3 decoder returned error %d", decoderErr);

        if (decoderErr != NO_ENOUGH_MAIN_DATA_ERROR) {
            buffer->release();
            buffer = NULL;

@@ -170,6 +175,12 @@ status_t MP3Decoder::read(
            return UNKNOWN_ERROR;
        }

        // This is recoverable, just ignore the current frame and
        // play silence instead.
        memset(buffer->data(), 0, mConfig->outputFrameSize);
        mConfig->inputBufferUsedLength = mInputBuffer->range_length();
    }

    buffer->set_range(
            0, mConfig->outputFrameSize * sizeof(int16_t));