diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2019-02-11 13:53:19 +0800 |
---|---|---|
committer | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2019-02-12 11:39:04 +0000 |
commit | 028338ff44b2644276a6525668bd9fe3809dcd64 (patch) | |
tree | 6741eb3a5418c72d0ce35e7f1f2a180eaa920400 | |
parent | 5f2f289b7e4c5b96873866dc1459d6e390beeab3 (diff) | |
download | gstreamer-plugins-bad-028338ff44b2644276a6525668bd9fe3809dcd64.tar.gz |
msdkdec: set decode_only for output only
MSDK may return MFX_ERR_MORE_DATA but without output surface
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/887
-rw-r--r-- | sys/msdk/gstmsdkdec.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index db58112a3..134459fab 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -1025,8 +1025,11 @@ gst_msdkdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) break; } } else if (status == MFX_ERR_MORE_DATA) { - task->decode_only = TRUE; - thiz->next_task = (thiz->next_task + 1) % thiz->tasks->len; + if (task->surface) { + task->decode_only = TRUE; + thiz->next_task = (thiz->next_task + 1) % thiz->tasks->len; + } + if (surface->surface->Data.Locked > 0) surface = NULL; flow = GST_VIDEO_DECODER_FLOW_NEED_DATA; |