gst/audiofx/audiopanorama.*: Fix audiopanorame with float samples. Fixes #383726.

Original commit message from CVS:
Patch by: Sebastian Dröge  <mail at slomosnail de >
* gst/audiofx/audiopanorama.c: (gst_audio_panorama_init),
(gst_audio_panorama_set_caps), (gst_audio_panorama_transform):
* gst/audiofx/audiopanorama.h:
Fix audiopanorame with float samples. Fixes #383726.
This commit is contained in:
Sebastian Dröge 2006-12-08 16:38:18 +00:00 committed by Wim Taymans
parent a3b5d523d8
commit 6a016876c8
3 changed files with 22 additions and 2 deletions

View file

@ -1,3 +1,12 @@
2006-12-08 Wim Taymans <wim@fluendo.com>
Patch by: Sebastian Dröge <mail at slomosnail de >
* gst/audiofx/audiopanorama.c: (gst_audio_panorama_init),
(gst_audio_panorama_set_caps), (gst_audio_panorama_transform):
* gst/audiofx/audiopanorama.h:
Fix audiopanorame with float samples. Fixes #383726.
2006-12-08 Jan Schmidt <thaytan@mad.scientist.com> 2006-12-08 Jan Schmidt <thaytan@mad.scientist.com>
* sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_reset): * sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_reset):

View file

@ -168,6 +168,7 @@ gst_audio_panorama_init (GstAudioPanorama * filter,
GstAudioPanoramaClass * klass) GstAudioPanoramaClass * klass)
{ {
filter->panorama = 0; filter->panorama = 0;
filter->width = 0;
} }
static void static void
@ -253,7 +254,7 @@ gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps,
GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base); GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base);
const GstStructure *structure; const GstStructure *structure;
gboolean ret; gboolean ret;
gint channels; gint channels, width;
const gchar *fmt; const gchar *fmt;
/*GST_INFO ("incaps are %" GST_PTR_FORMAT, incaps); */ /*GST_INFO ("incaps are %" GST_PTR_FORMAT, incaps); */
@ -263,6 +264,12 @@ gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps,
if (!ret) if (!ret)
goto no_channels; goto no_channels;
ret = gst_structure_get_int (structure, "width", &width);
if (!ret)
goto no_width;
filter->width = width / 8;
fmt = gst_structure_get_name (structure); fmt = gst_structure_get_name (structure);
GST_DEBUG ("try to process %s input with %d channels", fmt, channels); GST_DEBUG ("try to process %s input with %d channels", fmt, channels);
@ -297,6 +304,9 @@ gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps,
no_channels: no_channels:
GST_DEBUG ("no channels in caps"); GST_DEBUG ("no channels in caps");
return ret; return ret;
no_width:
GST_DEBUG ("no width in caps");
return ret;
} }
static void static void
@ -434,7 +444,7 @@ gst_audio_panorama_transform (GstBaseTransform * base, GstBuffer * inbuf,
GstBuffer * outbuf) GstBuffer * outbuf)
{ {
GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base); GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base);
guint num_samples = GST_BUFFER_SIZE (outbuf) / (2 * sizeof (gint16)); guint num_samples = GST_BUFFER_SIZE (outbuf) / (2 * filter->width);
if (!gst_buffer_is_writable (outbuf)) if (!gst_buffer_is_writable (outbuf))
return GST_FLOW_OK; return GST_FLOW_OK;

View file

@ -45,6 +45,7 @@ struct _GstAudioPanorama {
/* < private > */ /* < private > */
GstAudioPanoramaProcessFunc process; GstAudioPanoramaProcessFunc process;
gint width;
}; };
struct _GstAudioPanoramaClass { struct _GstAudioPanoramaClass {