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

Commit 51638619 authored by Lajos Molnar's avatar Lajos Molnar Committed by Automerger Merge Worker
Browse files

Merge "stagefright: add new Dolby Vision Levels" am: 5fcf9974 am: 8ca1d483 am: d01852fe

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1962287

Change-Id: Ia64c6aa35ecabafc41e8c8fbf72f686df1482f0d
parents d68e044b d01852fe
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -687,6 +687,9 @@ enum C2Config::level_t : uint32_t {
    LEVEL_DV_MAIN_UHD_30,                       ///< Dolby Vision main tier uhd30
    LEVEL_DV_MAIN_UHD_48,                       ///< Dolby Vision main tier uhd48
    LEVEL_DV_MAIN_UHD_60,                       ///< Dolby Vision main tier uhd60
    LEVEL_DV_MAIN_UHD_120,                      ///< Dolby Vision main tier uhd120
    LEVEL_DV_MAIN_8K_30,                        ///< Dolby Vision main tier 8k30
    LEVEL_DV_MAIN_8K_60,                        ///< Dolby Vision main tier 8k60

    LEVEL_DV_HIGH_HD_24 = _C2_PL_DV_BASE + 0x100,  ///< Dolby Vision high tier hd24
    LEVEL_DV_HIGH_HD_30,                        ///< Dolby Vision high tier hd30
@@ -697,6 +700,9 @@ enum C2Config::level_t : uint32_t {
    LEVEL_DV_HIGH_UHD_30,                       ///< Dolby Vision high tier uhd30
    LEVEL_DV_HIGH_UHD_48,                       ///< Dolby Vision high tier uhd48
    LEVEL_DV_HIGH_UHD_60,                       ///< Dolby Vision high tier uhd60
    LEVEL_DV_HIGH_UHD_120,                      ///< Dolby Vision high tier uhd120
    LEVEL_DV_HIGH_8K_30,                        ///< Dolby Vision high tier 8k30
    LEVEL_DV_HIGH_8K_60,                        ///< Dolby Vision high tier 8k60

    // AV1 levels
    LEVEL_AV1_2    = _C2_PL_AV1_BASE ,          ///< AV1 Level 2
+6 −0
Original line number Diff line number Diff line
@@ -167,6 +167,9 @@ ALookup<C2Config::level_t, int32_t> sDolbyVisionLevels = {
    { C2Config::LEVEL_DV_MAIN_UHD_30, DolbyVisionLevelUhd30 },
    { C2Config::LEVEL_DV_MAIN_UHD_48, DolbyVisionLevelUhd48 },
    { C2Config::LEVEL_DV_MAIN_UHD_60, DolbyVisionLevelUhd60 },
    { C2Config::LEVEL_DV_MAIN_UHD_120, DolbyVisionLevelUhd120 },
    { C2Config::LEVEL_DV_MAIN_8K_30,  DolbyVisionLevel8k30 },
    { C2Config::LEVEL_DV_MAIN_8K_60,  DolbyVisionLevel8k60 },

    // high tiers are not yet supported on android, for now map them to main tier
    { C2Config::LEVEL_DV_HIGH_HD_24,  DolbyVisionLevelHd24 },
@@ -178,6 +181,9 @@ ALookup<C2Config::level_t, int32_t> sDolbyVisionLevels = {
    { C2Config::LEVEL_DV_HIGH_UHD_30, DolbyVisionLevelUhd30 },
    { C2Config::LEVEL_DV_HIGH_UHD_48, DolbyVisionLevelUhd48 },
    { C2Config::LEVEL_DV_HIGH_UHD_60, DolbyVisionLevelUhd60 },
    { C2Config::LEVEL_DV_HIGH_UHD_120, DolbyVisionLevelUhd120 },
    { C2Config::LEVEL_DV_HIGH_8K_30,  DolbyVisionLevel8k30 },
    { C2Config::LEVEL_DV_HIGH_8K_60,  DolbyVisionLevel8k60 },
};

ALookup<C2Config::profile_t, int32_t> sDolbyVisionProfiles = {
+6 −0
Original line number Diff line number Diff line
@@ -285,6 +285,9 @@ static void parseDolbyVisionProfileLevelFromDvcc(const uint8_t *ptr, size_t size
        {7, DolbyVisionLevelUhd30},
        {8, DolbyVisionLevelUhd48},
        {9, DolbyVisionLevelUhd60},
        {10, DolbyVisionLevelUhd120},
        {11, DolbyVisionLevel8k30},
        {12, DolbyVisionLevel8k60},
    };
    // set rpuAssoc
    if (rpu_present_flag && el_present_flag && !bl_present_flag) {
@@ -2073,6 +2076,9 @@ status_t convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) {
                        {DolbyVisionLevelUhd30, 7},
                        {DolbyVisionLevelUhd48, 8},
                        {DolbyVisionLevelUhd60, 9},
                        {DolbyVisionLevelUhd120, 10},
                        {DolbyVisionLevel8k30, 11},
                        {DolbyVisionLevel8k60, 12},
                    };
                    levels.map(level, &level_val);
                    ALOGV("found dolby vision level: %d, value: %d", level, level_val);
+6 −0
Original line number Diff line number Diff line
@@ -540,6 +540,9 @@ constexpr int32_t DolbyVisionLevelUhd24 = 0x20;
constexpr int32_t DolbyVisionLevelUhd30   = 0x40;
constexpr int32_t DolbyVisionLevelUhd48   = 0x80;
constexpr int32_t DolbyVisionLevelUhd60   = 0x100;
constexpr int32_t DolbyVisionLevelUhd120  = 0x200;
constexpr int32_t DolbyVisionLevel8k30    = 0x400;
constexpr int32_t DolbyVisionLevel8k60    = 0x800;

inline static const char *asString_DolbyVisionLevel(int32_t i, const char *def = "??") {
    switch (i) {
@@ -552,6 +555,9 @@ inline static const char *asString_DolbyVisionLevel(int32_t i, const char *def =
        case DolbyVisionLevelUhd30: return "Uhd30";
        case DolbyVisionLevelUhd48: return "Uhd48";
        case DolbyVisionLevelUhd60: return "Uhd60";
        case DolbyVisionLevelUhd120: return "Uhd120";
        case DolbyVisionLevel8k30:  return "8k30";
        case DolbyVisionLevel8k60:  return "8k60";
        default:                    return def;
    }
}