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

Commit 6787e25a authored by Lajos Molnar's avatar Lajos Molnar Committed by Android (Google) Code Review
Browse files

Merge "stagefright: Add support for levels 6+ for AVC/H.264"

parents 05e6b175 568daf20
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -597,6 +597,9 @@ enum C2Config::level_t : uint32_t {
    LEVEL_AVC_5,                                ///< AVC (H.264) Level 5
    LEVEL_AVC_5,                                ///< AVC (H.264) Level 5
    LEVEL_AVC_5_1,                              ///< AVC (H.264) Level 5.1
    LEVEL_AVC_5_1,                              ///< AVC (H.264) Level 5.1
    LEVEL_AVC_5_2,                              ///< AVC (H.264) Level 5.2
    LEVEL_AVC_5_2,                              ///< AVC (H.264) Level 5.2
    LEVEL_AVC_6,                                ///< AVC (H.264) Level 6
    LEVEL_AVC_6_1,                              ///< AVC (H.264) Level 6.1
    LEVEL_AVC_6_2,                              ///< AVC (H.264) Level 6.2


    // HEVC (H.265) tiers and levels
    // HEVC (H.265) tiers and levels
    LEVEL_HEVC_MAIN_1 = _C2_PL_HEVC_BASE,       ///< HEVC (H.265) Main Tier Level 1
    LEVEL_HEVC_MAIN_1 = _C2_PL_HEVC_BASE,       ///< HEVC (H.265) Main Tier Level 1
+3 −1
Original line number Original line Diff line number Diff line
@@ -65,7 +65,9 @@ ALookup<C2Config::level_t, int32_t> sAvcLevels = {
    { C2Config::LEVEL_AVC_5,    AVCLevel5 },
    { C2Config::LEVEL_AVC_5,    AVCLevel5 },
    { C2Config::LEVEL_AVC_5_1,  AVCLevel51 },
    { C2Config::LEVEL_AVC_5_1,  AVCLevel51 },
    { C2Config::LEVEL_AVC_5_2,  AVCLevel52 },
    { C2Config::LEVEL_AVC_5_2,  AVCLevel52 },

    { C2Config::LEVEL_AVC_6,    AVCLevel6 },
    { C2Config::LEVEL_AVC_6_1,  AVCLevel61 },
    { C2Config::LEVEL_AVC_6_2,  AVCLevel62 },
};
};


ALookup<C2Config::profile_t, int32_t> sAvcProfiles = {
ALookup<C2Config::profile_t, int32_t> sAvcProfiles = {
+3 −0
Original line number Original line Diff line number Diff line
@@ -186,6 +186,9 @@ DEFINE_C2_ENUM_VALUE_CUSTOM_HELPER(C2Config::level_t, ({
        { "avc-5", C2Config::LEVEL_AVC_5 },
        { "avc-5", C2Config::LEVEL_AVC_5 },
        { "avc-5.1", C2Config::LEVEL_AVC_5_1 },
        { "avc-5.1", C2Config::LEVEL_AVC_5_1 },
        { "avc-5.2", C2Config::LEVEL_AVC_5_2 },
        { "avc-5.2", C2Config::LEVEL_AVC_5_2 },
        { "avc-6", C2Config::LEVEL_AVC_6 },
        { "avc-6.1", C2Config::LEVEL_AVC_6_1 },
        { "avc-6.2", C2Config::LEVEL_AVC_6_2 },
        { "hevc-main-1", C2Config::LEVEL_HEVC_MAIN_1 },
        { "hevc-main-1", C2Config::LEVEL_HEVC_MAIN_1 },
        { "hevc-main-2", C2Config::LEVEL_HEVC_MAIN_2 },
        { "hevc-main-2", C2Config::LEVEL_HEVC_MAIN_2 },
        { "hevc-main-2.1", C2Config::LEVEL_HEVC_MAIN_2_1 },
        { "hevc-main-2.1", C2Config::LEVEL_HEVC_MAIN_2_1 },
+21 −18
Original line number Original line Diff line number Diff line
@@ -4316,6 +4316,9 @@ int /* OMX_VIDEO_AVCLEVELTYPE */ ACodec::getAVCLevelFor(
        {   589824,  22080,  420, 135000, OMX_VIDEO_AVCLevel5  },
        {   589824,  22080,  420, 135000, OMX_VIDEO_AVCLevel5  },
        {   983040,  36864,  543, 240000, OMX_VIDEO_AVCLevel51 },
        {   983040,  36864,  543, 240000, OMX_VIDEO_AVCLevel51 },
        {  2073600,  36864,  543, 240000, OMX_VIDEO_AVCLevel52 },
        {  2073600,  36864,  543, 240000, OMX_VIDEO_AVCLevel52 },
        {  4177920, 139264, 1055, 240000, OMX_VIDEO_AVCLevel6  },
        {  8355840, 139264, 1055, 480000, OMX_VIDEO_AVCLevel61 },
        { 16711680, 139264, 1055, 800000, OMX_VIDEO_AVCLevel62 },
    };
    };


    for (size_t i = 0; i < ARRAY_SIZE(limits); i++) {
    for (size_t i = 0; i < ARRAY_SIZE(limits); i++) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -192,6 +192,9 @@ static void parseAvcProfileLevelFromAvcc(const uint8_t *ptr, size_t size, sp<AMe
        { 50, OMX_VIDEO_AVCLevel5  },
        { 50, OMX_VIDEO_AVCLevel5  },
        { 51, OMX_VIDEO_AVCLevel51 },
        { 51, OMX_VIDEO_AVCLevel51 },
        { 52, OMX_VIDEO_AVCLevel52 },
        { 52, OMX_VIDEO_AVCLevel52 },
        { 60, OMX_VIDEO_AVCLevel6  },
        { 61, OMX_VIDEO_AVCLevel61 },
        { 62, OMX_VIDEO_AVCLevel62 },
    };
    };
    const static ALookup<uint8_t, OMX_VIDEO_AVCPROFILETYPE> profiles {
    const static ALookup<uint8_t, OMX_VIDEO_AVCPROFILETYPE> profiles {
        { 66, OMX_VIDEO_AVCProfileBaseline },
        { 66, OMX_VIDEO_AVCProfileBaseline },