From c689c94458f0889871740715bff80aaf4852509a Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Tue, 17 Sep 2019 14:42:51 +0800 Subject: [PATCH] msdkdec: release the surface if this surface is not in use If the surface is not in use, we may release it even if GST_FLOW_OK is going to be returned, which may avoid the issue of failing to get surface available This fixes the regression caused by commit c05acf4 --- sys/msdk/gstmsdkdec.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index 50b88c35c2..e22748a005 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -1067,7 +1067,11 @@ gst_msdkdec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) if (bitstream.DataLength == 0) { flow = GST_FLOW_OK; - surface = NULL; + + /* Don't release it if the current surface is in use */ + if (surface && task->surface == surface->surface) + surface = NULL; + break; } } else if (status == MFX_ERR_MORE_DATA) {