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

Commit 139a5d5b authored by Andreas Huber's avatar Andreas Huber
Browse files

Better handling of codec initialization failure in the player and thumbnail...

Better handling of codec initialization failure in the player and thumbnail extractor. Return a runtime error instead of asserting if the software MPEG4/H.263 decoder fails to initialize.

Change-Id: I5cba02ee85a41e43c2623053de40f26e2cf2efe4
related-to-bug: 2699505
parent 1edbcb2b
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -75,7 +75,12 @@ static void playSource(OMXClient *client, const sp<MediaSource> &source) {
        }
    }

    rawSource->start();
    status_t err = rawSource->start();

    if (err != OK) {
        fprintf(stderr, "rawSource returned error %d (0x%08x)\n", err, err);
        return;
    }

    if (gPlaybackAudio) {
        AudioPlayer *player = new AudioPlayer(NULL);
+6 −1
Original line number Diff line number Diff line
@@ -822,7 +822,12 @@ status_t AwesomePlayer::initVideoDecoder() {
        CHECK(mVideoTrack->getFormat()->findInt32(kKeyWidth, &mVideoWidth));
        CHECK(mVideoTrack->getFormat()->findInt32(kKeyHeight, &mVideoHeight));

        mVideoSource->start();
        status_t err = mVideoSource->start();

        if (err != OK) {
            mVideoSource.clear();
            return err;
        }
    }

    return mVideoSource != NULL ? OK : UNKNOWN_ERROR;
+5 −2
Original line number Diff line number Diff line
@@ -120,7 +120,11 @@ static VideoFrame *extractVideoFrameWithCodecFlags(
        return NULL;
    }

    decoder->start();
    status_t err = decoder->start();
    if (err != OK) {
        LOGW("OMXCodec::start returned error %d (0x%08x)\n", err, err);
        return NULL;
    }

    // Read one output buffer, ignore format change notifications
    // and spurious empty buffers.
@@ -134,7 +138,6 @@ static VideoFrame *extractVideoFrameWithCodecFlags(
    }

    MediaBuffer *buffer = NULL;
    status_t err;
    do {
        if (buffer != NULL) {
            buffer->release();
+9 −2
Original line number Diff line number Diff line
@@ -120,9 +120,16 @@ status_t M4vH263Decoder::start(MetaData *) {
        vol_size = 0;

    }
    CHECK_EQ(PV_TRUE, PVInitVideoDecoder(
            mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode));

    Bool success = PVInitVideoDecoder(
            mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode);
    if (vol_data[0]) free(vol_data[0]);

    if (success != PV_TRUE) {
        LOGW("PVInitVideoDecoder failed. Unsupported content?");
        return ERROR_UNSUPPORTED;
    }

    MP4DecodingMode actualMode = PVGetDecBitstreamMode(mHandle);
    CHECK_EQ(mode, actualMode);