v4l2videoenc: Only renegotiate with upstream
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 28 Jun 2018 23:08:35 +0000 (19:08 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 29 Jun 2018 14:39:04 +0000 (10:39 -0400)
When the decoder get linked further, it will receive a renegotiation
event from downstream. This case is not supported and should be ignored.

This fixes issues when this encoder is used inside an GstRtspServer
pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=796525

sys/v4l2/gstv4l2videoenc.c

index 5b6b810..7e88923 100644 (file)
@@ -521,6 +521,10 @@ gst_v4l2_video_enc_negotiate (GstVideoEncoder * encoder)
   GST_DEBUG_OBJECT (self, "Negotiating %s profile and level.",
       klass->codec_name);
 
+  /* Only renegotiate on upstream changes */
+  if (self->input_state)
+    return TRUE;
+
   allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (encoder));
 
   if (allowed_caps) {