From c9f0cff5efd8096caf8a6fa37b0640abddcde8e8 Mon Sep 17 00:00:00 2001 From: Zhong Li Date: Thu, 25 Oct 2018 19:14:16 +0800 Subject: [PATCH] lavc/qsvenc: add an option to set h264 pps for every frame RepeatPPS is enabled by default in mfx. It is not necessary mostly and wasting encoding bits. Add an option to control it and disable it by default. Reviewed-by: Mark Thompson Signed-off-by: Zhong Li --- libavcodec/qsvenc.c | 1 + libavcodec/qsvenc.h | 2 ++ libavcodec/qsvenc_h264.c | 2 ++ libavcodec/version.h | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 48bfec70c4..53ba7cad15 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -654,6 +654,7 @@ FF_ENABLE_DEPRECATION_WARNINGS #if QSV_VERSION_ATLEAST(1, 8) q->extco2.LookAheadDS = q->look_ahead_downsampling; + q->extco2.RepeatPPS = q->repeat_pps ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; #if FF_API_PRIVATE_OPT FF_DISABLE_DEPRECATION_WARNINGS diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h index fbdc19900d..4316a101ca 100644 --- a/libavcodec/qsvenc.h +++ b/libavcodec/qsvenc.h @@ -162,6 +162,8 @@ typedef struct QSVEncContext { int int_ref_qp_delta; int recovery_point_sei; + int repeat_pps; + int a53_cc; #if QSV_HAVE_MF diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c index 07c9d64e6b..8e61826eef 100644 --- a/libavcodec/qsvenc_h264.c +++ b/libavcodec/qsvenc_h264.c @@ -154,6 +154,8 @@ static const AVOption options[] = { { "auto" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_MF_AUTO }, INT_MIN, INT_MAX, VE, "mfmode" }, #endif + { "repeat_pps", "repeat pps for every frame", OFFSET(qsv.repeat_pps), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, + { NULL }, }; diff --git a/libavcodec/version.h b/libavcodec/version.h index f758093582..372a6f45b4 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 41 -#define LIBAVCODEC_VERSION_MICRO 101 +#define LIBAVCODEC_VERSION_MICRO 102 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ -- GitLab