Package: gst-plugins0.8
Version: 0.8.11-2
Severity: wishlist

Hi,
please consider adding wavpack support, now that wavpack is in Debian.
Currently the wavpack has a bug on powerpc for which I'll get a fix up
asap, maybe already this evening.

The wavpack plugin also needs one patch to fix
http://bugzilla.gnome.org/show_bug.cgi?id=317774

I've attached the patch, it's from gst cvs

Thanks and bye
--- ext/wavpack/gstwavpackdec.c	2005/06/09 17:21:00	1.1.2.3
+++ ext/wavpack/gstwavpackdec.c	2005/11/11 17:23:28	1.1.2.4
@@ -117,10 +117,6 @@
 
   gst_pad_set_explicit_caps (wavpackdec->srcpad, srccaps);
 
-  // blocks are usually 0.5 seconds long, assume that's always the case for now
-  wavpackdec->decodebuf =
-      (int32_t *) g_malloc ((wavpackdec->samplerate / 2) *
-      wavpackdec->channels * sizeof (int32_t));
   return GST_PAD_LINK_OK;
 }
 
@@ -236,6 +232,7 @@
       gst_wavpack_dec_loop);
 
   wavpackdec->decodebuf = NULL;
+  wavpackdec->decodebuf_size = 0;
   wavpackdec->stream = (WavpackStream *) g_malloc0 (sizeof (WavpackStream));
   wavpackdec->context = (WavpackContext *) g_malloc0 (sizeof (WavpackContext));
 }
@@ -246,6 +243,7 @@
 {
   WavpackContext *context = wavpackdec->context;
   WavpackStream *stream = wavpackdec->stream;
+  guint buffer_size;
 
   memset (context, 0, sizeof (context));
 
@@ -267,6 +265,14 @@
     context->wvc_flag = FALSE;
   }
 
+  buffer_size =
+      stream->wphdr.block_samples * wavpackdec->channels * sizeof (int32_t);
+  if (wavpackdec->decodebuf_size < buffer_size) {
+    wavpackdec->decodebuf =
+        (int32_t *) g_realloc (wavpackdec->decodebuf, buffer_size);
+    wavpackdec->decodebuf_size = buffer_size;
+  }
+
   unpack_init (context);
 }
 
--- ext/wavpack/gstwavpackdec.h	2005/06/09 17:21:00	1.1.2.1
+++ ext/wavpack/gstwavpackdec.h	2005/11/11 17:23:28	1.1.2.2
@@ -53,6 +53,7 @@
   WavpackContext *context;
 
   int32_t *decodebuf;
+  guint decodebuf_size;
 
   WavpackStream *stream;
 

Reply via email to