From 35f76fc33ae0c458505c8455dbac42f7837e0365 Mon Sep 17 00:00:00 2001 From: Scott D Phillips Date: Tue, 27 Sep 2016 14:21:34 -0700 Subject: [PATCH] msdk: load plugins in h265 and vp8 init https://bugzilla.gnome.org/show_bug.cgi?id=770990 --- sys/msdk/gstmsdkh265enc.c | 23 +++++++++++++++++++++++ sys/msdk/gstmsdkvp8enc.c | 18 +++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/sys/msdk/gstmsdkh265enc.c b/sys/msdk/gstmsdkh265enc.c index 8c12ef249a..3fb536a9f0 100644 --- a/sys/msdk/gstmsdkh265enc.c +++ b/sys/msdk/gstmsdkh265enc.c @@ -32,6 +32,7 @@ #ifdef HAVE_CONFIG_H # include #endif +#include #include "gstmsdkh265enc.h" @@ -60,6 +61,28 @@ gst_msdkh265enc_set_format (GstMsdkEnc * encoder) static gboolean gst_msdkh265enc_configure (GstMsdkEnc * encoder) { + GstMsdkH265Enc *h265enc = GST_MSDKH265ENC (encoder); + mfxSession session; + mfxStatus status; + const mfxPluginUID *uid; + + session = msdk_context_get_session (encoder->context); + + if (encoder->hardware) + uid = &MFX_PLUGINID_HEVCE_HW; + else + uid = &MFX_PLUGINID_HEVCE_SW; + + status = MFXVideoUSER_Load (session, uid, 1); + if (status < MFX_ERR_NONE) { + GST_ERROR_OBJECT (h265enc, "Media SDK Plugin load failed (%s)", + msdk_status_to_string (status)); + return FALSE; + } else if (status > MFX_ERR_NONE) { + GST_WARNING_OBJECT (h265enc, "Media SDK Plugin load warning: %s", + msdk_status_to_string (status)); + } + encoder->param.mfx.CodecId = MFX_CODEC_HEVC; encoder->param.mfx.CodecProfile = MFX_PROFILE_HEVC_MAIN; diff --git a/sys/msdk/gstmsdkvp8enc.c b/sys/msdk/gstmsdkvp8enc.c index 7c67417069..069b466e51 100644 --- a/sys/msdk/gstmsdkvp8enc.c +++ b/sys/msdk/gstmsdkvp8enc.c @@ -32,9 +32,10 @@ #ifdef HAVE_CONFIG_H # include #endif +#include +#include #include "gstmsdkvp8enc.h" -#include "mfxvp8.h" GST_DEBUG_CATEGORY_EXTERN (gst_msdkvp8enc_debug); #define GST_CAT_DEFAULT gst_msdkvp8enc_debug @@ -108,6 +109,21 @@ static gboolean gst_msdkvp8enc_configure (GstMsdkEnc * encoder) { GstMsdkVP8Enc *thiz = GST_MSDKVP8ENC (encoder); + mfxSession session; + mfxStatus status; + + if (encoder->hardware) { + session = msdk_context_get_session (encoder->context); + status = MFXVideoUSER_Load (session, &MFX_PLUGINID_VP8E_HW, 1); + if (status < MFX_ERR_NONE) { + GST_ERROR_OBJECT (thiz, "Media SDK Plugin load failed (%s)", + msdk_status_to_string (status)); + return FALSE; + } else if (status > MFX_ERR_NONE) { + GST_WARNING_OBJECT (thiz, "Media SDK Plugin load warning: %s", + msdk_status_to_string (status)); + } + } encoder->param.mfx.CodecId = MFX_CODEC_VP8; encoder->param.mfx.CodecProfile = thiz->profile;