x264: Allow renegotiation but prefer current caps

This commit is contained in:
Olivier Crête 2011-07-04 18:03:49 -04:00
parent e595cdc311
commit ac47d20fae

View file

@ -1655,10 +1655,6 @@ gst_x264_enc_sink_get_caps (GstPad * pad)
GstPad *peer; GstPad *peer;
GstCaps *caps; GstCaps *caps;
/* If we already have caps return them */
if (GST_PAD_CAPS (pad))
return gst_caps_ref (GST_PAD_CAPS (pad));
encoder = GST_X264_ENC (gst_pad_get_parent (pad)); encoder = GST_X264_ENC (gst_pad_get_parent (pad));
if (!encoder) if (!encoder)
return gst_caps_new_empty (); return gst_caps_new_empty ();
@ -1692,6 +1688,14 @@ gst_x264_enc_sink_get_caps (GstPad * pad)
caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad)); caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
} }
/* If we already have caps return them */
if (GST_PAD_CAPS (pad) && gst_caps_can_intersect (GST_PAD_CAPS (pad), caps)) {
GstCaps *tmpcaps = gst_caps_copy (GST_PAD_CAPS (pad));
gst_caps_merge (tmpcaps, caps);
caps = tmpcaps;
}
gst_object_unref (encoder); gst_object_unref (encoder);
return caps; return caps;