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

Commit ac8e7060 authored by Andreas Huber's avatar Andreas Huber Committed by Android Git Automerger
Browse files

am 86d2c088: Merge "Don\'t return a decoder error if the encoded stream does...

am 86d2c088: Merge "Don\'t return a decoder error if the encoded stream does not start with SPS/PPS." into gingerbread

Merge commit '86d2c088' into gingerbread-plus-aosp

* commit '86d2c088':
  Don't return a decoder error if the encoded stream does not start with SPS/PPS.
parents 1f513d88 86d2c088
Loading
Loading
Loading
Loading
+146 −130
Original line number Diff line number Diff line
@@ -53,7 +53,9 @@ AVCDecoder::AVCDecoder(const sp<MediaSource> &source)
      mNumSamplesOutput(0),
      mPendingSeekTimeUs(-1),
      mPendingSeekMode(MediaSource::ReadOptions::SEEK_CLOSEST_SYNC),
      mTargetTimeUs(-1) {
      mTargetTimeUs(-1),
      mSPSSeen(false),
      mPPSSeen(false) {
    memset(mHandle, 0, sizeof(tagAVCHandle));
    mHandle->AVCObject = NULL;
    mHandle->userData = this;
@@ -165,6 +167,8 @@ status_t AVCDecoder::start(MetaData *) {
    mPendingSeekTimeUs = -1;
    mPendingSeekMode = ReadOptions::SEEK_CLOSEST_SYNC;
    mTargetTimeUs = -1;
    mSPSSeen = false;
    mPPSSeen = false;
    mStarted = true;

    return OK;
@@ -314,9 +318,13 @@ status_t AVCDecoder::read(

    if (res != AVCDEC_SUCCESS) {
        LOGE("cannot determine nal type");
    } else switch (nalType) {
    } else if (nalType == AVC_NALTYPE_SPS || nalType == AVC_NALTYPE_PPS
                || (mSPSSeen && mPPSSeen)) {
        switch (nalType) {
            case AVC_NALTYPE_SPS:
            {
                mSPSSeen = true;

                res = PVAVCDecSeqParamSet(
                        mHandle, const_cast<uint8_t *>(fragPtr),
                        fragSize);
@@ -381,6 +389,8 @@ status_t AVCDecoder::read(

            case AVC_NALTYPE_PPS:
            {
                mPPSSeen = true;

                res = PVAVCDecPicParamSet(
                        mHandle, const_cast<uint8_t *>(fragPtr),
                        fragSize);
@@ -493,6 +503,12 @@ status_t AVCDecoder::read(
                break;
            }
        }
    } else {
        // We haven't seen SPS or PPS yet.

        *out = new MediaBuffer(0);
        err = OK;
    }

    if (releaseFragment) {
        size_t offset = mInputBuffer->range_offset();
+3 −0
Original line number Diff line number Diff line
@@ -62,6 +62,9 @@ private:

    int64_t mTargetTimeUs;

    bool mSPSSeen;
    bool mPPSSeen;

    void addCodecSpecificData(const uint8_t *data, size_t size);

    static int32_t ActivateSPSWrapper(