Home | History | Annotate | Download | only in stagefright
      1 /*
      2  * Copyright 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  *
     16  */
     17 
     18 #ifndef MEDIA_CODEC_CONSTANTS_H_
     19 #define MEDIA_CODEC_CONSTANTS_H_
     20 
     21 namespace {
     22 
     23 // from MediaCodecInfo.java
     24 constexpr int32_t AVCProfileBaseline = 0x01;
     25 constexpr int32_t AVCProfileMain     = 0x02;
     26 constexpr int32_t AVCProfileExtended = 0x04;
     27 constexpr int32_t AVCProfileHigh     = 0x08;
     28 constexpr int32_t AVCProfileHigh10   = 0x10;
     29 constexpr int32_t AVCProfileHigh422  = 0x20;
     30 constexpr int32_t AVCProfileHigh444  = 0x40;
     31 constexpr int32_t AVCProfileConstrainedBaseline = 0x10000;
     32 constexpr int32_t AVCProfileConstrainedHigh     = 0x80000;
     33 
     34 inline static const char *asString_AVCProfile(int32_t i, const char *def = "??") {
     35     switch (i) {
     36         case AVCProfileBaseline:            return "Baseline";
     37         case AVCProfileMain:                return "Main";
     38         case AVCProfileExtended:            return "Extended";
     39         case AVCProfileHigh:                return "High";
     40         case AVCProfileHigh10:              return "High10";
     41         case AVCProfileHigh422:             return "High422";
     42         case AVCProfileHigh444:             return "High444";
     43         case AVCProfileConstrainedBaseline: return "ConstrainedBaseline";
     44         case AVCProfileConstrainedHigh:     return "ConstrainedHigh";
     45         default:                            return def;
     46     }
     47 }
     48 
     49 constexpr int32_t AVCLevel1       = 0x01;
     50 constexpr int32_t AVCLevel1b      = 0x02;
     51 constexpr int32_t AVCLevel11      = 0x04;
     52 constexpr int32_t AVCLevel12      = 0x08;
     53 constexpr int32_t AVCLevel13      = 0x10;
     54 constexpr int32_t AVCLevel2       = 0x20;
     55 constexpr int32_t AVCLevel21      = 0x40;
     56 constexpr int32_t AVCLevel22      = 0x80;
     57 constexpr int32_t AVCLevel3       = 0x100;
     58 constexpr int32_t AVCLevel31      = 0x200;
     59 constexpr int32_t AVCLevel32      = 0x400;
     60 constexpr int32_t AVCLevel4       = 0x800;
     61 constexpr int32_t AVCLevel41      = 0x1000;
     62 constexpr int32_t AVCLevel42      = 0x2000;
     63 constexpr int32_t AVCLevel5       = 0x4000;
     64 constexpr int32_t AVCLevel51      = 0x8000;
     65 constexpr int32_t AVCLevel52      = 0x10000;
     66 constexpr int32_t AVCLevel6       = 0x20000;
     67 constexpr int32_t AVCLevel61      = 0x40000;
     68 constexpr int32_t AVCLevel62      = 0x80000;
     69 
     70 inline static const char *asString_AVCLevel(int32_t i, const char *def = "??") {
     71     switch (i) {
     72         case AVCLevel1:     return "1";
     73         case AVCLevel1b:    return "1b";
     74         case AVCLevel11:    return "1.1";
     75         case AVCLevel12:    return "1.2";
     76         case AVCLevel13:    return "1.3";
     77         case AVCLevel2:     return "2";
     78         case AVCLevel21:    return "2.1";
     79         case AVCLevel22:    return "2.2";
     80         case AVCLevel3:     return "3";
     81         case AVCLevel31:    return "3.1";
     82         case AVCLevel32:    return "3.2";
     83         case AVCLevel4:     return "4";
     84         case AVCLevel41:    return "4.1";
     85         case AVCLevel42:    return "4.2";
     86         case AVCLevel5:     return "5";
     87         case AVCLevel51:    return "5.1";
     88         case AVCLevel52:    return "5.2";
     89         case AVCLevel6:     return "6";
     90         case AVCLevel61:    return "6.1";
     91         case AVCLevel62:    return "6.2";
     92         default:            return def;
     93     }
     94 }
     95 
     96 constexpr int32_t H263ProfileBaseline             = 0x01;
     97 constexpr int32_t H263ProfileH320Coding           = 0x02;
     98 constexpr int32_t H263ProfileBackwardCompatible   = 0x04;
     99 constexpr int32_t H263ProfileISWV2                = 0x08;
    100 constexpr int32_t H263ProfileISWV3                = 0x10;
    101 constexpr int32_t H263ProfileHighCompression      = 0x20;
    102 constexpr int32_t H263ProfileInternet             = 0x40;
    103 constexpr int32_t H263ProfileInterlace            = 0x80;
    104 constexpr int32_t H263ProfileHighLatency          = 0x100;
    105 
    106 inline static const char *asString_H263Profile(int32_t i, const char *def = "??") {
    107     switch (i) {
    108         case H263ProfileBaseline:           return "Baseline";
    109         case H263ProfileH320Coding:         return "H320Coding";
    110         case H263ProfileBackwardCompatible: return "BackwardCompatible";
    111         case H263ProfileISWV2:              return "ISWV2";
    112         case H263ProfileISWV3:              return "ISWV3";
    113         case H263ProfileHighCompression:    return "HighCompression";
    114         case H263ProfileInternet:           return "Internet";
    115         case H263ProfileInterlace:          return "Interlace";
    116         case H263ProfileHighLatency:        return "HighLatency";
    117         default:                            return def;
    118     }
    119 }
    120 
    121 constexpr int32_t H263Level10      = 0x01;
    122 constexpr int32_t H263Level20      = 0x02;
    123 constexpr int32_t H263Level30      = 0x04;
    124 constexpr int32_t H263Level40      = 0x08;
    125 constexpr int32_t H263Level45      = 0x10;
    126 constexpr int32_t H263Level50      = 0x20;
    127 constexpr int32_t H263Level60      = 0x40;
    128 constexpr int32_t H263Level70      = 0x80;
    129 
    130 inline static const char *asString_H263Level(int32_t i, const char *def = "??") {
    131     switch (i) {
    132         case H263Level10:   return "10";
    133         case H263Level20:   return "20";
    134         case H263Level30:   return "30";
    135         case H263Level40:   return "40";
    136         case H263Level45:   return "45";
    137         case H263Level50:   return "50";
    138         case H263Level60:   return "60";
    139         case H263Level70:   return "70";
    140         default:            return def;
    141     }
    142 }
    143 
    144 constexpr int32_t MPEG4ProfileSimple              = 0x01;
    145 constexpr int32_t MPEG4ProfileSimpleScalable      = 0x02;
    146 constexpr int32_t MPEG4ProfileCore                = 0x04;
    147 constexpr int32_t MPEG4ProfileMain                = 0x08;
    148 constexpr int32_t MPEG4ProfileNbit                = 0x10;
    149 constexpr int32_t MPEG4ProfileScalableTexture     = 0x20;
    150 constexpr int32_t MPEG4ProfileSimpleFace          = 0x40;
    151 constexpr int32_t MPEG4ProfileSimpleFBA           = 0x80;
    152 constexpr int32_t MPEG4ProfileBasicAnimated       = 0x100;
    153 constexpr int32_t MPEG4ProfileHybrid              = 0x200;
    154 constexpr int32_t MPEG4ProfileAdvancedRealTime    = 0x400;
    155 constexpr int32_t MPEG4ProfileCoreScalable        = 0x800;
    156 constexpr int32_t MPEG4ProfileAdvancedCoding      = 0x1000;
    157 constexpr int32_t MPEG4ProfileAdvancedCore        = 0x2000;
    158 constexpr int32_t MPEG4ProfileAdvancedScalable    = 0x4000;
    159 constexpr int32_t MPEG4ProfileAdvancedSimple      = 0x8000;
    160 
    161 inline static const char *asString_MPEG4Profile(int32_t i, const char *def = "??") {
    162     switch (i) {
    163         case MPEG4ProfileSimple:            return "Simple";
    164         case MPEG4ProfileSimpleScalable:    return "SimpleScalable";
    165         case MPEG4ProfileCore:              return "Core";
    166         case MPEG4ProfileMain:              return "Main";
    167         case MPEG4ProfileNbit:              return "Nbit";
    168         case MPEG4ProfileScalableTexture:   return "ScalableTexture";
    169         case MPEG4ProfileSimpleFace:        return "SimpleFace";
    170         case MPEG4ProfileSimpleFBA:         return "SimpleFBA";
    171         case MPEG4ProfileBasicAnimated:     return "BasicAnimated";
    172         case MPEG4ProfileHybrid:            return "Hybrid";
    173         case MPEG4ProfileAdvancedRealTime:  return "AdvancedRealTime";
    174         case MPEG4ProfileCoreScalable:      return "CoreScalable";
    175         case MPEG4ProfileAdvancedCoding:    return "AdvancedCoding";
    176         case MPEG4ProfileAdvancedCore:      return "AdvancedCore";
    177         case MPEG4ProfileAdvancedScalable:  return "AdvancedScalable";
    178         case MPEG4ProfileAdvancedSimple:    return "AdvancedSimple";
    179         default:                            return def;
    180     }
    181 }
    182 
    183 constexpr int32_t MPEG4Level0      = 0x01;
    184 constexpr int32_t MPEG4Level0b     = 0x02;
    185 constexpr int32_t MPEG4Level1      = 0x04;
    186 constexpr int32_t MPEG4Level2      = 0x08;
    187 constexpr int32_t MPEG4Level3      = 0x10;
    188 constexpr int32_t MPEG4Level3b     = 0x18;
    189 constexpr int32_t MPEG4Level4      = 0x20;
    190 constexpr int32_t MPEG4Level4a     = 0x40;
    191 constexpr int32_t MPEG4Level5      = 0x80;
    192 constexpr int32_t MPEG4Level6      = 0x100;
    193 
    194 inline static const char *asString_MPEG4Level(int32_t i, const char *def = "??") {
    195     switch (i) {
    196         case MPEG4Level0:   return "0";
    197         case MPEG4Level0b:  return "0b";
    198         case MPEG4Level1:   return "1";
    199         case MPEG4Level2:   return "2";
    200         case MPEG4Level3:   return "3";
    201         case MPEG4Level3b:  return "3b";
    202         case MPEG4Level4:   return "4";
    203         case MPEG4Level4a:  return "4a";
    204         case MPEG4Level5:   return "5";
    205         case MPEG4Level6:   return "6";
    206         default:            return def;
    207     }
    208 }
    209 
    210 constexpr int32_t MPEG2ProfileSimple              = 0x00;
    211 constexpr int32_t MPEG2ProfileMain                = 0x01;
    212 constexpr int32_t MPEG2Profile422                 = 0x02;
    213 constexpr int32_t MPEG2ProfileSNR                 = 0x03;
    214 constexpr int32_t MPEG2ProfileSpatial             = 0x04;
    215 constexpr int32_t MPEG2ProfileHigh                = 0x05;
    216 
    217 inline static const char *asString_MPEG2Profile(int32_t i, const char *def = "??") {
    218     switch (i) {
    219         case MPEG2ProfileSimple:    return "Simple";
    220         case MPEG2ProfileMain:      return "Main";
    221         case MPEG2Profile422:       return "422";
    222         case MPEG2ProfileSNR:       return "SNR";
    223         case MPEG2ProfileSpatial:   return "Spatial";
    224         case MPEG2ProfileHigh:      return "High";
    225         default:                    return def;
    226     }
    227 }
    228 
    229 constexpr int32_t MPEG2LevelLL     = 0x00;
    230 constexpr int32_t MPEG2LevelML     = 0x01;
    231 constexpr int32_t MPEG2LevelH14    = 0x02;
    232 constexpr int32_t MPEG2LevelHL     = 0x03;
    233 constexpr int32_t MPEG2LevelHP     = 0x04;
    234 
    235 inline static const char *asString_MPEG2Level(int32_t i, const char *def = "??") {
    236     switch (i) {
    237         case MPEG2LevelLL:  return "LL";
    238         case MPEG2LevelML:  return "ML";
    239         case MPEG2LevelH14: return "H14";
    240         case MPEG2LevelHL:  return "HL";
    241         case MPEG2LevelHP:  return "HP";
    242         default:            return def;
    243     }
    244 }
    245 
    246 constexpr int32_t AACObjectMain       = 1;
    247 constexpr int32_t AACObjectLC         = 2;
    248 constexpr int32_t AACObjectSSR        = 3;
    249 constexpr int32_t AACObjectLTP        = 4;
    250 constexpr int32_t AACObjectHE         = 5;
    251 constexpr int32_t AACObjectScalable   = 6;
    252 constexpr int32_t AACObjectERLC       = 17;
    253 constexpr int32_t AACObjectERScalable = 20;
    254 constexpr int32_t AACObjectLD         = 23;
    255 constexpr int32_t AACObjectHE_PS      = 29;
    256 constexpr int32_t AACObjectELD        = 39;
    257 constexpr int32_t AACObjectXHE        = 42;
    258 
    259 inline static const char *asString_AACObject(int32_t i, const char *def = "??") {
    260     switch (i) {
    261         case AACObjectMain:         return "Main";
    262         case AACObjectLC:           return "LC";
    263         case AACObjectSSR:          return "SSR";
    264         case AACObjectLTP:          return "LTP";
    265         case AACObjectHE:           return "HE";
    266         case AACObjectScalable:     return "Scalable";
    267         case AACObjectERLC:         return "ERLC";
    268         case AACObjectERScalable:   return "ERScalable";
    269         case AACObjectLD:           return "LD";
    270         case AACObjectHE_PS:        return "HE_PS";
    271         case AACObjectELD:          return "ELD";
    272         case AACObjectXHE:          return "XHE";
    273         default:                    return def;
    274     }
    275 }
    276 
    277 constexpr int32_t VP8Level_Version0 = 0x01;
    278 constexpr int32_t VP8Level_Version1 = 0x02;
    279 constexpr int32_t VP8Level_Version2 = 0x04;
    280 constexpr int32_t VP8Level_Version3 = 0x08;
    281 
    282 inline static const char *asString_VP8Level(int32_t i, const char *def = "??") {
    283     switch (i) {
    284         case VP8Level_Version0: return "V0";
    285         case VP8Level_Version1: return "V1";
    286         case VP8Level_Version2: return "V2";
    287         case VP8Level_Version3: return "V3";
    288         default:                return def;
    289     }
    290 }
    291 
    292 constexpr int32_t VP8ProfileMain = 0x01;
    293 
    294 inline static const char *asString_VP8Profile(int32_t i, const char *def = "??") {
    295     switch (i) {
    296         case VP8ProfileMain:    return "Main";
    297         default:                return def;
    298     }
    299 }
    300 
    301 constexpr int32_t VP9Profile0 = 0x01;
    302 constexpr int32_t VP9Profile1 = 0x02;
    303 constexpr int32_t VP9Profile2 = 0x04;
    304 constexpr int32_t VP9Profile3 = 0x08;
    305 constexpr int32_t VP9Profile2HDR = 0x1000;
    306 constexpr int32_t VP9Profile3HDR = 0x2000;
    307 constexpr int32_t VP9Profile2HDR10Plus = 0x4000;
    308 constexpr int32_t VP9Profile3HDR10Plus = 0x8000;
    309 
    310 inline static const char *asString_VP9Profile(int32_t i, const char *def = "??") {
    311     switch (i) {
    312         case VP9Profile0:           return "0";
    313         case VP9Profile1:           return "1";
    314         case VP9Profile2:           return "2";
    315         case VP9Profile3:           return "3";
    316         case VP9Profile2HDR:        return "2HDR";
    317         case VP9Profile3HDR:        return "3HDR";
    318         case VP9Profile2HDR10Plus:  return "2HDRPlus";
    319         case VP9Profile3HDR10Plus:  return "3HDRPlus";
    320         default:                    return def;
    321     }
    322 }
    323 
    324 constexpr int32_t VP9Level1  = 0x1;
    325 constexpr int32_t VP9Level11 = 0x2;
    326 constexpr int32_t VP9Level2  = 0x4;
    327 constexpr int32_t VP9Level21 = 0x8;
    328 constexpr int32_t VP9Level3  = 0x10;
    329 constexpr int32_t VP9Level31 = 0x20;
    330 constexpr int32_t VP9Level4  = 0x40;
    331 constexpr int32_t VP9Level41 = 0x80;
    332 constexpr int32_t VP9Level5  = 0x100;
    333 constexpr int32_t VP9Level51 = 0x200;
    334 constexpr int32_t VP9Level52 = 0x400;
    335 constexpr int32_t VP9Level6  = 0x800;
    336 constexpr int32_t VP9Level61 = 0x1000;
    337 constexpr int32_t VP9Level62 = 0x2000;
    338 
    339 inline static const char *asString_VP9Level(int32_t i, const char *def = "??") {
    340     switch (i) {
    341         case VP9Level1:     return "1";
    342         case VP9Level11:    return "1.1";
    343         case VP9Level2:     return "2";
    344         case VP9Level21:    return "2.1";
    345         case VP9Level3:     return "3";
    346         case VP9Level31:    return "3.1";
    347         case VP9Level4:     return "4";
    348         case VP9Level41:    return "4.1";
    349         case VP9Level5:     return "5";
    350         case VP9Level51:    return "5.1";
    351         case VP9Level52:    return "5.2";
    352         case VP9Level6:     return "6";
    353         case VP9Level61:    return "6.1";
    354         case VP9Level62:    return "6.2";
    355         default:            return def;
    356     }
    357 }
    358 
    359 constexpr int32_t AV1ProfileMain8 = 0x1;
    360 constexpr int32_t AV1ProfileMain10 = 0x2;
    361 constexpr int32_t AV1ProfileMain10HDR10 = 0x1000;
    362 constexpr int32_t AV1ProfileMain10HDR10Plus = 0x2000;
    363 
    364 inline static const char *asString_AV1Profile(int32_t i, const char *def = "??") {
    365     switch (i) {
    366         case AV1ProfileMain8:           return "Main8";
    367         case AV1ProfileMain10:          return "Main10HDR";
    368         case AV1ProfileMain10HDR10:     return "Main10HDR10";
    369         case AV1ProfileMain10HDR10Plus: return "Main10HDRPlus";
    370         default:                        return def;
    371     }
    372 }
    373 
    374 constexpr int32_t AV1Level2  = 0x1;
    375 constexpr int32_t AV1Level21 = 0x2;
    376 constexpr int32_t AV1Level22 = 0x4;
    377 constexpr int32_t AV1Level23 = 0x8;
    378 constexpr int32_t AV1Level3  = 0x10;
    379 constexpr int32_t AV1Level31 = 0x20;
    380 constexpr int32_t AV1Level32 = 0x40;
    381 constexpr int32_t AV1Level33 = 0x80;
    382 constexpr int32_t AV1Level4  = 0x100;
    383 constexpr int32_t AV1Level41 = 0x200;
    384 constexpr int32_t AV1Level42 = 0x400;
    385 constexpr int32_t AV1Level43 = 0x800;
    386 constexpr int32_t AV1Level5  = 0x1000;
    387 constexpr int32_t AV1Level51 = 0x2000;
    388 constexpr int32_t AV1Level52 = 0x4000;
    389 constexpr int32_t AV1Level53 = 0x8000;
    390 constexpr int32_t AV1Level6  = 0x10000;
    391 constexpr int32_t AV1Level61 = 0x20000;
    392 constexpr int32_t AV1Level62 = 0x40000;
    393 constexpr int32_t AV1Level63 = 0x80000;
    394 constexpr int32_t AV1Level7  = 0x100000;
    395 constexpr int32_t AV1Level71 = 0x200000;
    396 constexpr int32_t AV1Level72 = 0x400000;
    397 constexpr int32_t AV1Level73 = 0x800000;
    398 
    399 inline static const char *asString_AV1Level(int32_t i, const char *def = "??") {
    400     switch (i) {
    401         case AV1Level2:     return "2";
    402         case AV1Level21:    return "2.1";
    403         case AV1Level22:    return "2.2";
    404         case AV1Level23:    return "2.3";
    405         case AV1Level3:     return "3";
    406         case AV1Level31:    return "3.1";
    407         case AV1Level32:    return "3.2";
    408         case AV1Level33:    return "3.3";
    409         case AV1Level4:     return "4";
    410         case AV1Level41:    return "4.1";
    411         case AV1Level42:    return "4.2";
    412         case AV1Level43:    return "4.3";
    413         case AV1Level5:     return "5";
    414         case AV1Level51:    return "5.1";
    415         case AV1Level52:    return "5.2";
    416         case AV1Level53:    return "5.3";
    417         case AV1Level6:     return "6";
    418         case AV1Level61:    return "6.1";
    419         case AV1Level62:    return "6.2";
    420         case AV1Level63:    return "6.3";
    421         case AV1Level7:     return "7";
    422         case AV1Level71:    return "7.1";
    423         case AV1Level72:    return "7.2";
    424         case AV1Level73:    return "7.3";
    425         default:            return def;
    426     }
    427 }
    428 
    429 constexpr int32_t HEVCProfileMain        = 0x01;
    430 constexpr int32_t HEVCProfileMain10      = 0x02;
    431 constexpr int32_t HEVCProfileMainStill   = 0x04;
    432 constexpr int32_t HEVCProfileMain10HDR10 = 0x1000;
    433 constexpr int32_t HEVCProfileMain10HDR10Plus = 0x2000;
    434 
    435 inline static const char *asString_HEVCProfile(int32_t i, const char *def = "??") {
    436     switch (i) {
    437         case HEVCProfileMain:               return "Main";
    438         case HEVCProfileMain10:             return "Main10";
    439         case HEVCProfileMainStill:          return "MainStill";
    440         case HEVCProfileMain10HDR10:        return "Main10HDR10";
    441         case HEVCProfileMain10HDR10Plus:    return "Main10HDR10Plus";
    442         default:                            return def;
    443     }
    444 }
    445 
    446 constexpr int32_t HEVCMainTierLevel1  = 0x1;
    447 constexpr int32_t HEVCHighTierLevel1  = 0x2;
    448 constexpr int32_t HEVCMainTierLevel2  = 0x4;
    449 constexpr int32_t HEVCHighTierLevel2  = 0x8;
    450 constexpr int32_t HEVCMainTierLevel21 = 0x10;
    451 constexpr int32_t HEVCHighTierLevel21 = 0x20;
    452 constexpr int32_t HEVCMainTierLevel3  = 0x40;
    453 constexpr int32_t HEVCHighTierLevel3  = 0x80;
    454 constexpr int32_t HEVCMainTierLevel31 = 0x100;
    455 constexpr int32_t HEVCHighTierLevel31 = 0x200;
    456 constexpr int32_t HEVCMainTierLevel4  = 0x400;
    457 constexpr int32_t HEVCHighTierLevel4  = 0x800;
    458 constexpr int32_t HEVCMainTierLevel41 = 0x1000;
    459 constexpr int32_t HEVCHighTierLevel41 = 0x2000;
    460 constexpr int32_t HEVCMainTierLevel5  = 0x4000;
    461 constexpr int32_t HEVCHighTierLevel5  = 0x8000;
    462 constexpr int32_t HEVCMainTierLevel51 = 0x10000;
    463 constexpr int32_t HEVCHighTierLevel51 = 0x20000;
    464 constexpr int32_t HEVCMainTierLevel52 = 0x40000;
    465 constexpr int32_t HEVCHighTierLevel52 = 0x80000;
    466 constexpr int32_t HEVCMainTierLevel6  = 0x100000;
    467 constexpr int32_t HEVCHighTierLevel6  = 0x200000;
    468 constexpr int32_t HEVCMainTierLevel61 = 0x400000;
    469 constexpr int32_t HEVCHighTierLevel61 = 0x800000;
    470 constexpr int32_t HEVCMainTierLevel62 = 0x1000000;
    471 constexpr int32_t HEVCHighTierLevel62 = 0x2000000;
    472 
    473 inline static const char *asString_HEVCTierLevel(int32_t i, const char *def = "??") {
    474     switch (i) {
    475         case HEVCMainTierLevel1:    return "Main 1";
    476         case HEVCHighTierLevel1:    return "High 1";
    477         case HEVCMainTierLevel2:    return "Main 2";
    478         case HEVCHighTierLevel2:    return "High 2";
    479         case HEVCMainTierLevel21:   return "Main 2.1";
    480         case HEVCHighTierLevel21:   return "High 2.1";
    481         case HEVCMainTierLevel3:    return "Main 3";
    482         case HEVCHighTierLevel3:    return "High 3";
    483         case HEVCMainTierLevel31:   return "Main 3.1";
    484         case HEVCHighTierLevel31:   return "High 3.1";
    485         case HEVCMainTierLevel4:    return "Main 4";
    486         case HEVCHighTierLevel4:    return "High 4";
    487         case HEVCMainTierLevel41:   return "Main 4.1";
    488         case HEVCHighTierLevel41:   return "High 4.1";
    489         case HEVCMainTierLevel5:    return "Main 5";
    490         case HEVCHighTierLevel5:    return "High 5";
    491         case HEVCMainTierLevel51:   return "Main 5.1";
    492         case HEVCHighTierLevel51:   return "High 5.1";
    493         case HEVCMainTierLevel52:   return "Main 5.2";
    494         case HEVCHighTierLevel52:   return "High 5.2";
    495         case HEVCMainTierLevel6:    return "Main 6";
    496         case HEVCHighTierLevel6:    return "High 6";
    497         case HEVCMainTierLevel61:   return "Main 6.1";
    498         case HEVCHighTierLevel61:   return "High 6.1";
    499         case HEVCMainTierLevel62:   return "Main 6.2";
    500         case HEVCHighTierLevel62:   return "High 6.2";
    501         default:                    return def;
    502     }
    503 }
    504 
    505 constexpr int32_t DolbyVisionProfileDvavPer = 0x1;
    506 constexpr int32_t DolbyVisionProfileDvavPen = 0x2;
    507 constexpr int32_t DolbyVisionProfileDvheDer = 0x4;
    508 constexpr int32_t DolbyVisionProfileDvheDen = 0x8;
    509 constexpr int32_t DolbyVisionProfileDvheDtr = 0x10;
    510 constexpr int32_t DolbyVisionProfileDvheStn = 0x20;
    511 constexpr int32_t DolbyVisionProfileDvheDth = 0x40;
    512 constexpr int32_t DolbyVisionProfileDvheDtb = 0x80;
    513 constexpr int32_t DolbyVisionProfileDvheSt = 0x100;
    514 constexpr int32_t DolbyVisionProfileDvavSe = 0x200;
    515 
    516 inline static const char *asString_DolbyVisionProfile(int32_t i, const char *def = "??") {
    517     switch (i) {
    518         case DolbyVisionProfileDvavPer: return "DvavPer";
    519         case DolbyVisionProfileDvavPen: return "DvavPen";
    520         case DolbyVisionProfileDvheDer: return "DvheDer";
    521         case DolbyVisionProfileDvheDen: return "DvheDen";
    522         case DolbyVisionProfileDvheDtr: return "DvheDtr";
    523         case DolbyVisionProfileDvheStn: return "DvheStn";
    524         case DolbyVisionProfileDvheDth: return "DvheDth";
    525         case DolbyVisionProfileDvheDtb: return "DvheDtb";
    526         case DolbyVisionProfileDvheSt:  return "DvheSt";
    527         case DolbyVisionProfileDvavSe:  return "DvavSe";
    528         default:                        return def;
    529     }
    530 }
    531 
    532 constexpr int32_t DolbyVisionLevelHd24    = 0x1;
    533 constexpr int32_t DolbyVisionLevelHd30    = 0x2;
    534 constexpr int32_t DolbyVisionLevelFhd24   = 0x4;
    535 constexpr int32_t DolbyVisionLevelFhd30   = 0x8;
    536 constexpr int32_t DolbyVisionLevelFhd60   = 0x10;
    537 constexpr int32_t DolbyVisionLevelUhd24   = 0x20;
    538 constexpr int32_t DolbyVisionLevelUhd30   = 0x40;
    539 constexpr int32_t DolbyVisionLevelUhd48   = 0x80;
    540 constexpr int32_t DolbyVisionLevelUhd60   = 0x100;
    541 
    542 inline static const char *asString_DolbyVisionLevel(int32_t i, const char *def = "??") {
    543     switch (i) {
    544         case DolbyVisionLevelHd24:  return "Hd24";
    545         case DolbyVisionLevelHd30:  return "Hd30";
    546         case DolbyVisionLevelFhd24: return "Fhd24";
    547         case DolbyVisionLevelFhd30: return "Fhd30";
    548         case DolbyVisionLevelFhd60: return "Fhd60";
    549         case DolbyVisionLevelUhd24: return "Uhd24";
    550         case DolbyVisionLevelUhd30: return "Uhd30";
    551         case DolbyVisionLevelUhd48: return "Uhd48";
    552         case DolbyVisionLevelUhd60: return "Uhd60";
    553         default:                    return def;
    554     }
    555 }
    556 
    557 constexpr int32_t BITRATE_MODE_CBR = 2;
    558 constexpr int32_t BITRATE_MODE_CQ = 0;
    559 constexpr int32_t BITRATE_MODE_VBR = 1;
    560 
    561 inline static const char *asString_BitrateMode(int32_t i, const char *def = "??") {
    562     switch (i) {
    563         case BITRATE_MODE_CBR:  return "CBR";
    564         case BITRATE_MODE_CQ:   return "CQ";
    565         case BITRATE_MODE_VBR:  return "VBR";
    566         default:                return def;
    567     }
    568 }
    569 
    570 constexpr int32_t COLOR_Format12bitRGB444             = 3;
    571 constexpr int32_t COLOR_Format16bitARGB1555           = 5;
    572 constexpr int32_t COLOR_Format16bitARGB4444           = 4;
    573 constexpr int32_t COLOR_Format16bitBGR565             = 7;
    574 constexpr int32_t COLOR_Format16bitRGB565             = 6;
    575 constexpr int32_t COLOR_Format18bitARGB1665           = 9;
    576 constexpr int32_t COLOR_Format18BitBGR666             = 41;
    577 constexpr int32_t COLOR_Format18bitRGB666             = 8;
    578 constexpr int32_t COLOR_Format19bitARGB1666           = 10;
    579 constexpr int32_t COLOR_Format24BitABGR6666           = 43;
    580 constexpr int32_t COLOR_Format24bitARGB1887           = 13;
    581 constexpr int32_t COLOR_Format24BitARGB6666           = 42;
    582 constexpr int32_t COLOR_Format24bitBGR888             = 12;
    583 constexpr int32_t COLOR_Format24bitRGB888             = 11;
    584 constexpr int32_t COLOR_Format25bitARGB1888           = 14;
    585 constexpr int32_t COLOR_Format32bitABGR8888           = 0x7F00A000;
    586 constexpr int32_t COLOR_Format32bitARGB8888           = 16;
    587 constexpr int32_t COLOR_Format32bitBGRA8888           = 15;
    588 constexpr int32_t COLOR_Format8bitRGB332              = 2;
    589 constexpr int32_t COLOR_FormatCbYCrY                  = 27;
    590 constexpr int32_t COLOR_FormatCrYCbY                  = 28;
    591 constexpr int32_t COLOR_FormatL16                     = 36;
    592 constexpr int32_t COLOR_FormatL2                      = 33;
    593 constexpr int32_t COLOR_FormatL24                     = 37;
    594 constexpr int32_t COLOR_FormatL32                     = 38;
    595 constexpr int32_t COLOR_FormatL4                      = 34;
    596 constexpr int32_t COLOR_FormatL8                      = 35;
    597 constexpr int32_t COLOR_FormatMonochrome              = 1;
    598 constexpr int32_t COLOR_FormatRawBayer10bit           = 31;
    599 constexpr int32_t COLOR_FormatRawBayer8bit            = 30;
    600 constexpr int32_t COLOR_FormatRawBayer8bitcompressed  = 32;
    601 constexpr int32_t COLOR_FormatRGBAFlexible            = 0x7F36A888;
    602 constexpr int32_t COLOR_FormatRGBFlexible             = 0x7F36B888;
    603 constexpr int32_t COLOR_FormatSurface                 = 0x7F000789;
    604 constexpr int32_t COLOR_FormatYCbYCr                  = 25;
    605 constexpr int32_t COLOR_FormatYCrYCb                  = 26;
    606 constexpr int32_t COLOR_FormatYUV411PackedPlanar      = 18;
    607 constexpr int32_t COLOR_FormatYUV411Planar            = 17;
    608 constexpr int32_t COLOR_FormatYUV420Flexible          = 0x7F420888;
    609 constexpr int32_t COLOR_FormatYUV420PackedPlanar      = 20;
    610 constexpr int32_t COLOR_FormatYUV420PackedSemiPlanar  = 39;
    611 constexpr int32_t COLOR_FormatYUV420Planar            = 19;
    612 constexpr int32_t COLOR_FormatYUV420SemiPlanar        = 21;
    613 constexpr int32_t COLOR_FormatYUV422Flexible          = 0x7F422888;
    614 constexpr int32_t COLOR_FormatYUV422PackedPlanar      = 23;
    615 constexpr int32_t COLOR_FormatYUV422PackedSemiPlanar  = 40;
    616 constexpr int32_t COLOR_FormatYUV422Planar            = 22;
    617 constexpr int32_t COLOR_FormatYUV422SemiPlanar        = 24;
    618 constexpr int32_t COLOR_FormatYUV444Flexible          = 0x7F444888;
    619 constexpr int32_t COLOR_FormatYUV444Interleaved       = 29;
    620 constexpr int32_t COLOR_QCOM_FormatYUV420SemiPlanar   = 0x7fa30c00;
    621 constexpr int32_t COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100;
    622 
    623 inline static const char *asString_ColorFormat(int32_t i, const char *def = "??") {
    624     switch (i) {
    625         case COLOR_Format12bitRGB444:               return "12bitRGB444";
    626         case COLOR_Format16bitARGB1555:             return "16bitARGB1555";
    627         case COLOR_Format16bitARGB4444:             return "16bitARGB4444";
    628         case COLOR_Format16bitBGR565:               return "16bitBGR565";
    629         case COLOR_Format16bitRGB565:               return "16bitRGB565";
    630         case COLOR_Format18bitARGB1665:             return "18bitARGB1665";
    631         case COLOR_Format18BitBGR666:               return "18BitBGR666";
    632         case COLOR_Format18bitRGB666:               return "18bitRGB666";
    633         case COLOR_Format19bitARGB1666:             return "19bitARGB1666";
    634         case COLOR_Format24BitABGR6666:             return "24BitABGR6666";
    635         case COLOR_Format24bitARGB1887:             return "24bitARGB1887";
    636         case COLOR_Format24BitARGB6666:             return "24BitARGB6666";
    637         case COLOR_Format24bitBGR888:               return "24bitBGR888";
    638         case COLOR_Format24bitRGB888:               return "24bitRGB888";
    639         case COLOR_Format25bitARGB1888:             return "25bitARGB1888";
    640         case COLOR_Format32bitABGR8888:             return "32bitABGR8888";
    641         case COLOR_Format32bitARGB8888:             return "32bitARGB8888";
    642         case COLOR_Format32bitBGRA8888:             return "32bitBGRA8888";
    643         case COLOR_Format8bitRGB332:                return "8bitRGB332";
    644         case COLOR_FormatCbYCrY:                    return "CbYCrY";
    645         case COLOR_FormatCrYCbY:                    return "CrYCbY";
    646         case COLOR_FormatL16:                       return "L16";
    647         case COLOR_FormatL2:                        return "L2";
    648         case COLOR_FormatL24:                       return "L24";
    649         case COLOR_FormatL32:                       return "L32";
    650         case COLOR_FormatL4:                        return "L4";
    651         case COLOR_FormatL8:                        return "L8";
    652         case COLOR_FormatMonochrome:                return "Monochrome";
    653         case COLOR_FormatRawBayer10bit:             return "RawBayer10bit";
    654         case COLOR_FormatRawBayer8bit:              return "RawBayer8bit";
    655         case COLOR_FormatRawBayer8bitcompressed:    return "RawBayer8bitcompressed";
    656         case COLOR_FormatRGBAFlexible:              return "RGBAFlexible";
    657         case COLOR_FormatRGBFlexible:               return "RGBFlexible";
    658         case COLOR_FormatSurface:                   return "Surface";
    659         case COLOR_FormatYCbYCr:                    return "YCbYCr";
    660         case COLOR_FormatYCrYCb:                    return "YCrYCb";
    661         case COLOR_FormatYUV411PackedPlanar:        return "YUV411PackedPlanar";
    662         case COLOR_FormatYUV411Planar:              return "YUV411Planar";
    663         case COLOR_FormatYUV420Flexible:            return "YUV420Flexible";
    664         case COLOR_FormatYUV420PackedPlanar:        return "YUV420PackedPlanar";
    665         case COLOR_FormatYUV420PackedSemiPlanar:    return "YUV420PackedSemiPlanar";
    666         case COLOR_FormatYUV420Planar:              return "YUV420Planar";
    667         case COLOR_FormatYUV420SemiPlanar:          return "YUV420SemiPlanar";
    668         case COLOR_FormatYUV422Flexible:            return "YUV422Flexible";
    669         case COLOR_FormatYUV422PackedPlanar:        return "YUV422PackedPlanar";
    670         case COLOR_FormatYUV422PackedSemiPlanar:    return "YUV422PackedSemiPlanar";
    671         case COLOR_FormatYUV422Planar:              return "YUV422Planar";
    672         case COLOR_FormatYUV422SemiPlanar:          return "YUV422SemiPlanar";
    673         case COLOR_FormatYUV444Flexible:            return "YUV444Flexible";
    674         case COLOR_FormatYUV444Interleaved:         return "YUV444Interleaved";
    675         case COLOR_QCOM_FormatYUV420SemiPlanar:     return "QCOM_YUV420SemiPlanar";
    676         case COLOR_TI_FormatYUV420PackedSemiPlanar: return "TI_YUV420PackedSemiPlanar";
    677         default:                                    return def;
    678     }
    679 }
    680 
    681 constexpr char FEATURE_AdaptivePlayback[]       = "adaptive-playback";
    682 constexpr char FEATURE_IntraRefresh[] = "intra-refresh";
    683 constexpr char FEATURE_PartialFrame[] = "partial-frame";
    684 constexpr char FEATURE_SecurePlayback[]         = "secure-playback";
    685 constexpr char FEATURE_TunneledPlayback[]       = "tunneled-playback";
    686 
    687 // from MediaFormat.java
    688 constexpr char MIMETYPE_VIDEO_VP8[] = "video/x-vnd.on2.vp8";
    689 constexpr char MIMETYPE_VIDEO_VP9[] = "video/x-vnd.on2.vp9";
    690 constexpr char MIMETYPE_VIDEO_AV1[] = "video/av01";
    691 constexpr char MIMETYPE_VIDEO_AVC[] = "video/avc";
    692 constexpr char MIMETYPE_VIDEO_HEVC[] = "video/hevc";
    693 constexpr char MIMETYPE_VIDEO_MPEG4[] = "video/mp4v-es";
    694 constexpr char MIMETYPE_VIDEO_H263[] = "video/3gpp";
    695 constexpr char MIMETYPE_VIDEO_MPEG2[] = "video/mpeg2";
    696 constexpr char MIMETYPE_VIDEO_RAW[] = "video/raw";
    697 constexpr char MIMETYPE_VIDEO_DOLBY_VISION[] = "video/dolby-vision";
    698 constexpr char MIMETYPE_VIDEO_SCRAMBLED[] = "video/scrambled";
    699 
    700 constexpr char MIMETYPE_AUDIO_AMR_NB[] = "audio/3gpp";
    701 constexpr char MIMETYPE_AUDIO_AMR_WB[] = "audio/amr-wb";
    702 constexpr char MIMETYPE_AUDIO_MPEG[] = "audio/mpeg";
    703 constexpr char MIMETYPE_AUDIO_AAC[] = "audio/mp4a-latm";
    704 constexpr char MIMETYPE_AUDIO_QCELP[] = "audio/qcelp";
    705 constexpr char MIMETYPE_AUDIO_VORBIS[] = "audio/vorbis";
    706 constexpr char MIMETYPE_AUDIO_OPUS[] = "audio/opus";
    707 constexpr char MIMETYPE_AUDIO_G711_ALAW[] = "audio/g711-alaw";
    708 constexpr char MIMETYPE_AUDIO_G711_MLAW[] = "audio/g711-mlaw";
    709 constexpr char MIMETYPE_AUDIO_RAW[] = "audio/raw";
    710 constexpr char MIMETYPE_AUDIO_FLAC[] = "audio/flac";
    711 constexpr char MIMETYPE_AUDIO_MSGSM[] = "audio/gsm";
    712 constexpr char MIMETYPE_AUDIO_AC3[] = "audio/ac3";
    713 constexpr char MIMETYPE_AUDIO_EAC3[] = "audio/eac3";
    714 constexpr char MIMETYPE_AUDIO_SCRAMBLED[] = "audio/scrambled";
    715 
    716 constexpr char MIMETYPE_IMAGE_ANDROID_HEIC[] = "image/vnd.android.heic";
    717 
    718 constexpr char MIMETYPE_TEXT_CEA_608[] = "text/cea-608";
    719 constexpr char MIMETYPE_TEXT_CEA_708[] = "text/cea-708";
    720 constexpr char MIMETYPE_TEXT_SUBRIP[] = "application/x-subrip";
    721 constexpr char MIMETYPE_TEXT_VTT[] = "text/vtt";
    722 
    723 constexpr int32_t COLOR_RANGE_FULL = 1;
    724 constexpr int32_t COLOR_RANGE_LIMITED = 2;
    725 constexpr int32_t COLOR_STANDARD_BT2020 = 6;
    726 constexpr int32_t COLOR_STANDARD_BT601_NTSC = 4;
    727 constexpr int32_t COLOR_STANDARD_BT601_PAL = 2;
    728 constexpr int32_t COLOR_STANDARD_BT709 = 1;
    729 constexpr int32_t COLOR_TRANSFER_HLG = 7;
    730 constexpr int32_t COLOR_TRANSFER_LINEAR = 1;
    731 constexpr int32_t COLOR_TRANSFER_SDR_VIDEO = 3;
    732 constexpr int32_t COLOR_TRANSFER_ST2084 = 6;
    733 
    734 constexpr char KEY_AAC_DRC_ATTENUATION_FACTOR[] = "aac-drc-cut-level";
    735 constexpr char KEY_AAC_DRC_BOOST_FACTOR[] = "aac-drc-boost-level";
    736 constexpr char KEY_AAC_DRC_EFFECT_TYPE[] = "aac-drc-effect-type";
    737 constexpr char KEY_AAC_DRC_HEAVY_COMPRESSION[] = "aac-drc-heavy-compression";
    738 constexpr char KEY_AAC_DRC_TARGET_REFERENCE_LEVEL[] = "aac-target-ref-level";
    739 constexpr char KEY_AAC_ENCODED_TARGET_LEVEL[] = "aac-encoded-target-level";
    740 constexpr char KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT[] = "aac-max-output-channel_count";
    741 constexpr char KEY_AAC_PROFILE[] = "aac-profile";
    742 constexpr char KEY_AAC_SBR_MODE[] = "aac-sbr-mode";
    743 constexpr char KEY_AUDIO_SESSION_ID[] = "audio-session-id";
    744 constexpr char KEY_BIT_RATE[] = "bitrate";
    745 constexpr char KEY_BITRATE_MODE[] = "bitrate-mode";
    746 constexpr char KEY_CA_SESSION_ID[] = "ca-session-id";
    747 constexpr char KEY_CA_SYSTEM_ID[] = "ca-system-id";
    748 constexpr char KEY_CA_PRIVATE_DATA[] = "ca-private-data";
    749 constexpr char KEY_CAPTURE_RATE[] = "capture-rate";
    750 constexpr char KEY_CHANNEL_COUNT[] = "channel-count";
    751 constexpr char KEY_CHANNEL_MASK[] = "channel-mask";
    752 constexpr char KEY_COLOR_FORMAT[] = "color-format";
    753 constexpr char KEY_COLOR_RANGE[] = "color-range";
    754 constexpr char KEY_COLOR_STANDARD[] = "color-standard";
    755 constexpr char KEY_COLOR_TRANSFER[] = "color-transfer";
    756 constexpr char KEY_COMPLEXITY[] = "complexity";
    757 constexpr char KEY_CREATE_INPUT_SURFACE_SUSPENDED[] = "create-input-buffers-suspended";
    758 constexpr char KEY_DURATION[] = "durationUs";
    759 constexpr char KEY_FEATURE_[] = "feature-";
    760 constexpr char KEY_FLAC_COMPRESSION_LEVEL[] = "flac-compression-level";
    761 constexpr char KEY_FRAME_RATE[] = "frame-rate";
    762 constexpr char KEY_GRID_COLUMNS[] = "grid-cols";
    763 constexpr char KEY_GRID_ROWS[] = "grid-rows";
    764 constexpr char KEY_HDR_STATIC_INFO[] = "hdr-static-info";
    765 constexpr char KEY_HDR10_PLUS_INFO[] = "hdr10-plus-info";
    766 constexpr char KEY_HEIGHT[] = "height";
    767 constexpr char KEY_I_FRAME_INTERVAL[] = "i-frame-interval";
    768 constexpr char KEY_INTRA_REFRESH_PERIOD[] = "intra-refresh-period";
    769 constexpr char KEY_IS_ADTS[] = "is-adts";
    770 constexpr char KEY_IS_AUTOSELECT[] = "is-autoselect";
    771 constexpr char KEY_IS_DEFAULT[] = "is-default";
    772 constexpr char KEY_IS_FORCED_SUBTITLE[] = "is-forced-subtitle";
    773 constexpr char KEY_IS_TIMED_TEXT[] = "is-timed-text";
    774 constexpr char KEY_LANGUAGE[] = "language";
    775 constexpr char KEY_LATENCY[] = "latency";
    776 constexpr char KEY_LEVEL[] = "level";
    777 constexpr char KEY_MAX_B_FRAMES[] = "max-bframes";
    778 constexpr char KEY_MAX_BIT_RATE[] = "max-bitrate";
    779 constexpr char KEY_MAX_FPS_TO_ENCODER[] = "max-fps-to-encoder";
    780 constexpr char KEY_MAX_HEIGHT[] = "max-height";
    781 constexpr char KEY_MAX_INPUT_SIZE[] = "max-input-size";
    782 constexpr char KEY_MAX_PTS_GAP_TO_ENCODER[] = "max-pts-gap-to-encoder";
    783 constexpr char KEY_MAX_WIDTH[] = "max-width";
    784 constexpr char KEY_MIME[] = "mime";
    785 constexpr char KEY_OPERATING_RATE[] = "operating-rate";
    786 constexpr char KEY_OUTPUT_REORDER_DEPTH[] = "output-reorder-depth";
    787 constexpr char KEY_PCM_ENCODING[] = "pcm-encoding";
    788 constexpr char KEY_PREPEND_HEADERS_TO_SYNC_FRAMES[] = "prepend-sps-pps-to-idr-frames";
    789 constexpr char KEY_PRIORITY[] = "priority";
    790 constexpr char KEY_PROFILE[] = "profile";
    791 constexpr char KEY_PUSH_BLANK_BUFFERS_ON_STOP[] = "push-blank-buffers-on-shutdown";
    792 constexpr char KEY_QUALITY[] = "quality";
    793 constexpr char KEY_REPEAT_PREVIOUS_FRAME_AFTER[] = "repeat-previous-frame-after";
    794 constexpr char KEY_ROTATION[] = "rotation-degrees";
    795 constexpr char KEY_SAMPLE_RATE[] = "sample-rate";
    796 constexpr char KEY_SLICE_HEIGHT[] = "slice-height";
    797 constexpr char KEY_STRIDE[] = "stride";
    798 constexpr char KEY_TEMPORAL_LAYERING[] = "ts-schema";
    799 constexpr char KEY_TILE_HEIGHT[] = "tile-height";
    800 constexpr char KEY_TILE_WIDTH[] = "tile-width";
    801 constexpr char KEY_TRACK_ID[] = "track-id";
    802 constexpr char KEY_WIDTH[] = "width";
    803 
    804 // from MediaCodec.java
    805 constexpr int32_t ERROR_INSUFFICIENT_OUTPUT_PROTECTION = 4;
    806 constexpr int32_t ERROR_INSUFFICIENT_RESOURCE = 1100;
    807 constexpr int32_t ERROR_KEY_EXPIRED = 2;
    808 constexpr int32_t ERROR_NO_KEY = 1;
    809 constexpr int32_t ERROR_RECLAIMED = 1101;
    810 constexpr int32_t ERROR_RESOURCE_BUSY = 3;
    811 constexpr int32_t ERROR_SESSION_NOT_OPENED = 5;
    812 constexpr int32_t ERROR_UNSUPPORTED_OPERATION = 6;
    813 constexpr char CODEC[] = "android.media.mediacodec.codec";
    814 constexpr char ENCODER[] = "android.media.mediacodec.encoder";
    815 constexpr char HEIGHT[] = "android.media.mediacodec.height";
    816 constexpr char MIME_TYPE[] = "android.media.mediacodec.mime";
    817 constexpr char MODE[] = "android.media.mediacodec.mode";
    818 constexpr char MODE_AUDIO[] = "audio";
    819 constexpr char MODE_VIDEO[] = "video";
    820 constexpr char ROTATION[] = "android.media.mediacodec.rotation";
    821 constexpr char SECURE[] = "android.media.mediacodec.secure";
    822 constexpr char WIDTH[] = "android.media.mediacodec.width";
    823 
    824 constexpr int32_t BUFFER_FLAG_CODEC_CONFIG = 2;
    825 constexpr int32_t BUFFER_FLAG_END_OF_STREAM = 4;
    826 constexpr int32_t BUFFER_FLAG_KEY_FRAME = 1;
    827 constexpr int32_t BUFFER_FLAG_PARTIAL_FRAME = 8;
    828 constexpr int32_t BUFFER_FLAG_SYNC_FRAME = 1;
    829 constexpr int32_t CONFIGURE_FLAG_ENCODE = 1;
    830 constexpr int32_t CRYPTO_MODE_AES_CBC     = 2;
    831 constexpr int32_t CRYPTO_MODE_AES_CTR     = 1;
    832 constexpr int32_t CRYPTO_MODE_UNENCRYPTED = 0;
    833 constexpr int32_t INFO_OUTPUT_BUFFERS_CHANGED = -3;
    834 constexpr int32_t INFO_OUTPUT_FORMAT_CHANGED  = -2;
    835 constexpr int32_t INFO_TRY_AGAIN_LATER        = -1;
    836 constexpr int32_t VIDEO_SCALING_MODE_SCALE_TO_FIT               = 1;
    837 constexpr int32_t VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2;
    838 constexpr char PARAMETER_KEY_OFFSET_TIME[] = "time-offset-us";
    839 constexpr char PARAMETER_KEY_REQUEST_SYNC_FRAME[] = "request-sync";
    840 constexpr char PARAMETER_KEY_SUSPEND[] = "drop-input-frames";
    841 constexpr char PARAMETER_KEY_SUSPEND_TIME[] = "drop-start-time-us";
    842 constexpr char PARAMETER_KEY_VIDEO_BITRATE[] = "video-bitrate";
    843 
    844 }
    845 
    846 #endif  // MEDIA_CODEC_CONSTANTS_H_
    847 
    848