All pastes #909770 Raw Edit

ensonic

public text v1 · immutable
·published 2008-02-19 14:14 UTC
rendered paste body
Index: gstaudioconvert.c
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-base/gst/audioconvert/gstaudioconvert.c,v
retrieving revision 1.120
diff -u -p -r1.120 gstaudioconvert.c
--- gstaudioconvert.c   31 Oct 2007 17:54:48 -0000      1.120
+++ gstaudioconvert.c   19 Feb 2008 14:14:35 -0000
@@ -977,10 +977,23 @@ gst_audio_convert_transform (GstBaseTran
   src = GST_BUFFER_DATA (inbuf);
   dst = GST_BUFFER_DATA (outbuf);
 
-  /* and convert the samples */
-  if (!(res = audio_convert_convert (&this->ctx, src, dst,
-              samples, gst_buffer_is_writable (inbuf))))
-    goto convert_error;
+  if (!GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP)) {
+    /* and convert the samples */
+    if (!(res = audio_convert_convert (&this->ctx, src, dst,
+                samples, gst_buffer_is_writable (inbuf))))
+      goto convert_error;
+  }
+  else {
+    /* FIXME: need to handle the case where noiseshaping is used
+     * what about the gap-flag then?
+    if (G_UNLIKELY(ctx->ns != NOISE_SHAPING_NONE)) {
+      ctx->quantize (ctx, src, dst, samples);
+    }
+    else {
+    */
+    memset (dst, 0, outsize);
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_GAP);
+  }
 
   GST_BUFFER_SIZE (outbuf) = outsize;