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 { /* need to handle the case where noiseshaping is used and has not yet * converged */ if (G_UNLIKELY((this->ctx.ns != NOISE_SHAPING_NONE) && (!gst_audio_quantize_is_noise_shaping_null (&this->ctx)))) { if (!(res = audio_convert_convert (&this->ctx, src, dst, samples, gst_buffer_is_writable (inbuf)))) goto convert_error; GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_GAP); } else { if(G_UNLIKELY(this->ctx.out.is_int && !this->ctx.out.sign)) { gint tempsize = samples * 4 * this->ctx.out.channels; /* we need signed 32 bit integers as a source */ if (tempsize > this->ctx.tmpbufsize) { this->ctx.tmpbuf = g_realloc (this->ctx.tmpbuf, tempsize); this->ctx.tmpbufsize = tempsize; } memset (this->ctx.tmpbuf, 0, tempsize); this->ctx.pack (this->ctx.tmpbuf, dst, this->ctx.out_scale, samples * this->ctx.out.channels); } else { memset (dst, 0, outsize); } } }