Changeset 845:21845f9f414c in roaraudio


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

added roar_conv_bits_AtoB() with A,B element 8,16,32 :)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r690 r845  
    3636 
    3737int roar_conv_bits (void * out, void * in, int samples, int from, int to) { 
     38 int format; 
     39 
    3840 if ( from == to ) { 
    3941  if ( in == out ) 
     
    4446 } 
    4547 
    46  if ( from ==  8 && to == 16 ) 
    47   return roar_conv_bits_8to16(out, in, samples); 
    48  
    49  if ( from == 16 && to ==  8 ) 
    50   return roar_conv_bits_16to8(out, in, samples); 
     48 format = ((from / 8) << 4) + (to / 8); 
     49 
     50 switch (format) { 
     51  case 0x12: return roar_conv_bits_8to16(out, in, samples); 
     52  case 0x14: return roar_conv_bits_8to32(out, in, samples); 
     53  case 0x21: return roar_conv_bits_16to8(out, in, samples); 
     54  case 0x24: return roar_conv_bits_16to32(out, in, samples); 
     55  case 0x41: return roar_conv_bits_32to8(out, in, samples); 
     56  case 0x42: return roar_conv_bits_32to16(out, in, samples); 
     57  default: 
     58   errno = ENOSYS; 
     59   return -1; 
     60 } 
    5161 
    5262 return -1; 
     
    6474} 
    6575 
     76int roar_conv_bits_8to32  (void * out, void * in, int samples) { 
     77 char    * ip = (char   *)in; 
     78 int32_t * op = (int32_t*)out; 
     79 int i; 
     80 
     81 for (i = samples - 1; i >= 0; i--) 
     82  op[i] = ip[i] << 24; 
     83 
     84 return 0; 
     85} 
     86 
    6687int roar_conv_bits_16to8 (void * out, void * in, int samples) { 
    6788 int16_t * ip = (int16_t*)in; 
     
    7798} 
    7899 
     100int roar_conv_bits_16to32 (void * out, void * in, int samples) { 
     101 int16_t * ip = (int16_t*)in; 
     102 int32_t * op = (int32_t*)out; 
     103 int i; 
     104 
     105 for (i = samples - 1; i >= 0; i--) 
     106  op[i] = ip[i] << 16; 
     107 
     108 return 0; 
     109} 
     110 
     111int roar_conv_bits_32to8 (void * out, void * in, int samples) { 
     112 int32_t * ip = (int32_t*)in; 
     113 char    * op = (char   *)out; 
     114 int i; 
     115 
     116 for (i = 0; i < samples; i++) 
     117  op[i] = ip[i] >> 24; 
     118 
     119 return 0; 
     120} 
     121 
     122int roar_conv_bits_32to16 (void * out, void * in, int samples) { 
     123 int32_t * ip = (int32_t*)in; 
     124 int16_t * op = (int16_t*)out; 
     125 int i; 
     126 
     127 for (i = 0; i < samples; i++) 
     128  op[i] = ip[i] >> 16; 
     129 
     130 return 0; 
     131} 
    79132 
    80133int roar_conv_chans (void * out, void * in, int samples, int from, int to, int bits) { 
Note: See TracChangeset for help on using the changeset viewer.