|  |  | @@ -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" }, | 
		
	
	
		
			
				|  |  | 
 |