Changeset 2501:b7965573ae61 in roaraudio for libroardsp
- Timestamp:
- 08/24/09 14:52:12 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/convert.c
r2388 r2501 54 54 case 0x21: return roar_conv_bits_16to8( out, in, samples); 55 55 case 0x24: return roar_conv_bits_16to32(out, in, samples); 56 case 0x34: return roar_conv_bits_24to32(out, in, samples); 56 57 case 0x41: return roar_conv_bits_32to8( out, in, samples); 57 58 case 0x42: return roar_conv_bits_32to16(out, in, samples); … … 107 108 op[i] = (int32_t) ip[i] << 16; 108 109 110 return 0; 111 } 112 113 int 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); 109 149 return 0; 110 150 }
Note: See TracChangeset
for help on using the changeset viewer.