summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>2018-02-14 14:29:57 +0000
committerSreerenj Balachandran <sreerenj.balachandran@intel.com>2018-02-20 12:39:02 -0900
commita165a1a1a9c9aaad6dcd178a75086864ec438a8f (patch)
tree74402c5480bf0883f45b47e85cd1c82938653911
parentfa0911c3f69de258d10c104991c7bad597ef83a8 (diff)
downloadgstreamer-plugins-bad-a165a1a1a9c9aaad6dcd178a75086864ec438a8f.tar.gz
msdk: encoder: h265: generalize the behavior of "i-frames" property
We have the property "i-frames" to set the IDR interval in a gop. Unfortunately MSDK HEVC encoder behaves bit differently for IdrInterval field, IdrInteval == 1 indicate every I-frame should be an IDR (which is IdrInterval == 0 for other codecs), IdrInteval == 2 means every other I-frame is an IDR (which is IdrInterval == 1 for other codecs) etc. So we generalize the behaviour of property "i-frames" by incrementing the value by one in each case (only for HEVC). https://bugzilla.gnome.org/show_bug.cgi?id=791637
-rw-r--r--sys/msdk/gstmsdkh265enc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/msdk/gstmsdkh265enc.c b/sys/msdk/gstmsdkh265enc.c
index d0361e4a3..0f6de89be 100644
--- a/sys/msdk/gstmsdkh265enc.c
+++ b/sys/msdk/gstmsdkh265enc.c
@@ -91,6 +91,13 @@ gst_msdkh265enc_configure (GstMsdkEnc * encoder)
encoder->param.mfx.CodecId = MFX_CODEC_HEVC;
encoder->param.mfx.CodecProfile = MFX_PROFILE_HEVC_MAIN;
+ /* IdrInterval field of MediaSDK HEVC encoder behaves differently
+ * than other encoders. IdrInteval == 1 indicate every
+ * I-frame should be an IDR, IdrInteval == 2 means every other
+ * I-frame is an IDR etc. So we generalize the behaviour of property
+ * "i-frames" by incrementing the value by one in each case*/
+ encoder->param.mfx.IdrInterval += 1;
+
return TRUE;
}