diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2020-05-21 17:12:55 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-05-22 19:11:47 +0000 |
commit | 3ea71a63f674e4fb01006f4c43ddef19e080187a (patch) | |
tree | 6c8a2e5f8644073758bff0e2302b56488ca7855c | |
parent | d93664d65d20191aa2af0075f8f0e65a78820199 (diff) |
v4l2: videodec: Fix broken template caps
The profiles and levels were applied to the common caps instead of the copy.
That had the side effect of setting profiles/level from one CODEC onto
another. Leaving to encoder not being registered or not-negotiated errors.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/599>
-rw-r--r-- | sys/v4l2/gstv4l2videoenc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/v4l2/gstv4l2videoenc.c b/sys/v4l2/gstv4l2videoenc.c index f89d021963..ea574de6ac 100644 --- a/sys/v4l2/gstv4l2videoenc.c +++ b/sys/v4l2/gstv4l2videoenc.c @@ -1176,20 +1176,20 @@ gst_v4l2_video_enc_register (GstPlugin * plugin, GType type, GstV4l2VideoEncCData *cdata; GValue value = G_VALUE_INIT; + filtered_caps = gst_caps_intersect (src_caps, codec_caps); + if (codec != NULL && video_fd != -1) { if (gst_v4l2_codec_probe_levels (codec, video_fd, &value)) { - gst_caps_set_value (src_caps, "level", &value); + gst_caps_set_value (filtered_caps, "level", &value); g_value_unset (&value); } if (gst_v4l2_codec_probe_profiles (codec, video_fd, &value)) { - gst_caps_set_value (src_caps, "profile", &value); + gst_caps_set_value (filtered_caps, "profile", &value); g_value_unset (&value); } } - filtered_caps = gst_caps_intersect (src_caps, codec_caps); - cdata = g_new0 (GstV4l2VideoEncCData, 1); cdata->device = g_strdup (device_path); cdata->sink_caps = gst_caps_ref (sink_caps); |