diff options
| author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-03 23:40:46 +0000 | 
|---|---|---|
| committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-03 23:40:46 +0000 | 
| commit | 076adfd806b9989aae0499c2de193e89282df9e5 (patch) | |
| tree | 22f5f27d46cb7c94b32e5502bc6398dd5c4621dc /src | |
| parent | 4d7006f37ee1aaae8cf00ef0739a2d8913e462b7 (diff) | |
| download | xine-lib-076adfd806b9989aae0499c2de193e89282df9e5.tar.gz xine-lib-076adfd806b9989aae0499c2de193e89282df9e5.tar.bz2 | |
that should work for wav files
CVS patchset: 3768
CVS date: 2003/01/03 23:40:46
Diffstat (limited to 'src')
| -rw-r--r-- | src/post/goom/xine_goom.c | 41 | 
1 files changed, 25 insertions, 16 deletions
| diff --git a/src/post/goom/xine_goom.c b/src/post/goom/xine_goom.c index 80fc46f52..155cdb61b 100644 --- a/src/post/goom/xine_goom.c +++ b/src/post/goom/xine_goom.c @@ -17,7 +17,7 @@   * along with this program; if not, write to the Free Software   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA   * - * $Id: xine_goom.c,v 1.16 2003/01/03 22:38:25 miguelfreitas Exp $ + * $Id: xine_goom.c,v 1.17 2003/01/03 23:40:46 miguelfreitas Exp $   *   * GOOM post plugin.   * @@ -70,6 +70,7 @@ struct post_plugin_goom_s {    post_class_goom_t *class;   +  int data_idx;    gint16 data [2][512];    int bits; @@ -347,6 +348,7 @@ static int goom_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream,    this->samples_per_frame = rate / this->class->fps;    this->sample_rate = rate;     this->stream = stream; +  this->data_idx = 0;    init_yuv_planes(&this->yuv, this->class->width, this->class->height);    return port->original_port->open(port->original_port, stream, bits, rate, mode ); @@ -379,24 +381,31 @@ static void goom_port_put_buffer (xine_audio_port_t *port_gen,    this->sample_counter += buf->num_frames; -  if( this->sample_counter >= this->samples_per_frame && -      buf->num_frames >= 512 ) { +  j = (this->channels >= 2) ? 1 : 0; +         +  if( this->bits == 8 ) {         +    data8 = (int8_t *)buf->mem; +    for( i = 0; i < buf->num_frames && this->data_idx < 512;  +         i++, this->data_idx++, data8 += this->channels ) { +      this->data[0][this->data_idx] = (int16_t)data8[0] << 8; +      this->data[1][this->data_idx] = (int16_t)data8[j] << 8; +    } +  } else {      data = buf->mem; -    data8 = (int8_t *)buf->mem; -    j = (this->channels >= 2) ? 1 : 0; -         -    if( this->bits == 8 ) {         -      for( i = 0; i < 512; i++, data8 += this->channels ) { -        this->data[0][i] = (int16_t)data8[0] << 8; -        this->data[1][i] = (int16_t)data8[j] << 8; -      } -    } else { -      for( i = 0; i < 512; i++, data += this->channels ) { -        this->data[0][i] = data[0]; -        this->data[1][i] = data[j]; -      } +     +    for( i = 0; i < buf->num_frames && this->data_idx < 512;  +         i++, this->data_idx++, data += this->channels ) { +      this->data[0][this->data_idx] = data[0]; +      this->data[1][this->data_idx] = data[j];      } +  } +   +   +  if( this->sample_counter >= this->samples_per_frame && +      this->data_idx == 512 ) { +     +    this->data_idx = 0;      goom_frame = (uint8_t *)goom_update (this->data, 0, 0, NULL, NULL); | 
