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

Commit 8033393a authored by Patrik2 Carlsson's avatar Patrik2 Carlsson Committed by Zoran Jovanovic
Browse files

h264 streaming: make profile-level-id optional

profile-level-id is made optional according to rfc3984:
"If no profile-level-id is present, the Baseline Profile without
additional constraints at Level 1 MUST be implied."

Change-Id: If868468a48917ceccb963b8ac15767583da29723
parent ffb82943
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -110,13 +110,11 @@ static sp<ABuffer> MakeAVCCodecSpecificData(
    *height = 0;

    AString val;
    if (!GetAttribute(params, "profile-level-id", &val)) {
        return NULL;
    }

    sp<ABuffer> profileLevelID = decodeHex(val);
    CHECK(profileLevelID != NULL);
    sp<ABuffer> profileLevelID = NULL;
    if (GetAttribute(params, "profile-level-id", &val)) {
        profileLevelID = decodeHex(val);
        CHECK_EQ(profileLevelID->size(), 3u);
    }

    Vector<sp<ABuffer> > paramSets;

@@ -176,8 +174,15 @@ static sp<ABuffer> MakeAVCCodecSpecificData(
    uint8_t *out = csd->data();

    *out++ = 0x01;  // configurationVersion
    if (profileLevelID != NULL) {
        memcpy(out, profileLevelID->data(), 3);
        out += 3;
    } else {
        *out++ = 0x42; // Baseline profile
        *out++ = 0xE0; // Common subset for all profiles
        *out++ = 0x0A; // Level 1
    }

    *out++ = (0x3f << 2) | 1;  // lengthSize == 2 bytes
    *out++ = 0xe0 | numSeqParameterSets;