gst/audiofx/audiopanorama.*: Fix audiopanorame with float samples. Fixes #383726.
authorSebastian Dröge <mail@slomosnail.de>
Fri, 8 Dec 2006 16:38:18 +0000 (16:38 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Fri, 8 Dec 2006 16:38:18 +0000 (16:38 +0000)
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.

ChangeLog
gst/audiofx/audiopanorama.c
gst/audiofx/audiopanorama.h

index 05de0d5..d2ad522 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_reset):
index 6b9cd8c..dec9550 100644 (file)
@@ -168,6 +168,7 @@ gst_audio_panorama_init (GstAudioPanorama * filter,
     GstAudioPanoramaClass * klass)
 {
   filter->panorama = 0;
+  filter->width = 0;
 }
 
 static void
@@ -253,7 +254,7 @@ gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps,
   GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base);
   const GstStructure *structure;
   gboolean ret;
-  gint channels;
+  gint channels, width;
   const gchar *fmt;
 
   /*GST_INFO ("incaps are %" GST_PTR_FORMAT, incaps); */
@@ -263,6 +264,12 @@ gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps,
   if (!ret)
     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);
 
   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:
   GST_DEBUG ("no channels in caps");
   return ret;
+no_width:
+  GST_DEBUG ("no width in caps");
+  return ret;
 }
 
 static void
@@ -434,7 +444,7 @@ gst_audio_panorama_transform (GstBaseTransform * base, GstBuffer * inbuf,
     GstBuffer * outbuf)
 {
   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))
     return GST_FLOW_OK;
index 623e9a6..eaa9927 100644 (file)
@@ -45,6 +45,7 @@ struct _GstAudioPanorama {
   
   /* < private > */
   GstAudioPanoramaProcessFunc process;
+  gint width;
 };
 
 struct _GstAudioPanoramaClass {