Changeset 61146841bf0d418232919b591b136006f2fced16

Show
Ignore:
Timestamp:
03/12/07 16:32:55 (1 year ago)
Author:
Sam Hocevar <sam@videolan.org>
git-committer:
Sam Hocevar <sam@videolan.org> 1173713575 +0000
git-parent:

[2db86f65c1e34d2c7c53473d92d7c5db98330b0d]

git-author:
Sam Hocevar <sam@videolan.org> 1173713575 +0000
Message:

* modules/audio_filter/format.c: fix audio conversion crashes and bugs.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/audio_filter/format.c

    rd3fe7f2 r6114684  
    246246    int32_t out; 
    247247 
    248     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     248    for( i = p_block->i_buffer / 4; i--; ) 
    249249    { 
    250250        if ( *p_in >= 1.0 ) out = 8388607; 
     
    273273    int16_t *p_out = (int16_t *)p_in; 
    274274 
    275     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     275    for( i = p_block->i_buffer / 4; i--; ) 
    276276    { 
    277277#if 0 
     
    301301    uint16_t *p_out = (uint16_t *)p_in; 
    302302 
    303     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     303    for( i = p_block->i_buffer / 4; i--; ) 
    304304    { 
    305305        if ( *p_in >= 1.0 ) *p_out = 65535; 
     
    321321 
    322322    p_block_out = 
    323         p_filter->pf_audio_buffer_new( p_filter, p_block->i_buffer*4/3 ); 
     323        p_filter->pf_audio_buffer_new( p_filter, p_block->i_buffer * 4 / 3 ); 
    324324    if( !p_block_out ) 
    325325    { 
     
    331331    p_out = (float *)p_block_out->p_buffer; 
    332332 
    333     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
    334     { 
     333    for( i = p_block->i_buffer / 3; i--; ) 
     334    { 
     335        /* FIXME: unaligned reads */ 
    335336#ifdef WORDS_BIGENDIAN 
    336337        *p_out = ((float)( (((int32_t)*(int16_t *)(p_in)) << 8) + p_in[2])) 
     
    359360    uint8_t *p_out = (uint8_t *)p_in; 
    360361 
    361     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     362    for( i = p_block->i_buffer / 3; i--; ) 
    362363    { 
    363364#ifdef WORDS_BIGENDIAN 
     
    394395    p_out = (float *)p_block_out->p_buffer; 
    395396 
    396     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     397    for( i = p_block->i_buffer / 2; i--; ) 
    397398    { 
    398399#if 0 
     
    424425{ 
    425426    block_t *p_block_out; 
    426     int16_t *p_in; 
     427    uint16_t *p_in; 
    427428    float *p_out; 
    428429    int i; 
     
    436437    } 
    437438 
    438     p_in = (int16_t *)p_block->p_buffer; 
     439    p_in = (uint16_t *)p_block->p_buffer; 
    439440    p_out = (float *)p_block_out->p_buffer; 
    440441 
    441     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     442    for( i = p_block->i_buffer / 2; i--; ) 
    442443    { 
    443444        *p_out++ = (float)(*p_in++ - 32768) / 32768.0; 
     
    471472    p_out = (uint8_t *)p_block_out->p_buffer; 
    472473 
    473     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     474    for( i = p_block->i_buffer / 2; i--; ) 
    474475    { 
    475476#ifdef WORDS_BIGENDIAN 
     
    500501    int8_t *p_out = (int8_t *)p_in; 
    501502 
    502     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     503    for( i = p_block->i_buffer / 2; i--; ) 
    503504        *p_out++ = (*p_in++) >> 8; 
    504505 
     
    512513    uint8_t *p_out = (uint8_t *)p_in; 
    513514 
    514     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     515    for( i = p_block->i_buffer / 2; i--; ) 
    515516        *p_out++ = ((*p_in++) + 32768) >> 8; 
    516517 
     
    524525    uint16_t *p_out = (uint16_t *)p_in; 
    525526 
    526     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     527    for( i = p_block->i_buffer / 2; i--; ) 
    527528        *p_out++ = (*p_in++) + 32768; 
    528529 
     
    536537    int8_t *p_out = (int8_t *)p_in; 
    537538 
    538     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     539    for( i = p_block->i_buffer / 2; i--; ) 
    539540        *p_out++ = ((int)(*p_in++) - 32768) >> 8; 
    540541 
     
    548549    uint8_t *p_out = (uint8_t *)p_in; 
    549550 
    550     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     551    for( i = p_block->i_buffer / 2; i--; ) 
    551552        *p_out++ = (*p_in++) >> 8; 
    552553 
     
    557558{ 
    558559    int i; 
    559     int16_t *p_in = (int16_t *)p_block->p_buffer; 
    560     uint16_t *p_out = (uint16_t *)p_in; 
    561  
    562     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     560    uint16_t *p_in = (uint16_t *)p_block->p_buffer; 
     561    int16_t *p_out = (int16_t *)p_in; 
     562 
     563    for( i = p_block->i_buffer / 2; i--; ) 
    563564        *p_out++ = (int)(*p_in++) - 32768; 
    564565 
     
    572573    uint8_t *p_out = (uint8_t *)p_in; 
    573574 
    574     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     575    for( i = p_block->i_buffer; i--; ) 
    575576        *p_out++ = ((*p_in++) + 128); 
    576577 
     
    583584    int8_t *p_out = (int8_t *)p_in; 
    584585 
    585     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     586    for( i = p_block->i_buffer; i--; ) 
    586587        *p_out++ = ((*p_in++) - 128); 
    587588 
     
    608609    p_out = (uint16_t *)p_block_out->p_buffer; 
    609610 
    610     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     611    for( i = p_block->i_buffer; i--; ) 
    611612        *p_out++ = ((*p_in++) + 128) << 8; 
    612613 
     
    639640    p_out = (int16_t *)p_block_out->p_buffer; 
    640641 
    641     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     642    for( i = p_block->i_buffer; i--; ) 
    642643        *p_out++ = ((*p_in++) - 128) << 8; 
    643644 
     
    671672    p_out = (int16_t *)p_block_out->p_buffer; 
    672673 
    673     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     674    for( i = p_block->i_buffer; i--; ) 
    674675        *p_out++ = (*p_in++) << 8; 
    675676 
     
    702703    p_out = (uint16_t *)p_block_out->p_buffer; 
    703704 
    704     for( i = p_block->i_buffer*8/p_filter->fmt_in.audio.i_bitspersample; i--; ) 
     705    for( i = p_block->i_buffer; i--; ) 
    705706        *p_out++ = (*p_in++) << 8; 
    706707