Changeset 2501:b7965573ae61 in roaraudio


Ignore:
Timestamp:
08/24/09 14:52:12 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

start of roar_conv_bits_24to32()

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • include/libroardsp/convert.h

    r2386 r2501  
    4949int roar_conv_bits_24to8  (void * out, void * in, int samples); 
    5050int roar_conv_bits_24to16 (void * out, void * in, int samples); 
    51 int roar_conv_bits_24to32 (void * out, void * in, int samples); 
     51int roar_conv_bits_24to32 (void * out, void * in, int samples);  // yes 
    5252int roar_conv_bits_32to8  (void * out, void * in, int samples);  // yes 
    5353int roar_conv_bits_32to16 (void * out, void * in, int samples);  // yes 
  • libroardsp/convert.c

    r2388 r2501  
    5454  case 0x21: return roar_conv_bits_16to8( out, in, samples); 
    5555  case 0x24: return roar_conv_bits_16to32(out, in, samples); 
     56  case 0x34: return roar_conv_bits_24to32(out, in, samples); 
    5657  case 0x41: return roar_conv_bits_32to8( out, in, samples); 
    5758  case 0x42: return roar_conv_bits_32to16(out, in, samples); 
     
    107108  op[i] = (int32_t) ip[i] << 16; 
    108109 
     110 return 0; 
     111} 
     112 
     113int roar_conv_bits_24to32 (void * out, void * in, int samples) { 
     114 uint8_t * ip = (uint8_t*)in; 
     115 int32_t * op = (int32_t*)out; 
     116 int i; 
     117 union { 
     118  int32_t i; 
     119  uint8_t c[4]; 
     120 } t; 
     121 
     122 ROAR_DBG("roar_conv_bits_24to32(out=%p, in=%p, samples=%i) = ?", out, in, samples); 
     123 
     124#if (BYTE_ORDER == BIG_ENDIAN) || (BYTE_ORDER == LITTLE_ENDIAN) 
     125 t.i = 0; 
     126#else 
     127  ROAR_DBG("roar_conv_bits_24to32(out=%p, in=%p, samples=%i) = -1", out, in, samples); 
     128  return -1; 
     129#endif 
     130 
     131 samples--; 
     132 ip += 3 * samples; 
     133 
     134 for (i = samples; i >= 0; i--) { 
     135#if BYTE_ORDER == BIG_ENDIAN 
     136  t.c[0] = *(ip--); 
     137  t.c[1] = *(ip--); 
     138  t.c[2] = *(ip--); 
     139#elif BYTE_ORDER == LITTLE_ENDIAN 
     140  t.c[2] = *(ip--); 
     141  t.c[3] = *(ip--); 
     142  t.c[1] = *(ip--); 
     143#endif 
     144  ROAR_DBG("roar_conv_bits_24to32(*): i=%i, t.i=0x%.8X", i, t.i); 
     145  op[i] = t.i; 
     146 } 
     147 
     148 ROAR_DBG("roar_conv_bits_24to32(out=%p, in=%p, samples=%i) = 0", out, in, samples); 
    109149 return 0; 
    110150} 
Note: See TracChangeset for help on using the changeset viewer.