Changeset 2534

Show
Ignore:
Timestamp:
05/25/99 01:49:13 (15 years ago)
Author:
ucacoxh
Message:

- Fixes for -optimize.

Location:
rat/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • rat/trunk/sndfile_au.c

    r2531 r2534  
    185185sun_write_audio(FILE *fp, char *state, sample *buf, int samples) 
    186186{ 
    187         int i, bytes_per_sample; 
     187        int i, bytes_per_sample = 1; 
    188188        sun_audio_filehdr *saf; 
    189         sample *l16buf; 
    190         u_char *outbuf; 
     189        u_char *outbuf = NULL; 
    191190 
    192191        saf = (sun_audio_filehdr*)state; 
     
    194193        switch(saf->encoding) { 
    195194        case SUN_AUDIO_FILE_ENCODING_LINEAR_16: 
    196                 l16buf = (sample*)block_alloc(sizeof(sample)*samples); 
    197195                bytes_per_sample = (int)sizeof(sample); 
    198196                if (ntohs(1) != 1) { 
     197                        sample *l16buf; 
     198                        l16buf = (sample*)block_alloc(sizeof(sample)*samples); 
    199199                        /* If we are on a little endian machine fix samples before 
    200200                         * writing them out. 
     
    204204                        } 
    205205                        outbuf = (u_char*)l16buf; 
    206                 } 
     206                } else { 
     207                        outbuf = (u_char*)buf; 
     208                } 
     209                 
    207210                break; 
    208211        case SUN_AUDIO_FILE_ENCODING_ALAW: 
     
    223226 
    224227        fwrite(outbuf, bytes_per_sample, samples, fp); 
    225         xfree(outbuf); 
     228 
     229        /* outbuf only equals buf if no sample type conversion was done */ 
     230        if (outbuf != (u_char*)buf) { 
     231                xfree(outbuf); 
     232        } 
    226233 
    227234        return TRUE; 
  • rat/trunk/sndfile_wav.c

    r2531 r2534  
    331331riff_write_audio(FILE *fp, char *state, sample *buf, int samples) 
    332332{ 
    333         int i, bytes_per_sample; 
     333        int i, bytes_per_sample = 1; 
    334334        riff_state *rs = (riff_state*)state; 
    335         sample *l16buf; 
    336         u_char *outbuf; 
     335        u_char *outbuf = NULL; 
    337336 
    338337        switch(rs->wf.wFormatTag) { 
    339338        case MS_AUDIO_FILE_ENCODING_L16: 
    340339                bytes_per_sample = sizeof(sample); 
    341                 l16buf = (sample*)block_alloc(samples * sizeof(sample)); 
    342340                if (ntohs(1) == 1) {  
     341                        sample *l16buf; 
     342                        l16buf = (sample*)block_alloc(samples * sizeof(sample)); 
     343 
    343344                        /* If we are on a big endian machine fix samples before 
    344345                         * writing them out.   
     
    347348                                l16buf[i] = (u_int16)btols((u_int16)buf[i]); 
    348349                        } 
    349                 } 
    350                 outbuf = (u_char*)l16buf; 
     350                        outbuf = (u_char*)l16buf; 
     351                } else { 
     352                        outbuf  = (u_char*)buf; 
     353                } 
     354 
    351355                break; 
    352356        case MS_AUDIO_FILE_ENCODING_ALAW: 
     
    368372        fwrite(outbuf, bytes_per_sample, samples, fp); 
    369373        rs->cbUsed += bytes_per_sample * samples; 
    370         block_free(outbuf, bytes_per_sample * samples); 
     374 
     375        /* outbuf only equals buf if no sample conversion done */ 
     376        if (outbuf != (u_char*)buf) { 
     377                block_free(outbuf, bytes_per_sample * samples); 
     378        } 
    371379 
    372380        return TRUE;