diff options
author | Anton Khirnov <anton@khirnov.net> | 2016-03-29 04:19:50 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-04-24 10:06:24 +0200 |
commit | 72da8d9bb24d1b1bf74c2f1108650c0da0054d2e (patch) | |
tree | 2b243809f09e89bbd60dfed84176778d7f66ba36 /libavcodec/h264_parse.c | |
parent | 98c97994c5b90bdae02accb155eeceeb5224b8ef (diff) | |
download | ffmpeg-72da8d9bb24d1b1bf74c2f1108650c0da0054d2e.tar.gz |
h264_parser: remove the remaining dependencies on the h264 decoder
Diffstat (limited to 'libavcodec/h264_parse.c')
-rw-r--r-- | libavcodec/h264_parse.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c index 1fc8f41b31..7211c9d34c 100644 --- a/libavcodec/h264_parse.c +++ b/libavcodec/h264_parse.c @@ -449,3 +449,30 @@ int ff_h264_decode_extradata(const uint8_t *data, int size, H264ParamSets *ps, } return 0; } + +/** + * Compute profile from profile_idc and constraint_set?_flags. + * + * @param sps SPS + * + * @return profile as defined by FF_PROFILE_H264_* + */ +int ff_h264_get_profile(const SPS *sps) +{ + int profile = sps->profile_idc; + + switch (sps->profile_idc) { + case FF_PROFILE_H264_BASELINE: + // constraint_set1_flag set to 1 + profile |= (sps->constraint_set_flags & 1 << 1) ? FF_PROFILE_H264_CONSTRAINED : 0; + break; + case FF_PROFILE_H264_HIGH_10: + case FF_PROFILE_H264_HIGH_422: + case FF_PROFILE_H264_HIGH_444_PREDICTIVE: + // constraint_set3_flag set to 1 + profile |= (sps->constraint_set_flags & 1 << 3) ? FF_PROFILE_H264_INTRA : 0; + break; + } + + return profile; +} |