{
gboolean have_clock_base;
guint clock_base;
+
+ GstCaps *out_caps;
} GstRTPMuxPadPrivate;
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
{
GstRTPMuxPadPrivate *padpriv = data;
+ gst_caps_replace (&padpriv->out_caps, NULL);
g_slice_free (GstRTPMuxPadPrivate, padpriv);
}
{
GstRTPMux *rtp_mux;
GstFlowReturn ret;
+ GstRTPMuxPadPrivate *padpriv = gst_pad_get_element_private (pad);
rtp_mux = GST_RTP_MUX (gst_pad_get_parent (pad));
GST_BUFFER_SIZE (buffer), rtp_mux->seqnum,
gst_rtp_buffer_get_timestamp (buffer));
- gst_buffer_set_caps (buffer, GST_PAD_CAPS (rtp_mux->srcpad));
+ gst_buffer_set_caps (buffer, padpriv->out_caps);
ret = gst_pad_push (rtp_mux->srcpad, buffer);
GST_DEBUG_OBJECT (rtp_mux,
"setting caps %" GST_PTR_FORMAT " on src pad..", caps);
ret = gst_pad_set_caps (rtp_mux->srcpad, caps);
- gst_caps_unref (caps);
+
+ if (ret)
+ gst_caps_replace (&padpriv->out_caps, caps);
+ else
+ gst_caps_unref (caps);
out:
gst_object_unref (rtp_mux);