v4l2videodec: safely retrun from video_dec_loop with stream unlock 29/279729/1 accepted/tizen/unified/20220819.122509 submit/tizen/20220817.065352
authorHou Qi <qi.hou@nxp.com>
Tue, 15 Mar 2022 01:49:59 +0000 (09:49 +0800)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 17 Aug 2022 04:47:13 +0000 (13:47 +0900)
This is to avoid decoder hang when doing trick play between
different resolutions.

Change-Id: I5731d6f7f587955fd4c5ffd07e1bc57404f10b23
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1960>

subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c

index 1cecac8..b80e672 100644 (file)
@@ -734,8 +734,10 @@ gst_v4l2_video_dec_loop (GstVideoDecoder * decoder)
   if (g_atomic_int_get (&self->capture_configuration_change)) {
     gst_v4l2_object_stop (self->v4l2capture);
     ret = gst_v4l2_video_dec_setup_capture (decoder);
-    if (ret != GST_FLOW_OK)
+    if (ret != GST_FLOW_OK) {
+      GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
       return;
+    }
     g_atomic_int_set (&self->capture_configuration_change, FALSE);
   }
   GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);