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

Commit 6a9411ca authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "am-3bd7761d-0a22-43c4-98aa-44bfc62874ad" into cw-f-dev

* changes:
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363 am: 87ddba14 am: a1284afb am: 127bf025 am: 066a8f10 am: 5c8526df
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363 am: 87ddba14 am: a1284afb am: 127bf025 am: 066a8f10
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363 am: 87ddba14 am: a1284afb am: 127bf025
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363 am: 87ddba14 am: a1284afb
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363 am: 87ddba14
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0 am: e3f5c363
  [automerger] better mpeg2 TS elementary stream Access Unit parsing am: 371066d0
  better mpeg2 TS elementary stream Access Unit parsing
parents 04ba4099 7a013b32
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -1202,7 +1202,9 @@ static ssize_t getNextChunkSize(
        const uint8_t *data, size_t size) {
        const uint8_t *data, size_t size) {
    static const char kStartCode[] = "\x00\x00\x01";
    static const char kStartCode[] = "\x00\x00\x01";


    if (size < 3) {
    // per ISO/IEC 14496-2 6.2.1, a chunk has a 3-byte prefix + 1-byte start code
    // we need at least <prefix><start><next prefix> to successfully scan
    if (size < 3 + 1 + 3) {
        return -EAGAIN;
        return -EAGAIN;
    }
    }


@@ -1210,7 +1212,7 @@ static ssize_t getNextChunkSize(
        return -EAGAIN;
        return -EAGAIN;
    }
    }


    size_t offset = 3;
    size_t offset = 4;
    while (offset + 2 < size) {
    while (offset + 2 < size) {
        if (!memcmp(&data[offset], kStartCode, 3)) {
        if (!memcmp(&data[offset], kStartCode, 3)) {
            return offset;
            return offset;
@@ -1261,6 +1263,9 @@ sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitMPEG4Video() {
                    state = EXPECT_VISUAL_OBJECT_START;
                    state = EXPECT_VISUAL_OBJECT_START;
                } else {
                } else {
                    discard = true;
                    discard = true;
                    offset += chunkSize;
                    ALOGW("b/74114680, advance to next chunk");
                    android_errorWriteLog(0x534e4554, "74114680");
                }
                }
                break;
                break;
            }
            }