[2/2] qsv/h264enc: fix cavlc option setting useless issue

Message ID 1510559651-3156-2-git-send-email-zhong.li@intel.com
State New
Headers show

Commit Message

Li, Zhong Nov. 13, 2017, 7:54 a.m.
No matter cavlc option is set to 0 or 1, the output bitstream is always
cabac mode.
Reproduce: -y -s widthxheight -i widthxheight.yuv -vcodec h264_qsv
-b:v 2000k -maxrate 2000k -cavlc 1 test.h264
Then check the entropy_coding_mode_flag of the encoded bitstream
It is due to the dulicate option "coder" (which should be deprecated) is set to cabac

Signed-off-by: Zhong Li <zhong.li@intel.com>
---
 libavcodec/qsvenc.c      | 11 ++++++-----
 libavcodec/qsvenc_h264.c |  4 +++-
 2 files changed, 9 insertions(+), 6 deletions(-)

Patch

diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index c7e5947..65adb44 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -540,19 +540,20 @@  static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
     if (avctx->codec_id != AV_CODEC_ID_HEVC) {
         q->extco.Header.BufferId      = MFX_EXTBUFF_CODING_OPTION;
         q->extco.Header.BufferSz      = sizeof(q->extco);
+
+        if (q->rdo >= 0)
+            q->extco.RateDistortionOpt = q->rdo > 0 ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
+
+        if (avctx->codec_id == AV_CODEC_ID_H264) {
 #if FF_API_CODER_TYPE
 FF_DISABLE_DEPRECATION_WARNINGS
-        if (avctx->coder_type != 0)
+        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)
-            q->extco.RateDistortionOpt = q->rdo > 0 ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
-
-        if (avctx->codec_id == AV_CODEC_ID_H264) {
             if (avctx->strict_std_compliance != FF_COMPLIANCE_NORMAL)
                 q->extco.NalHrdConformance = avctx->strict_std_compliance > FF_COMPLIANCE_NORMAL ?
                                              MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c
index 62f1909..1365fac 100644
--- a/libavcodec/qsvenc_h264.c
+++ b/libavcodec/qsvenc_h264.c
@@ -107,7 +107,9 @@  static const AVCodecDefault qsv_enc_defaults[] = {
     // same as the x264 default
     { "g",         "250"   },
     { "bf",        "3"     },
-    { "coder",     "ac"    },
+#if FF_API_CODER_TYPE
+    { "coder",     "-1"    },
+#endif
 
     { "flags",     "+cgop" },
 #if FF_API_PRIVATE_OPT