Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gst-plugins-good.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2021-02-24 15:25:43 +0300
committerPhilipp Zabel <philipp.zabel@gmail.com>2021-02-24 19:15:49 +0300
commite885e0e1d78b199280c8252cbf726b8a81393aba (patch)
tree04183fd8f2c6a2205468c9764ae9cf24a63b3691 /sys
parent1257e50d4983ad210ba9a5b753e397b33239a354 (diff)
v4l2videodec: fix src side frame rate negotiation
Negotiating v4l2h264dec ! v4l2h264enc transcoding pipelines fails in case the encoder does not accept framerate=(fraction)0/1. The acquired caps used for downstream negotiation are determined from gst_v4l2_object_acquire_format(), which sets the GstVideoInfo::fps_n and ::fps_d fields to 0. To fix this, copy the frame rate from the sink side. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/882>
Diffstat (limited to 'sys')
-rw-r--r--sys/v4l2/gstv4l2videodec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/v4l2/gstv4l2videodec.c b/sys/v4l2/gstv4l2videodec.c
index 89ad3e817..c61fb2522 100644
--- a/sys/v4l2/gstv4l2videodec.c
+++ b/sys/v4l2/gstv4l2videodec.c
@@ -697,6 +697,10 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
if (!gst_v4l2_object_acquire_format (self->v4l2capture, &info))
goto not_negotiated;
+ /* gst_v4l2_object_acquire_format() does not set fps, copy from sink */
+ info.fps_n = self->v4l2output->info.fps_n;
+ info.fps_d = self->v4l2output->info.fps_d;
+
/* Create caps from the acquired format, remove the format field */
acquired_caps = gst_video_info_to_caps (&info);
GST_DEBUG_OBJECT (self, "Acquired caps: %" GST_PTR_FORMAT, acquired_caps);