From: Jeongmo Yang Date: Tue, 15 Feb 2022 07:15:24 +0000 (+0900) Subject: good:v4l2videodecoder: Fix video decoding failure X-Git-Tag: submit/tizen/20220216.051033~2^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e828059e6bed500c67b6bc9bfe46d6fe8262f2bb;p=platform%2Fupstream%2Fgstreamer.git good:v4l2videodecoder: Fix video decoding failure 1. not-negotiation : Skip adding color space for output. 2. buffer drop : Set missed timestamp. Change-Id: I54058c9e917a3e6b6dbf5efbc03461782aee68e4 Signed-off-by: Jeongmo Yang --- diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build index 4f7e912e48..482df0e943 100644 --- a/subprojects/gst-plugins-good/meson.build +++ b/subprojects/gst-plugins-good/meson.build @@ -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') diff --git a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c index 329016f8b5..1defa03c07 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c @@ -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; diff --git a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2object.c b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2object.c index 7ca31239d2..7b381070b5 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2object.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2object.c @@ -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;