mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
vaapi_h264: Add named options for setting profile and level
This commit is contained in:
parent
e171022c24
commit
6679654efe
@ -91,6 +91,8 @@ typedef struct VAAPIEncodeH264Options {
|
||||
int low_power;
|
||||
int aud;
|
||||
int sei;
|
||||
int profile;
|
||||
int level;
|
||||
} VAAPIEncodeH264Options;
|
||||
|
||||
|
||||
@ -882,6 +884,11 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx)
|
||||
|
||||
ctx->codec = &vaapi_encode_type_h264;
|
||||
|
||||
if (avctx->profile == FF_PROFILE_UNKNOWN)
|
||||
avctx->profile = opt->profile;
|
||||
if (avctx->level == FF_LEVEL_UNKNOWN)
|
||||
avctx->level = opt->level;
|
||||
|
||||
switch (avctx->profile) {
|
||||
case FF_PROFILE_H264_BASELINE:
|
||||
av_log(avctx, AV_LOG_WARNING, "H.264 baseline profile is not "
|
||||
@ -995,12 +1002,49 @@ static const AVOption vaapi_encode_h264_options[] = {
|
||||
{ "recovery_point", "Include recovery points where appropriate",
|
||||
0, AV_OPT_TYPE_CONST, { .i64 = SEI_RECOVERY_POINT },
|
||||
INT_MIN, INT_MAX, FLAGS, "sei" },
|
||||
|
||||
{ "profile", "Set profile (profile_idc and constraint_set*_flag)",
|
||||
OFFSET(profile), AV_OPT_TYPE_INT,
|
||||
{ .i64 = FF_PROFILE_H264_HIGH }, 0x0000, 0xffff, FLAGS, "profile" },
|
||||
|
||||
#define PROFILE(name, value) name, NULL, 0, AV_OPT_TYPE_CONST, \
|
||||
{ .i64 = value }, 0, 0, FLAGS, "profile"
|
||||
{ PROFILE("constrained_baseline", FF_PROFILE_H264_CONSTRAINED_BASELINE) },
|
||||
{ PROFILE("main", FF_PROFILE_H264_MAIN) },
|
||||
{ PROFILE("high", FF_PROFILE_H264_HIGH) },
|
||||
#undef PROFILE
|
||||
|
||||
{ "level", "Set level (level_idc)",
|
||||
OFFSET(level), AV_OPT_TYPE_INT,
|
||||
{ .i64 = 51 }, 0x00, 0xff, FLAGS, "level" },
|
||||
|
||||
#define LEVEL(name, value) name, NULL, 0, AV_OPT_TYPE_CONST, \
|
||||
{ .i64 = value }, 0, 0, FLAGS, "level"
|
||||
{ LEVEL("1", 10) },
|
||||
{ LEVEL("1.1", 11) },
|
||||
{ LEVEL("1.2", 12) },
|
||||
{ LEVEL("1.3", 13) },
|
||||
{ LEVEL("2", 20) },
|
||||
{ LEVEL("2.1", 21) },
|
||||
{ LEVEL("2.2", 22) },
|
||||
{ LEVEL("3", 30) },
|
||||
{ LEVEL("3.1", 31) },
|
||||
{ LEVEL("3.2", 32) },
|
||||
{ LEVEL("4", 40) },
|
||||
{ LEVEL("4.1", 41) },
|
||||
{ LEVEL("4.2", 42) },
|
||||
{ LEVEL("5", 50) },
|
||||
{ LEVEL("5.1", 51) },
|
||||
{ LEVEL("5.2", 52) },
|
||||
{ LEVEL("6", 60) },
|
||||
{ LEVEL("6.1", 61) },
|
||||
{ LEVEL("6.2", 62) },
|
||||
#undef LEVEL
|
||||
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
static const AVCodecDefault vaapi_encode_h264_defaults[] = {
|
||||
{ "profile", "100" },
|
||||
{ "level", "51" },
|
||||
{ "b", "0" },
|
||||
{ "bf", "2" },
|
||||
{ "g", "120" },
|
||||
|
Loading…
Reference in New Issue
Block a user