GstVideoEncoderClass *klass = GST_VIDEO_ENCODER_GET_CLASS (encoder);
GstAllocator *allocator;
GstAllocationParams params;
- gboolean ret;
+ gboolean ret = TRUE;
GstVideoCodecState *state = encoder->priv->output_state;
GstVideoInfo *info = &state->info;
GstQuery *query = NULL;
GstVideoCodecFrame *frame;
+ GstCaps *prevcaps;
g_return_val_if_fail (state->caps != NULL, FALSE);
}
}
- ret = gst_pad_set_caps (encoder->srcpad, state->caps);
+ prevcaps = gst_pad_get_current_caps (encoder->srcpad);
+ if (!prevcaps || !gst_caps_is_equal (prevcaps, state->caps))
+ ret = gst_pad_set_caps (encoder->srcpad, state->caps);
+ if (prevcaps)
+ gst_caps_unref (prevcaps);
+
if (!ret)
goto done;