msdk: fix plugin load on implementations with only HW support
We can't assume that MSDK always supports SW implementation
on all platforms. Thus, msdk_is_available should check for
ANY implementation.
https://bugzilla.gnome.org/show_bug.cgi?id=794991
diff --git a/sys/msdk/gstmsdkcontext.c b/sys/msdk/gstmsdkcontext.c
index 4447474..e455152 100644
--- a/sys/msdk/gstmsdkcontext.c
+++ b/sys/msdk/gstmsdkcontext.c
@@ -183,7 +183,8 @@
priv->job_type = job_type;
priv->hardware = hardware;
- priv->session = msdk_open_session (hardware);
+ priv->session =
+ msdk_open_session (hardware ? MFX_IMPL_HARDWARE_ANY : MFX_IMPL_SOFTWARE);
if (!priv->session)
goto failed;
diff --git a/sys/msdk/msdk.c b/sys/msdk/msdk.c
index eaca746..a214508 100644
--- a/sys/msdk/msdk.c
+++ b/sys/msdk/msdk.c
@@ -147,7 +147,7 @@
}
mfxSession
-msdk_open_session (gboolean hardware)
+msdk_open_session (mfxIMPL impl)
{
mfxSession session = NULL;
mfxVersion version = { {1, 1}
@@ -160,8 +160,7 @@
"HARDWARE3", "HARDWARE4", "RUNTIME"
};
- status = MFXInit (hardware ? MFX_IMPL_HARDWARE_ANY : MFX_IMPL_SOFTWARE,
- &version, &session);
+ status = MFXInit (impl, &version, &session);
if (status != MFX_ERR_NONE) {
GST_ERROR ("Intel Media SDK not available (%s)",
msdk_status_to_string (status));
@@ -195,7 +194,7 @@
gboolean
msdk_is_available (void)
{
- mfxSession session = msdk_open_session (FALSE);
+ mfxSession session = msdk_open_session (MFX_IMPL_AUTO_ANY);
if (!session) {
return FALSE;
}
diff --git a/sys/msdk/msdk.h b/sys/msdk/msdk.h
index a764f2c..d1c874c 100644
--- a/sys/msdk/msdk.h
+++ b/sys/msdk/msdk.h
@@ -49,7 +49,7 @@
G_BEGIN_DECLS
-mfxSession msdk_open_session (gboolean hardware);
+mfxSession msdk_open_session (mfxIMPL impl);
void msdk_close_session (mfxSession session);
gboolean msdk_is_available (void);