mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-02 21:48:55 +00:00
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>
This commit is contained in:
parent
1257e50d49
commit
e885e0e1d7
1 changed files with 4 additions and 0 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue