good:v4l2videodecoder: Fix video decoding failure 86/271086/2
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 15 Feb 2022 07:15:24 +0000 (16:15 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 15 Feb 2022 07:24:00 +0000 (16:24 +0900)
1. not-negotiation
 : Skip adding color space for output.
2. buffer drop
 : Set missed timestamp.

Change-Id: I54058c9e917a3e6b6dbf5efbc03461782aee68e4
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
subprojects/gst-plugins-good/meson.build
subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c
subprojects/gst-plugins-good/sys/v4l2/gstv4l2object.c

index 4f7e912e48084861fdbac6b283de4caeb675dd00..482df0e94346a965f0f0fa2101c5b27d63b1f503 100644 (file)
@@ -447,6 +447,7 @@ cdata.set('TIZEN_FEATURE_V4L2_ADDITIONAL_CID_SUPPORT', true)
 cdata.set('TIZEN_FEATURE_VPX_MODIFICATION', true)
 cdata.set('TIZEN_FEATURE_RTP_MODIFICATION', true)
 cdata.set('TIZEN_FEATURE_PULSE_MODIFICATION', true)
+cdata.set('TIZEN_FEATURE_V4L2_SKIP_ADD_COLORSPACE', true)
 
 gio_dep = dependency('gio-2.0')
 
index 329016f8b5905a1d52f913bd15271ee35cc986fa..1defa03c07c4ea0dc296ce57b52d38e3e2a61165 100644 (file)
@@ -1550,13 +1550,6 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer,
       GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
   }
 
-  if (group->buffer.flags & V4L2_BUF_FLAG_ERROR)
-    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_CORRUPTED);
-
-  GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
-  GST_BUFFER_OFFSET (outbuf) = group->buffer.sequence;
-  GST_BUFFER_OFFSET_END (outbuf) = group->buffer.sequence + 1;
-
 #ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
   if (group->surface) {
     tizen_buffer = gst_v4l2_tizen_buffer_new (outbuf, group->buffer.index, pool);
@@ -1567,6 +1560,14 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer,
     outbuf = tizen_buffer->gst_buffer;
   }
 #endif /* TIZEN_FEATURE_V4L2_TBM_SUPPORT */
+
+  if (group->buffer.flags & V4L2_BUF_FLAG_ERROR)
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_CORRUPTED);
+
+  GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
+  GST_BUFFER_OFFSET (outbuf) = group->buffer.sequence;
+  GST_BUFFER_OFFSET_END (outbuf) = group->buffer.sequence + 1;
+
 done:
   *buffer = outbuf;
 
index 7ca31239d26c1d34f134d84956e4769d246a66ec..7b381070b5b9b8af1f96ee128422f8479ececf7a 100644 (file)
@@ -2417,6 +2417,12 @@ gst_v4l2_object_add_colorspace (GstV4l2Object * v4l2object, GstStructure * s,
   GstVideoColorimetry cinfo;
   enum v4l2_colorspace req_cspace;
 
+#ifdef TIZEN_FEATURE_V4L2_SKIP_ADD_COLORSPACE
+  if (V4L2_TYPE_IS_OUTPUT (v4l2object->type)) {
+    GST_WARNING_OBJECT (v4l2object->dbg_obj, "skip for output");
+    return;
+  }
+#endif
   memset (&fmt, 0, sizeof (fmt));
   fmt.type = v4l2object->type;
   fmt.fmt.pix.width = width;