提交 47bef693 编写于 作者: Z zhenghanchao 提交者: Xinzheng Zhang

android/ijkMediaFormat: report codec profile

Signed-off-by: NXinzheng Zhang <zhangxzheng@gmail.com>
上级 e2689b07
......@@ -28,6 +28,7 @@ public class IjkMediaMeta {
public static final String IJKM_KEY_CODEC_LEVEL = "codec_level";
public static final String IJKM_KEY_CODEC_LONG_NAME = "codec_long_name";
public static final String IJKM_KEY_CODEC_PIXEL_FORMAT = "codec_pixel_format";
public static final String IJKM_KEY_CODEC_PROFILE_ID = "codec_profile_index";
// stream: video
public static final String IJKM_KEY_WIDTH = "width";
......@@ -109,6 +110,23 @@ public class IjkMediaMeta {
| AV_CH_BACK_LEFT | AV_CH_BACK_CENTER | AV_CH_BACK_RIGHT);
public static final long AV_CH_LAYOUT_STEREO_DOWNMIX = (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT);
public static final int FF_PROFILE_H264_CONSTRAINED = (1<<9); // 8+1; constraint_set1_flag
public static final int FF_PROFILE_H264_INTRA = (1<<11); // 8+3; constraint_set3_flag
public static final int FF_PROFILE_H264_BASELINE = 66;
public static final int FF_PROFILE_H264_CONSTRAINED_BASELINE = (66|FF_PROFILE_H264_CONSTRAINED);
public static final int FF_PROFILE_H264_MAIN = 77;
public static final int FF_PROFILE_H264_EXTENDED = 88;
public static final int FF_PROFILE_H264_HIGH = 100;
public static final int FF_PROFILE_H264_HIGH_10 = 110;
public static final int FF_PROFILE_H264_HIGH_10_INTRA = (110|FF_PROFILE_H264_INTRA);
public static final int FF_PROFILE_H264_HIGH_422 = 122;
public static final int FF_PROFILE_H264_HIGH_422_INTRA = (122|FF_PROFILE_H264_INTRA);
public static final int FF_PROFILE_H264_HIGH_444 = 144;
public static final int FF_PROFILE_H264_HIGH_444_PREDICTIVE = 244;
public static final int FF_PROFILE_H264_HIGH_444_INTRA = (244|FF_PROFILE_H264_INTRA);
public static final int FF_PROFILE_H264_CAVLC_444 = 44;
public Bundle mMediaMeta;
public String mFormat;
......
......@@ -117,9 +117,51 @@ public class IjkMediaFormat implements IMediaFormat {
sFormatterMap.put(KEY_IJK_CODEC_PROFILE_LEVEL_UI, new Formatter() {
@Override
protected String doFormat(IjkMediaFormat mediaFormat) {
String profile = mediaFormat.getString(IjkMediaMeta.IJKM_KEY_CODEC_PROFILE);
if (TextUtils.isEmpty(profile))
return null;
int profileIndex = mediaFormat.getInteger(IjkMediaMeta.IJKM_KEY_CODEC_PROFILE_ID);
String profile;
switch (profileIndex) {
case IjkMediaMeta.FF_PROFILE_H264_BASELINE:
profile = "Baseline";
break;
case IjkMediaMeta.FF_PROFILE_H264_CONSTRAINED_BASELINE:
profile = "Constrained Baseline";
break;
case IjkMediaMeta.FF_PROFILE_H264_MAIN:
profile = "Main";
break;
case IjkMediaMeta.FF_PROFILE_H264_EXTENDED:
profile = "Extended";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH:
profile = "High";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_10:
profile = "High 10";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_10_INTRA:
profile = "High 10 Intra";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_422:
profile = "High 4:2:2";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_422_INTRA:
profile = "High 4:2:2 Intra";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_444:
profile = "High 4:4:4";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_444_PREDICTIVE:
profile = "High 4:4:4 Predictive";
break;
case IjkMediaMeta.FF_PROFILE_H264_HIGH_444_INTRA:
profile = "High 4:4:4 Intra";
break;
case IjkMediaMeta.FF_PROFILE_H264_CAVLC_444:
profile = "CAVLC 4:4:4";
break;
default:
return null;
}
StringBuilder sb = new StringBuilder();
sb.append(profile);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册