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

Commit e7635933 authored by Andreas Huber's avatar Andreas Huber
Browse files

Depending on our preference to write 2-byte or 4-byte NALs, patch the codec...

Depending on our preference to write 2-byte or 4-byte NALs, patch the codec specific data 'avcC' accordingly.

Change-Id: I1423923fafbcac6911218277e2bbfa068e49dcc6
parent e87ebb08
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2111,7 +2111,15 @@ void MPEG4Writer::Track::writeTrackHeader(
                      mOwner->endBox();  // d263
                  } else if (!strcasecmp(MEDIA_MIMETYPE_VIDEO_AVC, mime)) {
                      CHECK(mCodecSpecificData);
                      CHECK(mCodecSpecificDataSize > 0);
                      CHECK(mCodecSpecificDataSize >= 5);

                      // Patch avcc's lengthSize field to match the number
                      // of bytes we use to indicate the size of a nal unit.
                      uint8_t *ptr = (uint8_t *)mCodecSpecificData;
                      ptr[4] =
                          (ptr[4] & 0xfc)
                            | (mOwner->useNalLengthFour() ? 3 : 1);

                      mOwner->beginBox("avcC");
                        mOwner->write(mCodecSpecificData, mCodecSpecificDataSize);
                      mOwner->endBox();  // avcC