mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-03 04:52:28 +00:00
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.
This commit is contained in:
parent
992e01eb63
commit
d590bce5f7
1 changed files with 15 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue