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

Commit 6e80328a authored by Hangyu Kuang's avatar Hangyu Kuang
Browse files

media: Gracefully return when receiving multiple codec specific data.

Test: Run MediaRecorder and MediaMuxer CTS test
Bug: 34036127
Change-Id: I0b3b45850cbab07ac36bd9c8bfd5868caf199a53
parent e482d3a8
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -2570,19 +2570,17 @@ status_t MPEG4Writer::Track::threadEntry() {
                ALOGI("ignoring additional CSD for video track after first frame");
            } else {
                mMeta = mSource->getFormat(); // get output format after format change

                status_t err;
                if (mIsAvc) {
                    status_t err = makeAVCCodecSpecificData(
                    err = makeAVCCodecSpecificData(
                            (const uint8_t *)buffer->data()
                                + buffer->range_offset(),
                            buffer->range_length());
                    CHECK_EQ((status_t)OK, err);
                } else if (mIsHevc) {
                    status_t err = makeHEVCCodecSpecificData(
                    err = makeHEVCCodecSpecificData(
                            (const uint8_t *)buffer->data()
                                + buffer->range_offset(),
                            buffer->range_length());
                    CHECK_EQ((status_t)OK, err);
                } else if (mIsMPEG4) {
                    copyCodecSpecificData((const uint8_t *)buffer->data() + buffer->range_offset(),
                            buffer->range_length());
@@ -2591,6 +2589,12 @@ status_t MPEG4Writer::Track::threadEntry() {

            buffer->release();
            buffer = NULL;
            if (OK != err) {
                mSource->stop();
                mOwner->notify(MEDIA_RECORDER_TRACK_EVENT_ERROR,
                       mTrackId | MEDIA_RECORDER_TRACK_ERROR_GENERAL, err);
                break;
            }

            mGotAllCodecSpecificData = true;
            continue;