summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMengkejiergeli Ba <mengkejiergeli.ba@intel.com>2021-09-15 16:32:02 +0800
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-09-18 06:04:56 +0000
commit788826b2056c92180da1f93565d67498227ca9a0 (patch)
tree0965960ccc9a77504b49d35392682e24321e8b93
parentafa1c19b37882a165fc0327ac103851edb95f7ec (diff)
downloadgstreamer-plugins-bad-788826b2056c92180da1f93565d67498227ca9a0.tar.gz
msdkh265enc: Add profile main10 still picture for hevc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2524>
-rw-r--r--sys/msdk/gstmsdkh265enc.c12
-rw-r--r--sys/msdk/gstmsdkh265enc.h1
2 files changed, 11 insertions, 2 deletions
diff --git a/sys/msdk/gstmsdkh265enc.c b/sys/msdk/gstmsdkh265enc.c
index 7fc596807..bd8914f0e 100644
--- a/sys/msdk/gstmsdkh265enc.c
+++ b/sys/msdk/gstmsdkh265enc.c
@@ -96,7 +96,7 @@ enum
#define PROP_DBLK_IDC_DEFAULT 0
#define RAW_FORMATS "NV12, I420, YV12, YUY2, UYVY, BGRA, BGR10A2_LE, P010_10LE, VUYA"
-#define PROFILES "main, main-10, main-444, main-still-picture"
+#define PROFILES "main, main-10, main-444, main-still-picture, main-10-still-picture"
#define COMMON_FORMAT "{ " RAW_FORMATS " }"
#define PRFOLIE_STR "{ " PROFILES " }"
@@ -326,7 +326,15 @@ gst_msdkh265enc_configure (GstMsdkEnc * encoder)
encoder->param.mfx.CodecProfile = MFX_PROFILE_HEVC_MAIN10;
else if (!strcmp (h265enc->profile_name, "main-still-picture"))
encoder->param.mfx.CodecProfile = MFX_PROFILE_HEVC_MAINSP;
- else if (!strcmp (h265enc->profile_name, "main-444") ||
+ else if (!strcmp (h265enc->profile_name, "main-10-still-picture")) {
+ encoder->param.mfx.CodecProfile = MFX_PROFILE_HEVC_MAIN10;
+ h265enc->ext_param.Header.BufferId = MFX_EXTBUFF_HEVC_PARAM;
+ h265enc->ext_param.Header.BufferSz = sizeof (h265enc->ext_param);
+ h265enc->ext_param.GeneralConstraintFlags =
+ MFX_HEVC_CONSTR_REXT_ONE_PICTURE_ONLY;
+ gst_msdkenc_add_extra_param (encoder,
+ (mfxExtBuffer *) & h265enc->ext_param);
+ } else if (!strcmp (h265enc->profile_name, "main-444") ||
!strcmp (h265enc->profile_name, "main-422-10") ||
!strcmp (h265enc->profile_name, "main-444-10") ||
!strcmp (h265enc->profile_name, "main-12"))
diff --git a/sys/msdk/gstmsdkh265enc.h b/sys/msdk/gstmsdkh265enc.h
index 9cb30fc9d..f4f06f772 100644
--- a/sys/msdk/gstmsdkh265enc.h
+++ b/sys/msdk/gstmsdkh265enc.h
@@ -71,6 +71,7 @@ struct _GstMsdkH265Enc
guint dblk_idc;
mfxExtHEVCTiles ext_tiles;
+ mfxExtHEVCParam ext_param;
/* roi[0] for current ROI and roi[1] for previous ROI */
mfxExtEncoderROI roi[2];