mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 14:26:43 +00:00
gst/audioresample/gstaudioresample.c: Fixate the rate to the nearest supported rate instead of the first one. Fixes b...
Original commit message from CVS: * gst/audioresample/gstaudioresample.c: (gst_audioresample_class_init), (audioresample_fixate_caps): Fixate the rate to the nearest supported rate instead of the first one. Fixes bug #549510.
This commit is contained in:
parent
08489d15ed
commit
70348d7327
2 changed files with 27 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2008-10-28 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||||
|
|
||||||
|
* gst/audioresample/gstaudioresample.c:
|
||||||
|
(gst_audioresample_class_init), (audioresample_fixate_caps):
|
||||||
|
Fixate the rate to the nearest supported rate instead of
|
||||||
|
the first one. Fixes bug #549510.
|
||||||
|
|
||||||
2008-10-27 Wim Taymans <wim.taymans@collabora.co.uk>
|
2008-10-27 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
* win32/common/libgstaudio.def:
|
* win32/common/libgstaudio.def:
|
||||||
|
|
|
@ -112,6 +112,8 @@ static gboolean audioresample_get_unit_size (GstBaseTransform * base,
|
||||||
GstCaps * caps, guint * size);
|
GstCaps * caps, guint * size);
|
||||||
static GstCaps *audioresample_transform_caps (GstBaseTransform * base,
|
static GstCaps *audioresample_transform_caps (GstBaseTransform * base,
|
||||||
GstPadDirection direction, GstCaps * caps);
|
GstPadDirection direction, GstCaps * caps);
|
||||||
|
static void audioresample_fixate_caps (GstBaseTransform * base,
|
||||||
|
GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
|
||||||
static gboolean audioresample_transform_size (GstBaseTransform * trans,
|
static gboolean audioresample_transform_size (GstBaseTransform * trans,
|
||||||
GstPadDirection direction, GstCaps * incaps, guint insize,
|
GstPadDirection direction, GstCaps * incaps, guint insize,
|
||||||
GstCaps * outcaps, guint * outsize);
|
GstCaps * outcaps, guint * outsize);
|
||||||
|
@ -172,6 +174,8 @@ gst_audioresample_class_init (GstAudioresampleClass * klass)
|
||||||
GST_DEBUG_FUNCPTR (audioresample_get_unit_size);
|
GST_DEBUG_FUNCPTR (audioresample_get_unit_size);
|
||||||
GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
|
GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
|
||||||
GST_DEBUG_FUNCPTR (audioresample_transform_caps);
|
GST_DEBUG_FUNCPTR (audioresample_transform_caps);
|
||||||
|
GST_BASE_TRANSFORM_CLASS (klass)->fixate_caps =
|
||||||
|
GST_DEBUG_FUNCPTR (audioresample_fixate_caps);
|
||||||
GST_BASE_TRANSFORM_CLASS (klass)->set_caps =
|
GST_BASE_TRANSFORM_CLASS (klass)->set_caps =
|
||||||
GST_DEBUG_FUNCPTR (audioresample_set_caps);
|
GST_DEBUG_FUNCPTR (audioresample_set_caps);
|
||||||
GST_BASE_TRANSFORM_CLASS (klass)->transform =
|
GST_BASE_TRANSFORM_CLASS (klass)->transform =
|
||||||
|
@ -272,6 +276,22 @@ audioresample_transform_caps (GstBaseTransform * base,
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fixate rate to the allowed rate that has the smallest difference */
|
||||||
|
static void
|
||||||
|
audioresample_fixate_caps (GstBaseTransform * base,
|
||||||
|
GstPadDirection direction, GstCaps * caps, GstCaps * othercaps)
|
||||||
|
{
|
||||||
|
GstStructure *s;
|
||||||
|
gint rate;
|
||||||
|
|
||||||
|
s = gst_caps_get_structure (caps, 0);
|
||||||
|
if (!gst_structure_get_int (s, "rate", &rate))
|
||||||
|
return;
|
||||||
|
|
||||||
|
s = gst_caps_get_structure (othercaps, 0);
|
||||||
|
gst_structure_fixate_field_nearest_int (s, "rate", rate);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
resample_set_state_from_caps (ResampleState * state, GstCaps * incaps,
|
resample_set_state_from_caps (ResampleState * state, GstCaps * incaps,
|
||||||
GstCaps * outcaps, gint * channels, gint * inrate, gint * outrate)
|
GstCaps * outcaps, gint * channels, gint * inrate, gint * outrate)
|
||||||
|
|
Loading…
Reference in a new issue