mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-05 14:16:06 +00:00
gst/audioconvert/gstchannelmix.c: walk the samples backwards if out_channels > in_channels so we don't overwrite data
Original commit message from CVS: * gst/audioconvert/gstchannelmix.c: (gst_audio_convert_mix): walk the samples backwards if out_channels > in_channels so we don't overwrite data
This commit is contained in:
parent
4fdf8d5b16
commit
110fd90222
|
@ -1,3 +1,9 @@
|
||||||
|
2004-11-28 Benjamin Otte <otte@gnome.org>
|
||||||
|
|
||||||
|
* gst/audioconvert/gstchannelmix.c: (gst_audio_convert_mix):
|
||||||
|
walk the samples backwards if out_channels > in_channels so we don't
|
||||||
|
overwrite data
|
||||||
|
|
||||||
2004-11-28 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
2004-11-28 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||||
|
|
||||||
* gst/audioconvert/Makefile.am:
|
* gst/audioconvert/Makefile.am:
|
||||||
|
|
|
@ -524,16 +524,20 @@ gst_audio_convert_passthrough (GstAudioConvert * this)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* IMPORTANT: out_data == in_data is possible, make sure to not overwrite data
|
||||||
|
* you might need later on! */
|
||||||
void
|
void
|
||||||
gst_audio_convert_mix (GstAudioConvert * this,
|
gst_audio_convert_mix (GstAudioConvert * this,
|
||||||
gint32 * in_data, gint32 * out_data, gint samples)
|
gint32 * in_data, gint32 * out_data, gint samples)
|
||||||
{
|
{
|
||||||
gint in, out, n;
|
gint in, out, n;
|
||||||
gint64 res;
|
gint64 res;
|
||||||
|
gboolean backwards = this->srccaps.channels > this->sinkcaps.channels;
|
||||||
|
|
||||||
/* FIXME: use liboil here? */
|
/* FIXME: use liboil here? */
|
||||||
for (out = 0; out < this->srccaps.channels; out++) {
|
for (n = (backwards ? samples - 1 : 0); n < samples && n >= 0;
|
||||||
for (n = 0; n < samples; n++) {
|
backwards ? n-- : n++) {
|
||||||
|
for (out = 0; out < this->srccaps.channels; out++) {
|
||||||
/* convert */
|
/* convert */
|
||||||
res = 0;
|
res = 0;
|
||||||
for (in = 0; in < this->sinkcaps.channels; in++) {
|
for (in = 0; in < this->sinkcaps.channels; in++) {
|
||||||
|
|
Loading…
Reference in a new issue