stagefright: add asString for MediaCodecConstants enumerations
Also add level 6+ for AVC
Bug: 119631295
Change-Id: I57abab1b9b55dc67eb9cc2eab5f94ae83309d62d
diff --git a/media/libstagefright/include/media/stagefright/MediaCodecConstants.h b/media/libstagefright/include/media/stagefright/MediaCodecConstants.h
index 984c23d..c06c288 100644
--- a/media/libstagefright/include/media/stagefright/MediaCodecConstants.h
+++ b/media/libstagefright/include/media/stagefright/MediaCodecConstants.h
@@ -31,6 +31,21 @@
constexpr int32_t AVCProfileConstrainedBaseline = 0x10000;
constexpr int32_t AVCProfileConstrainedHigh = 0x80000;
+inline static const char *asString_AVCProfile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case AVCProfileBaseline: return "Baseline";
+ case AVCProfileMain: return "Main";
+ case AVCProfileExtended: return "Extended";
+ case AVCProfileHigh: return "High";
+ case AVCProfileHigh10: return "High10";
+ case AVCProfileHigh422: return "High422";
+ case AVCProfileHigh444: return "High444";
+ case AVCProfileConstrainedBaseline: return "ConstrainedBaseline";
+ case AVCProfileConstrainedHigh: return "ConstrainedHigh";
+ default: return def;
+ }
+}
+
constexpr int32_t AVCLevel1 = 0x01;
constexpr int32_t AVCLevel1b = 0x02;
constexpr int32_t AVCLevel11 = 0x04;
@@ -48,6 +63,35 @@
constexpr int32_t AVCLevel5 = 0x4000;
constexpr int32_t AVCLevel51 = 0x8000;
constexpr int32_t AVCLevel52 = 0x10000;
+constexpr int32_t AVCLevel6 = 0x20000;
+constexpr int32_t AVCLevel61 = 0x40000;
+constexpr int32_t AVCLevel62 = 0x80000;
+
+inline static const char *asString_AVCLevel(int32_t i, const char *def = "??") {
+ switch (i) {
+ case AVCLevel1: return "1";
+ case AVCLevel1b: return "1b";
+ case AVCLevel11: return "1.1";
+ case AVCLevel12: return "1.2";
+ case AVCLevel13: return "1.3";
+ case AVCLevel2: return "2";
+ case AVCLevel21: return "2.1";
+ case AVCLevel22: return "2.2";
+ case AVCLevel3: return "3";
+ case AVCLevel31: return "3.1";
+ case AVCLevel32: return "3.2";
+ case AVCLevel4: return "4";
+ case AVCLevel41: return "4.1";
+ case AVCLevel42: return "4.2";
+ case AVCLevel5: return "5";
+ case AVCLevel51: return "5.1";
+ case AVCLevel52: return "5.2";
+ case AVCLevel6: return "6";
+ case AVCLevel61: return "6.1";
+ case AVCLevel62: return "6.2";
+ default: return def;
+ }
+}
constexpr int32_t H263ProfileBaseline = 0x01;
constexpr int32_t H263ProfileH320Coding = 0x02;
@@ -59,6 +103,21 @@
constexpr int32_t H263ProfileInterlace = 0x80;
constexpr int32_t H263ProfileHighLatency = 0x100;
+inline static const char *asString_H263Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case H263ProfileBaseline: return "Baseline";
+ case H263ProfileH320Coding: return "H320Coding";
+ case H263ProfileBackwardCompatible: return "BackwardCompatible";
+ case H263ProfileISWV2: return "ISWV2";
+ case H263ProfileISWV3: return "ISWV3";
+ case H263ProfileHighCompression: return "HighCompression";
+ case H263ProfileInternet: return "Internet";
+ case H263ProfileInterlace: return "Interlace";
+ case H263ProfileHighLatency: return "HighLatency";
+ default: return def;
+ }
+}
+
constexpr int32_t H263Level10 = 0x01;
constexpr int32_t H263Level20 = 0x02;
constexpr int32_t H263Level30 = 0x04;
@@ -68,6 +127,20 @@
constexpr int32_t H263Level60 = 0x40;
constexpr int32_t H263Level70 = 0x80;
+inline static const char *asString_H263Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case H263Level10: return "10";
+ case H263Level20: return "20";
+ case H263Level30: return "30";
+ case H263Level40: return "40";
+ case H263Level45: return "45";
+ case H263Level50: return "50";
+ case H263Level60: return "60";
+ case H263Level70: return "70";
+ default: return def;
+ }
+}
+
constexpr int32_t MPEG4ProfileSimple = 0x01;
constexpr int32_t MPEG4ProfileSimpleScalable = 0x02;
constexpr int32_t MPEG4ProfileCore = 0x04;
@@ -85,6 +158,28 @@
constexpr int32_t MPEG4ProfileAdvancedScalable = 0x4000;
constexpr int32_t MPEG4ProfileAdvancedSimple = 0x8000;
+inline static const char *asString_MPEG4Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case MPEG4ProfileSimple: return "Simple";
+ case MPEG4ProfileSimpleScalable: return "SimpleScalable";
+ case MPEG4ProfileCore: return "Core";
+ case MPEG4ProfileMain: return "Main";
+ case MPEG4ProfileNbit: return "Nbit";
+ case MPEG4ProfileScalableTexture: return "ScalableTexture";
+ case MPEG4ProfileSimpleFace: return "SimpleFace";
+ case MPEG4ProfileSimpleFBA: return "SimpleFBA";
+ case MPEG4ProfileBasicAnimated: return "BasicAnimated";
+ case MPEG4ProfileHybrid: return "Hybrid";
+ case MPEG4ProfileAdvancedRealTime: return "AdvancedRealTime";
+ case MPEG4ProfileCoreScalable: return "CoreScalable";
+ case MPEG4ProfileAdvancedCoding: return "AdvancedCoding";
+ case MPEG4ProfileAdvancedCore: return "AdvancedCore";
+ case MPEG4ProfileAdvancedScalable: return "AdvancedScalable";
+ case MPEG4ProfileAdvancedSimple: return "AdvancedSimple";
+ default: return def;
+ }
+}
+
constexpr int32_t MPEG4Level0 = 0x01;
constexpr int32_t MPEG4Level0b = 0x02;
constexpr int32_t MPEG4Level1 = 0x04;
@@ -96,6 +191,22 @@
constexpr int32_t MPEG4Level5 = 0x80;
constexpr int32_t MPEG4Level6 = 0x100;
+inline static const char *asString_MPEG4Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case MPEG4Level0: return "0";
+ case MPEG4Level0b: return "0b";
+ case MPEG4Level1: return "1";
+ case MPEG4Level2: return "2";
+ case MPEG4Level3: return "3";
+ case MPEG4Level3b: return "3b";
+ case MPEG4Level4: return "4";
+ case MPEG4Level4a: return "4a";
+ case MPEG4Level5: return "5";
+ case MPEG4Level6: return "6";
+ default: return def;
+ }
+}
+
constexpr int32_t MPEG2ProfileSimple = 0x00;
constexpr int32_t MPEG2ProfileMain = 0x01;
constexpr int32_t MPEG2Profile422 = 0x02;
@@ -103,12 +214,35 @@
constexpr int32_t MPEG2ProfileSpatial = 0x04;
constexpr int32_t MPEG2ProfileHigh = 0x05;
+inline static const char *asString_MPEG2Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case MPEG2ProfileSimple: return "Simple";
+ case MPEG2ProfileMain: return "Main";
+ case MPEG2Profile422: return "422";
+ case MPEG2ProfileSNR: return "SNR";
+ case MPEG2ProfileSpatial: return "Spatial";
+ case MPEG2ProfileHigh: return "High";
+ default: return def;
+ }
+}
+
constexpr int32_t MPEG2LevelLL = 0x00;
constexpr int32_t MPEG2LevelML = 0x01;
constexpr int32_t MPEG2LevelH14 = 0x02;
constexpr int32_t MPEG2LevelHL = 0x03;
constexpr int32_t MPEG2LevelHP = 0x04;
+inline static const char *asString_MPEG2Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case MPEG2LevelLL: return "LL";
+ case MPEG2LevelML: return "ML";
+ case MPEG2LevelH14: return "H14";
+ case MPEG2LevelHL: return "HL";
+ case MPEG2LevelHP: return "HP";
+ default: return def;
+ }
+}
+
constexpr int32_t AACObjectMain = 1;
constexpr int32_t AACObjectLC = 2;
constexpr int32_t AACObjectSSR = 3;
@@ -122,13 +256,48 @@
constexpr int32_t AACObjectELD = 39;
constexpr int32_t AACObjectXHE = 42;
+inline static const char *asString_AACObject(int32_t i, const char *def = "??") {
+ switch (i) {
+ case AACObjectMain: return "Main";
+ case AACObjectLC: return "LC";
+ case AACObjectSSR: return "SSR";
+ case AACObjectLTP: return "LTP";
+ case AACObjectHE: return "HE";
+ case AACObjectScalable: return "Scalable";
+ case AACObjectERLC: return "ERLC";
+ case AACObjectERScalable: return "ERScalable";
+ case AACObjectLD: return "LD";
+ case AACObjectHE_PS: return "HE_PS";
+ case AACObjectELD: return "ELD";
+ case AACObjectXHE: return "XHE";
+ default: return def;
+ }
+}
+
constexpr int32_t VP8Level_Version0 = 0x01;
constexpr int32_t VP8Level_Version1 = 0x02;
constexpr int32_t VP8Level_Version2 = 0x04;
constexpr int32_t VP8Level_Version3 = 0x08;
+inline static const char *asString_VP8Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case VP8Level_Version0: return "V0";
+ case VP8Level_Version1: return "V1";
+ case VP8Level_Version2: return "V2";
+ case VP8Level_Version3: return "V3";
+ default: return def;
+ }
+}
+
constexpr int32_t VP8ProfileMain = 0x01;
+inline static const char *asString_VP8Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case VP8ProfileMain: return "Main";
+ default: return def;
+ }
+}
+
constexpr int32_t VP9Profile0 = 0x01;
constexpr int32_t VP9Profile1 = 0x02;
constexpr int32_t VP9Profile2 = 0x04;
@@ -138,6 +307,20 @@
constexpr int32_t VP9Profile2HDR10Plus = 0x4000;
constexpr int32_t VP9Profile3HDR10Plus = 0x8000;
+inline static const char *asString_VP9Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case VP9Profile0: return "0";
+ case VP9Profile1: return "1";
+ case VP9Profile2: return "2";
+ case VP9Profile3: return "3";
+ case VP9Profile2HDR: return "2HDR";
+ case VP9Profile3HDR: return "3HDR";
+ case VP9Profile2HDR10Plus: return "2HDRPlus";
+ case VP9Profile3HDR10Plus: return "3HDRPlus";
+ default: return def;
+ }
+}
+
constexpr int32_t VP9Level1 = 0x1;
constexpr int32_t VP9Level11 = 0x2;
constexpr int32_t VP9Level2 = 0x4;
@@ -153,10 +336,39 @@
constexpr int32_t VP9Level61 = 0x1000;
constexpr int32_t VP9Level62 = 0x2000;
+inline static const char *asString_VP9Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case VP9Level1: return "1";
+ case VP9Level11: return "1.1";
+ case VP9Level2: return "2";
+ case VP9Level21: return "2.1";
+ case VP9Level3: return "3";
+ case VP9Level31: return "3.1";
+ case VP9Level4: return "4";
+ case VP9Level41: return "4.1";
+ case VP9Level5: return "5";
+ case VP9Level51: return "5.1";
+ case VP9Level52: return "5.2";
+ case VP9Level6: return "6";
+ case VP9Level61: return "6.1";
+ case VP9Level62: return "6.2";
+ default: return def;
+ }
+}
+
constexpr int32_t AV1Profile0 = 0x01;
constexpr int32_t AV1Profile1 = 0x02;
constexpr int32_t AV1Profile2 = 0x04;
+inline static const char *asString_AV1Profile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case AV1Profile0: return "0";
+ case AV1Profile1: return "1";
+ case AV1Profile2: return "2";
+ default: return def;
+ }
+}
+
constexpr int32_t AV1Level2 = 0x1;
constexpr int32_t AV1Level21 = 0x2;
constexpr int32_t AV1Level22 = 0x4;
@@ -182,12 +394,53 @@
constexpr int32_t AV1Level72 = 0x400000;
constexpr int32_t AV1Level73 = 0x800000;
+inline static const char *asString_AV1Level(int32_t i, const char *def = "??") {
+ switch (i) {
+ case AV1Level2: return "2";
+ case AV1Level21: return "2.1";
+ case AV1Level22: return "2.2";
+ case AV1Level23: return "2.3";
+ case AV1Level3: return "3";
+ case AV1Level31: return "3.1";
+ case AV1Level32: return "3.2";
+ case AV1Level33: return "3.3";
+ case AV1Level4: return "4";
+ case AV1Level41: return "4.1";
+ case AV1Level42: return "4.2";
+ case AV1Level43: return "4.3";
+ case AV1Level5: return "5";
+ case AV1Level51: return "5.1";
+ case AV1Level52: return "5.2";
+ case AV1Level53: return "5.3";
+ case AV1Level6: return "6";
+ case AV1Level61: return "6.1";
+ case AV1Level62: return "6.2";
+ case AV1Level63: return "6.3";
+ case AV1Level7: return "7";
+ case AV1Level71: return "7.1";
+ case AV1Level72: return "7.2";
+ case AV1Level73: return "7.3";
+ default: return def;
+ }
+}
+
constexpr int32_t HEVCProfileMain = 0x01;
constexpr int32_t HEVCProfileMain10 = 0x02;
constexpr int32_t HEVCProfileMainStill = 0x04;
constexpr int32_t HEVCProfileMain10HDR10 = 0x1000;
constexpr int32_t HEVCProfileMain10HDR10Plus = 0x2000;
+inline static const char *asString_HEVCProfile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case HEVCProfileMain: return "Main";
+ case HEVCProfileMain10: return "Main10";
+ case HEVCProfileMainStill: return "MainStill";
+ case HEVCProfileMain10HDR10: return "Main10HDR10";
+ case HEVCProfileMain10HDR10Plus: return "Main10HDR10Plus";
+ default: return def;
+ }
+}
+
constexpr int32_t HEVCMainTierLevel1 = 0x1;
constexpr int32_t HEVCHighTierLevel1 = 0x2;
constexpr int32_t HEVCMainTierLevel2 = 0x4;
@@ -215,6 +468,38 @@
constexpr int32_t HEVCMainTierLevel62 = 0x1000000;
constexpr int32_t HEVCHighTierLevel62 = 0x2000000;
+inline static const char *asString_HEVCTierLevel(int32_t i, const char *def = "??") {
+ switch (i) {
+ case HEVCMainTierLevel1: return "Main 1";
+ case HEVCHighTierLevel1: return "High 1";
+ case HEVCMainTierLevel2: return "Main 2";
+ case HEVCHighTierLevel2: return "High 2";
+ case HEVCMainTierLevel21: return "Main 2.1";
+ case HEVCHighTierLevel21: return "High 2.1";
+ case HEVCMainTierLevel3: return "Main 3";
+ case HEVCHighTierLevel3: return "High 3";
+ case HEVCMainTierLevel31: return "Main 3.1";
+ case HEVCHighTierLevel31: return "High 3.1";
+ case HEVCMainTierLevel4: return "Main 4";
+ case HEVCHighTierLevel4: return "High 4";
+ case HEVCMainTierLevel41: return "Main 4.1";
+ case HEVCHighTierLevel41: return "High 4.1";
+ case HEVCMainTierLevel5: return "Main 5";
+ case HEVCHighTierLevel5: return "High 5";
+ case HEVCMainTierLevel51: return "Main 5.1";
+ case HEVCHighTierLevel51: return "High 5.1";
+ case HEVCMainTierLevel52: return "Main 5.2";
+ case HEVCHighTierLevel52: return "High 5.2";
+ case HEVCMainTierLevel6: return "Main 6";
+ case HEVCHighTierLevel6: return "High 6";
+ case HEVCMainTierLevel61: return "Main 6.1";
+ case HEVCHighTierLevel61: return "High 6.1";
+ case HEVCMainTierLevel62: return "Main 6.2";
+ case HEVCHighTierLevel62: return "High 6.2";
+ default: return def;
+ }
+}
+
constexpr int32_t DolbyVisionProfileDvavPer = 0x1;
constexpr int32_t DolbyVisionProfileDvavPen = 0x2;
constexpr int32_t DolbyVisionProfileDvheDer = 0x4;
@@ -226,6 +511,22 @@
constexpr int32_t DolbyVisionProfileDvheSt = 0x100;
constexpr int32_t DolbyVisionProfileDvavSe = 0x200;
+inline static const char *asString_DolbyVisionProfile(int32_t i, const char *def = "??") {
+ switch (i) {
+ case DolbyVisionProfileDvavPer: return "DvavPer";
+ case DolbyVisionProfileDvavPen: return "DvavPen";
+ case DolbyVisionProfileDvheDer: return "DvheDer";
+ case DolbyVisionProfileDvheDen: return "DvheDen";
+ case DolbyVisionProfileDvheDtr: return "DvheDtr";
+ case DolbyVisionProfileDvheStn: return "DvheStn";
+ case DolbyVisionProfileDvheDth: return "DvheDth";
+ case DolbyVisionProfileDvheDtb: return "DvheDtb";
+ case DolbyVisionProfileDvheSt: return "DvheSt";
+ case DolbyVisionProfileDvavSe: return "DvavSe";
+ default: return def;
+ }
+}
+
constexpr int32_t DolbyVisionLevelHd24 = 0x1;
constexpr int32_t DolbyVisionLevelHd30 = 0x2;
constexpr int32_t DolbyVisionLevelFhd24 = 0x4;
@@ -236,10 +537,34 @@
constexpr int32_t DolbyVisionLevelUhd48 = 0x80;
constexpr int32_t DolbyVisionLevelUhd60 = 0x100;
+inline static const char *asString_DolbyVisionLevel(int32_t i, const char *def = "??") {
+ switch (i) {
+ case DolbyVisionLevelHd24: return "Hd24";
+ case DolbyVisionLevelHd30: return "Hd30";
+ case DolbyVisionLevelFhd24: return "Fhd24";
+ case DolbyVisionLevelFhd30: return "Fhd30";
+ case DolbyVisionLevelFhd60: return "Fhd60";
+ case DolbyVisionLevelUhd24: return "Uhd24";
+ case DolbyVisionLevelUhd30: return "Uhd30";
+ case DolbyVisionLevelUhd48: return "Uhd48";
+ case DolbyVisionLevelUhd60: return "Uhd60";
+ default: return def;
+ }
+}
+
constexpr int32_t BITRATE_MODE_CBR = 2;
constexpr int32_t BITRATE_MODE_CQ = 0;
constexpr int32_t BITRATE_MODE_VBR = 1;
+inline static const char *asString_BitrateMode(int32_t i, const char *def = "??") {
+ switch (i) {
+ case BITRATE_MODE_CBR: return "CBR";
+ case BITRATE_MODE_CQ: return "CQ";
+ case BITRATE_MODE_VBR: return "VBR";
+ default: return def;
+ }
+}
+
constexpr int32_t COLOR_Format12bitRGB444 = 3;
constexpr int32_t COLOR_Format16bitARGB1555 = 5;
constexpr int32_t COLOR_Format16bitARGB4444 = 4;
@@ -293,6 +618,64 @@
constexpr int32_t COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00;
constexpr int32_t COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100;
+inline static const char *asString_ColorFormat(int32_t i, const char *def = "??") {
+ switch (i) {
+ case COLOR_Format12bitRGB444: return "12bitRGB444";
+ case COLOR_Format16bitARGB1555: return "16bitARGB1555";
+ case COLOR_Format16bitARGB4444: return "16bitARGB4444";
+ case COLOR_Format16bitBGR565: return "16bitBGR565";
+ case COLOR_Format16bitRGB565: return "16bitRGB565";
+ case COLOR_Format18bitARGB1665: return "18bitARGB1665";
+ case COLOR_Format18BitBGR666: return "18BitBGR666";
+ case COLOR_Format18bitRGB666: return "18bitRGB666";
+ case COLOR_Format19bitARGB1666: return "19bitARGB1666";
+ case COLOR_Format24BitABGR6666: return "24BitABGR6666";
+ case COLOR_Format24bitARGB1887: return "24bitARGB1887";
+ case COLOR_Format24BitARGB6666: return "24BitARGB6666";
+ case COLOR_Format24bitBGR888: return "24bitBGR888";
+ case COLOR_Format24bitRGB888: return "24bitRGB888";
+ case COLOR_Format25bitARGB1888: return "25bitARGB1888";
+ case COLOR_Format32bitABGR8888: return "32bitABGR8888";
+ case COLOR_Format32bitARGB8888: return "32bitARGB8888";
+ case COLOR_Format32bitBGRA8888: return "32bitBGRA8888";
+ case COLOR_Format8bitRGB332: return "8bitRGB332";
+ case COLOR_FormatCbYCrY: return "CbYCrY";
+ case COLOR_FormatCrYCbY: return "CrYCbY";
+ case COLOR_FormatL16: return "L16";
+ case COLOR_FormatL2: return "L2";
+ case COLOR_FormatL24: return "L24";
+ case COLOR_FormatL32: return "L32";
+ case COLOR_FormatL4: return "L4";
+ case COLOR_FormatL8: return "L8";
+ case COLOR_FormatMonochrome: return "Monochrome";
+ case COLOR_FormatRawBayer10bit: return "RawBayer10bit";
+ case COLOR_FormatRawBayer8bit: return "RawBayer8bit";
+ case COLOR_FormatRawBayer8bitcompressed: return "RawBayer8bitcompressed";
+ case COLOR_FormatRGBAFlexible: return "RGBAFlexible";
+ case COLOR_FormatRGBFlexible: return "RGBFlexible";
+ case COLOR_FormatSurface: return "Surface";
+ case COLOR_FormatYCbYCr: return "YCbYCr";
+ case COLOR_FormatYCrYCb: return "YCrYCb";
+ case COLOR_FormatYUV411PackedPlanar: return "YUV411PackedPlanar";
+ case COLOR_FormatYUV411Planar: return "YUV411Planar";
+ case COLOR_FormatYUV420Flexible: return "YUV420Flexible";
+ case COLOR_FormatYUV420PackedPlanar: return "YUV420PackedPlanar";
+ case COLOR_FormatYUV420PackedSemiPlanar: return "YUV420PackedSemiPlanar";
+ case COLOR_FormatYUV420Planar: return "YUV420Planar";
+ case COLOR_FormatYUV420SemiPlanar: return "YUV420SemiPlanar";
+ case COLOR_FormatYUV422Flexible: return "YUV422Flexible";
+ case COLOR_FormatYUV422PackedPlanar: return "YUV422PackedPlanar";
+ case COLOR_FormatYUV422PackedSemiPlanar: return "YUV422PackedSemiPlanar";
+ case COLOR_FormatYUV422Planar: return "YUV422Planar";
+ case COLOR_FormatYUV422SemiPlanar: return "YUV422SemiPlanar";
+ case COLOR_FormatYUV444Flexible: return "YUV444Flexible";
+ case COLOR_FormatYUV444Interleaved: return "YUV444Interleaved";
+ case COLOR_QCOM_FormatYUV420SemiPlanar: return "QCOM_YUV420SemiPlanar";
+ case COLOR_TI_FormatYUV420PackedSemiPlanar: return "TI_YUV420PackedSemiPlanar";
+ default: return def;
+ }
+}
+
constexpr char FEATURE_AdaptivePlayback[] = "adaptive-playback";
constexpr char FEATURE_IntraRefresh[] = "intra-refresh";
constexpr char FEATURE_PartialFrame[] = "partial-frame";