diff options
author | Linjie Fu <linjie.fu@intel.com> | 2020-05-06 21:47:51 +0800 |
---|---|---|
committer | Linjie Fu <linjie.fu@intel.com> | 2020-05-13 09:55:47 +0800 |
commit | e3e2702d400e047d7a12b3c4f7ee666ffdafd090 (patch) | |
tree | fcdcada77461aa897c0cc1142dc31997b60c0aec | |
parent | d3a7bdd4ac54349aea9150a234478635d50ebd87 (diff) | |
download | ffmpeg-e3e2702d400e047d7a12b3c4f7ee666ffdafd090.tar.gz |
lavc/libopenh264enc: Allow specifying the profile through AVCodecContext
And determine the profile with following priority:
1. s->profile; then
2. avctx->profile; then
3. s->cabac; then
4. a default profile.
This seems more natural in case user somehow sets both avctx->profile and
s->profile.
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Linjie Fu <linjie.fu@intel.com>
-rw-r--r-- | libavcodec/libopenh264enc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 12c71ca0e9..4c57fa1c89 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -182,6 +182,21 @@ FF_ENABLE_DEPRECATION_WARNINGS param.iEntropyCodingModeFlag = 0; param.iMultipleThreadIdc = avctx->thread_count; + /* Allow specifying the libopenh264 profile through AVCodecContext. */ + if (FF_PROFILE_UNKNOWN == s->profile && + FF_PROFILE_UNKNOWN != avctx->profile) + switch (avctx->profile) { + case FF_PROFILE_H264_HIGH: + case FF_PROFILE_H264_MAIN: + case FF_PROFILE_H264_CONSTRAINED_BASELINE: + s->profile = avctx->profile; + break; + default: + av_log(avctx, AV_LOG_WARNING, + "Unsupported avctx->profile: %d.\n", avctx->profile); + break; + } + if (s->profile == FF_PROFILE_UNKNOWN) s->profile = !s->cabac ? FF_PROFILE_H264_CONSTRAINED_BASELINE : #if OPENH264_VER_AT_LEAST(1, 8) |