summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2020-05-21 17:12:55 -0400
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-05-22 19:11:47 +0000
commit3ea71a63f674e4fb01006f4c43ddef19e080187a (patch)
tree6c8a2e5f8644073758bff0e2302b56488ca7855c
parentd93664d65d20191aa2af0075f8f0e65a78820199 (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.c8
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);