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

Commit 0daba571 authored by Chong Zhang's avatar Chong Zhang Committed by android-build-merger
Browse files

Merge "Fix HEVC profile idc parsing in HevcParameterSets" into pi-dev am: fa33327e

am: 18008a8b

Change-Id: I6c37c75cec4507408ef0c826e25721de16d015b1
parents 1b0807d8 18008a8b
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -162,6 +162,8 @@ status_t HevcParameterSets::parseVps(const uint8_t* data, size_t size) {
    reader.skipBits(1);
    // Skip vps_max_layers_minus_1
    reader.skipBits(6);
    // Skip vps_max_sub_layers_minus1
    reader.skipBits(3);
    // Skip vps_temporal_id_nesting_flags
    reader.skipBits(1);
    // Skip reserved
@@ -422,7 +424,7 @@ status_t HevcParameterSets::makeHvcc(uint8_t *hvcc, size_t *hvccSize,

    uint8_t *header = hvcc;
    header[0] = 1;
    header[1] = (kGeneralProfileSpace << 6) | (kGeneralTierFlag << 5) | kGeneralProfileIdc;
    header[1] = (generalProfileSpace << 6) | (generalTierFlag << 5) | generalProfileIdc;
    header[2] = (compatibilityFlags >> 24) & 0xff;
    header[3] = (compatibilityFlags >> 16) & 0xff;
    header[4] = (compatibilityFlags >> 8) & 0xff;
+3 −0
Original line number Diff line number Diff line
@@ -303,6 +303,8 @@ static void parseHevcProfileLevelFromHvcc(const uint8_t *ptr, size_t size, sp<AM
    const static ALookup<uint8_t, OMX_VIDEO_HEVCPROFILETYPE> profiles {
        { 1, OMX_VIDEO_HEVCProfileMain   },
        { 2, OMX_VIDEO_HEVCProfileMain10 },
        // use Main for Main Still Picture decoding
        { 3, OMX_VIDEO_HEVCProfileMain },
    };

    // set profile & level if they are recognized
@@ -310,6 +312,7 @@ static void parseHevcProfileLevelFromHvcc(const uint8_t *ptr, size_t size, sp<AM
    OMX_VIDEO_HEVCLEVELTYPE codecLevel;
    if (!profiles.map(profile, &codecProfile)) {
        if (ptr[2] & 0x40 /* general compatibility flag 1 */) {
            // Note that this case covers Main Still Picture too
            codecProfile = OMX_VIDEO_HEVCProfileMain;
        } else if (ptr[2] & 0x20 /* general compatibility flag 2 */) {
            codecProfile = OMX_VIDEO_HEVCProfileMain10;
+2 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ namespace android {

static const CodecProfileLevel kProfileLevels[] = {
    { OMX_VIDEO_HEVCProfileMain,      OMX_VIDEO_HEVCMainTierLevel51 },
    { OMX_VIDEO_HEVCProfileMainStill, OMX_VIDEO_HEVCMainTierLevel51 },
};

SoftHEVC::SoftHEVC(