Commit d590bce5 authored by Sebastian Dröge's avatar Sebastian Dröge
Browse files

audioconvert: Optimize transform_caps()

If the second and next caps structures are a subset of the already existing
transformed caps we can safely skip them because we would transform them to
the same caps again.

This makes gst_pad_get_caps() on an audiotestsrc ! audioconvert !
audioconvert ! audioconvert ! fakesink pipeline about 1.7 times faster.
parent 992e01eb
......@@ -577,6 +577,21 @@ gst_audio_convert_transform_caps (GstBaseTransform * base,
for (j = 0; j < n; j++) {
structure = gst_caps_get_structure (caps, j);
if (j > 0) {
GstCaps *tmp = gst_caps_new_full (gst_structure_copy (structure), NULL);
/* If the new structure is a subset of the already existing transformed
* caps we can safely skip it because we would transform it to the
* same caps again.
*/
if (gst_caps_is_subset (tmp, ret)) {
gst_caps_unref (tmp);
continue;
}
gst_caps_unref (tmp);
}
structure_name = gst_structure_get_name (structure);
isfloat = strcmp (structure_name, "audio/x-raw-float") == 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment