mirror of https://git.ffmpeg.org/ffmpeg.git
qsvenc: cavlc option is only available for h264
Moving option definition to h264 implementation and fixing command line defaults in order to properly respect cavlc input value Signed-off-by: Zhong Li <zhong.li@intel.com> Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
This commit is contained in:
parent
136e7cf64c
commit
b843b343d8
|
@ -540,19 +540,20 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
|
||||||
if (avctx->codec_id != AV_CODEC_ID_HEVC) {
|
if (avctx->codec_id != AV_CODEC_ID_HEVC) {
|
||||||
q->extco.Header.BufferId = MFX_EXTBUFF_CODING_OPTION;
|
q->extco.Header.BufferId = MFX_EXTBUFF_CODING_OPTION;
|
||||||
q->extco.Header.BufferSz = sizeof(q->extco);
|
q->extco.Header.BufferSz = sizeof(q->extco);
|
||||||
#if FF_API_CODER_TYPE
|
|
||||||
FF_DISABLE_DEPRECATION_WARNINGS
|
|
||||||
if (avctx->coder_type != 0)
|
|
||||||
q->cavlc = avctx->coder_type == FF_CODER_TYPE_VLC;
|
|
||||||
FF_ENABLE_DEPRECATION_WARNINGS
|
|
||||||
#endif
|
|
||||||
q->extco.CAVLC = q->cavlc ? MFX_CODINGOPTION_ON
|
|
||||||
: MFX_CODINGOPTION_UNKNOWN;
|
|
||||||
|
|
||||||
if (q->rdo >= 0)
|
if (q->rdo >= 0)
|
||||||
q->extco.RateDistortionOpt = q->rdo > 0 ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
|
q->extco.RateDistortionOpt = q->rdo > 0 ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
|
||||||
|
|
||||||
if (avctx->codec_id == AV_CODEC_ID_H264) {
|
if (avctx->codec_id == AV_CODEC_ID_H264) {
|
||||||
|
#if FF_API_CODER_TYPE
|
||||||
|
FF_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
if (avctx->coder_type >= 0)
|
||||||
|
q->cavlc = avctx->coder_type == FF_CODER_TYPE_VLC;
|
||||||
|
FF_ENABLE_DEPRECATION_WARNINGS
|
||||||
|
#endif
|
||||||
|
q->extco.CAVLC = q->cavlc ? MFX_CODINGOPTION_ON
|
||||||
|
: MFX_CODINGOPTION_UNKNOWN;
|
||||||
|
|
||||||
if (avctx->strict_std_compliance != FF_COMPLIANCE_NORMAL)
|
if (avctx->strict_std_compliance != FF_COMPLIANCE_NORMAL)
|
||||||
q->extco.NalHrdConformance = avctx->strict_std_compliance > FF_COMPLIANCE_NORMAL ?
|
q->extco.NalHrdConformance = avctx->strict_std_compliance > FF_COMPLIANCE_NORMAL ?
|
||||||
MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
|
MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
|
||||||
|
|
|
@ -66,8 +66,7 @@
|
||||||
{ "extbrc", "Extended bitrate control", OFFSET(qsv.extbrc), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
{ "extbrc", "Extended bitrate control", OFFSET(qsv.extbrc), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
||||||
{ "adaptive_i", "Adaptive I-frame placement", OFFSET(qsv.adaptive_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
{ "adaptive_i", "Adaptive I-frame placement", OFFSET(qsv.adaptive_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
||||||
{ "adaptive_b", "Adaptive B-frame placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
{ "adaptive_b", "Adaptive B-frame placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
||||||
{ "b_strategy", "Strategy to choose between I/P/B-frames", OFFSET(qsv.b_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE }, \
|
{ "b_strategy", "Strategy to choose between I/P/B-frames", OFFSET(qsv.b_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE },
|
||||||
{ "cavlc", "Enable CAVLC", OFFSET(qsv.cavlc), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, \
|
|
||||||
|
|
||||||
typedef struct QSVEncContext {
|
typedef struct QSVEncContext {
|
||||||
AVCodecContext *avctx;
|
AVCodecContext *avctx;
|
||||||
|
|
|
@ -67,6 +67,7 @@ static av_cold int qsv_enc_close(AVCodecContext *avctx)
|
||||||
static const AVOption options[] = {
|
static const AVOption options[] = {
|
||||||
QSV_COMMON_OPTS
|
QSV_COMMON_OPTS
|
||||||
|
|
||||||
|
{ "cavlc", "Enable CAVLC", OFFSET(qsv.cavlc), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
|
||||||
{ "idr_interval", "Distance (in I-frames) between IDR frames", OFFSET(qsv.idr_interval), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
|
{ "idr_interval", "Distance (in I-frames) between IDR frames", OFFSET(qsv.idr_interval), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
|
||||||
{ "single_sei_nal_unit", "Put all the SEI messages into one NALU", OFFSET(qsv.single_sei_nal_unit), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE },
|
{ "single_sei_nal_unit", "Put all the SEI messages into one NALU", OFFSET(qsv.single_sei_nal_unit), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE },
|
||||||
{ "max_dec_frame_buffering", "Maximum number of frames buffered in the DPB", OFFSET(qsv.max_dec_frame_buffering), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT16_MAX, VE },
|
{ "max_dec_frame_buffering", "Maximum number of frames buffered in the DPB", OFFSET(qsv.max_dec_frame_buffering), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT16_MAX, VE },
|
||||||
|
@ -106,7 +107,9 @@ static const AVCodecDefault qsv_enc_defaults[] = {
|
||||||
// same as the x264 default
|
// same as the x264 default
|
||||||
{ "g", "250" },
|
{ "g", "250" },
|
||||||
{ "bf", "3" },
|
{ "bf", "3" },
|
||||||
{ "coder", "ac" },
|
#if FF_API_CODER_TYPE
|
||||||
|
{ "coder", "-1" },
|
||||||
|
#endif
|
||||||
|
|
||||||
{ "flags", "+cgop" },
|
{ "flags", "+cgop" },
|
||||||
#if FF_API_PRIVATE_OPT
|
#if FF_API_PRIVATE_OPT
|
||||||
|
|
Loading…
Reference in New Issue