msdk: check whether mfx function call fails

And log the failures for debugging
This commit is contained in:
Haihao Xiang 2019-01-09 12:19:50 +08:00
parent d7606a7667
commit 6c887f982e
3 changed files with 22 additions and 5 deletions

View file

@ -307,6 +307,14 @@ gst_msdk_context_new_with_parent (GstMsdkContext * parent)
if (priv->hardware) {
status = MFXVideoCORE_SetHandle (priv->session, MFX_HANDLE_VA_DISPLAY,
(mfxHDL) parent_priv->dpy);
if (status != MFX_ERR_NONE) {
GST_ERROR ("Setting VA handle failed (%s)",
msdk_status_to_string (status));
g_object_unref (obj);
return NULL;
}
}
#endif

View file

@ -351,9 +351,14 @@ gst_msdkenc_init_encoder (GstMsdkEnc * thiz)
status = MFXVideoVPP_GetVideoParam (session, &thiz->vpp_param);
if (status < MFX_ERR_NONE) {
mfxStatus status1;
GST_ERROR_OBJECT (thiz, "Get VPP Parameters failed (%s)",
msdk_status_to_string (status));
MFXVideoVPP_Close (session);
status1 = MFXVideoVPP_Close (session);
if (status1 != MFX_ERR_NONE && status1 != MFX_ERR_NOT_INITIALIZED)
GST_WARNING_OBJECT (thiz, "VPP close failed (%s)",
msdk_status_to_string (status1));
goto no_vpp;
} else if (status > MFX_ERR_NONE) {
GST_WARNING_OBJECT (thiz, "Get VPP Parameters returned: %s",
@ -689,8 +694,10 @@ gst_msdkenc_finish_frame (GstMsdkEnc * thiz, MsdkEncTask * task,
* is used in MSDK samples
* #define MSDK_ENC_WAIT_INTERVAL 300000
*/
MFXVideoCORE_SyncOperation (gst_msdk_context_get_session (thiz->context),
task->sync_point, 300000);
if (MFXVideoCORE_SyncOperation (gst_msdk_context_get_session (thiz->context),
task->sync_point, 300000) != MFX_ERR_NONE)
GST_WARNING_OBJECT (thiz, "failed to do sync operation");
if (!discard && task->output_bitstream.DataLength) {
GstBuffer *out_buf = NULL;
guint8 *data =

View file

@ -701,8 +701,10 @@ gst_msdkvpp_transform (GstBaseTransform * trans, GstBuffer * inbuf,
* is used in MSDK samples
* #define MSDK_VPP_WAIT_INTERVAL 300000
*/
if (sync_point)
MFXVideoCORE_SyncOperation (session, sync_point, 300000);
if (sync_point &&
MFXVideoCORE_SyncOperation (session, sync_point,
300000) != MFX_ERR_NONE)
GST_WARNING_OBJECT (thiz, "failed to do sync operation");
/* More than one output buffers are generated */
if (status == MFX_ERR_MORE_SURFACE) {