个人技术分享

Android 的 MediaCodec 组件会在 configure 的过程中携带 profile 和 level 信息,比如

int32_t profile = 8
int32_t level = 16384

这些信息表明将要到来的stream的编码profile 和 level,因此底层在分配硬件解码器资源的时候是需要结合 分辨率,帧率,profile,level ,编码格式等等这些 流的编码参数来进行硬件资源的选择和分配。

android 里, profile 和 level 的枚举值存储在文件 frameworks/base/media/java/android/media/MediaCodecInfo.java里。

比如 

public static final int AVCLevel5       = 0x4000;    //16384
public static final int AVCProfileHigh     = 0x08;  //8

由于这些值定义在java层,因此流程进入mediacodec 的 native 端后,这些值将以整形的方式存在,所以如果希望获取到具体含义,那么可以通过 jni 来获取这些枚举值的实际意义。

profile 和 level 的含义见:

[多媒体] 关于H264的 profile 和 level_h264 level 41-CSDN博客