diff --git a/sys/v4l2/gstv4l2videoenc.c b/sys/v4l2/gstv4l2videoenc.c
index f89d02196317e00f0bc08f52d118bf586a1f52de..ea574de6ac624191f883b0e18a10921021afef23 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);