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

Commit 986274d9 authored by Hangyu Kuang's avatar Hangyu Kuang
Browse files

MPEG4Writer: Handle writing of multiple NAL unit.

Some HEVC encoder outputs buffer that with multiple NAL unit.

Bug: 71568797
Test: Video Encoding and playback the video on PC
Change-Id: I83d8d163322f11dd134bdcef1b944a10cb710349
parent cda259fb
Loading
Loading
Loading
Loading
+1 −4
Original line number Original line Diff line number Diff line
@@ -1376,15 +1376,12 @@ static void StripStartcode(MediaBuffer *buffer) {
}
}


void MPEG4Writer::addMultipleLengthPrefixedSamples_l(MediaBuffer *buffer) {
void MPEG4Writer::addMultipleLengthPrefixedSamples_l(MediaBuffer *buffer) {
    const size_t kExtensionNALSearchRange = 64; // bytes to look for non-VCL NALUs

    const uint8_t *dataStart = (const uint8_t *)buffer->data() + buffer->range_offset();
    const uint8_t *dataStart = (const uint8_t *)buffer->data() + buffer->range_offset();
    const uint8_t *currentNalStart = dataStart;
    const uint8_t *currentNalStart = dataStart;
    const uint8_t *nextNalStart;
    const uint8_t *nextNalStart;
    const uint8_t *data = dataStart;
    const uint8_t *data = dataStart;
    size_t nextNalSize;
    size_t nextNalSize;
    size_t searchSize = buffer->range_length() > kExtensionNALSearchRange ?
    size_t searchSize = buffer->range_length();
                   kExtensionNALSearchRange : buffer->range_length();


    while (getNextNALUnit(&data, &searchSize, &nextNalStart,
    while (getNextNALUnit(&data, &searchSize, &nextNalStart,
            &nextNalSize, true) == OK) {
            &nextNalSize, true) == OK) {