videorate/videoscale/audioresample: Ensure that the caps returned from fixate_caps() are actually fixated

If there is some other field than the ones we care about left and not
fixated yet then basetransform will just error out. So instead just pass
the result through gst_caps_fixate() in the very end.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/799>
This commit is contained in:
Sebastian Dröge 2020-08-25 12:56:21 +03:00 committed by GStreamer Merge Bot
parent d74b9f56fc
commit 3edf390b4c
3 changed files with 4 additions and 2 deletions

View file

@ -362,7 +362,7 @@ gst_audio_resample_fixate_caps (GstBaseTransform * base,
s = gst_caps_get_structure (othercaps, 0);
gst_structure_fixate_field_nearest_int (s, "rate", rate);
return othercaps;
return gst_caps_fixate (othercaps);
}
static GstStructure *

View file

@ -535,7 +535,7 @@ gst_video_rate_fixate_caps (GstBaseTransform * trans,
if ((par = gst_structure_get_value (s, "pixel-aspect-ratio")))
gst_structure_fixate_field_nearest_fraction (s, "pixel-aspect-ratio", 1, 1);
return othercaps;
return gst_caps_fixate (othercaps);
}
static gboolean

View file

@ -1149,6 +1149,8 @@ gst_video_scale_fixate_caps (GstBaseTransform * base, GstPadDirection direction,
}
done:
othercaps = gst_caps_fixate (othercaps);
GST_DEBUG_OBJECT (base, "fixated othercaps to %" GST_PTR_FORMAT, othercaps);
if (from_par == &fpar)