Changeset 846:7ae73a8f5a4a in roaraudio


Ignore:
Timestamp:
09/28/08 03:10:49 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added roar_conv_codec_u2sA()/_s2uA() for A element 8, 16, 32 :)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r845 r846  
    252252 if ( ins != outs ) { 
    253253  if ( ins && !outs ) { 
    254    if ( bits == 8 ) { 
    255     roar_conv_codec_s2u8(out, in, samples); 
    256    } else if ( bits == 16 ) { 
    257     roar_conv_codec_s2u16(out, in, samples); 
    258    } else { 
    259     return -1; 
     254   switch (bits) { 
     255    case  8: roar_conv_codec_s2u8(out, in, samples);  break; 
     256    case 16: roar_conv_codec_s2u16(out, in, samples); break; 
     257    case 32: roar_conv_codec_s2u16(out, in, samples); break; 
     258    default: 
     259     errno = ENOSYS; 
     260     return -1; 
     261   } 
     262  } else if ( !ins && outs ) { 
     263   switch (bits) { 
     264    case  8: roar_conv_codec_u2s8(out, in, samples);  break; 
     265    case 16: roar_conv_codec_u2s16(out, in, samples); break; 
     266    case 32: roar_conv_codec_u2s16(out, in, samples); break; 
     267    default: 
     268     errno = ENOSYS; 
     269     return -1; 
    260270   } 
    261271  } else { 
     
    285295 for(i = 0; i < samples; i++) 
    286296  op[i] = ip[i] + 32768; 
     297 
     298 return 0; 
     299} 
     300 
     301int roar_conv_codec_s2u32 (void * out, void * in, int samples) { 
     302 int32_t  * ip = in; 
     303 uint32_t * op = out; 
     304 int i; 
     305 
     306 for(i = 0; i < samples; i++) 
     307  op[i] = ip[i] + 2147483648U; 
     308 
     309 return 0; 
     310} 
     311 
     312int roar_conv_codec_u2s8 (void * out, void * in, int samples) { 
     313 unsigned char * ip = in; 
     314          char * op = out; 
     315 int i; 
     316 
     317 for(i = 0; i < samples; i++) 
     318  op[i] = ip[i] - 128; 
     319 
     320 return 0; 
     321} 
     322 
     323int roar_conv_codec_u2s16 (void * out, void * in, int samples) { 
     324 uint16_t  * ip = in; 
     325 int16_t   * op = out; 
     326 int i; 
     327 
     328 for(i = 0; i < samples; i++) 
     329  op[i] = ip[i] - 32768; 
     330 
     331 return 0; 
     332} 
     333 
     334int roar_conv_codec_u2s32 (void * out, void * in, int samples) { 
     335 uint32_t  * ip = in; 
     336 int32_t   * op = out; 
     337 int i; 
     338 
     339 for(i = 0; i < samples; i++) 
     340  op[i] = ip[i] - 2147483648U; 
    287341 
    288342 return 0; 
Note: See TracChangeset for help on using the changeset viewer.