Changeset 845:21845f9f414c in roaraudio
- Timestamp:
- 09/28/08 03:01:57 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/convert.c
r690 r845 36 36 37 37 int roar_conv_bits (void * out, void * in, int samples, int from, int to) { 38 int format; 39 38 40 if ( from == to ) { 39 41 if ( in == out ) … … 44 46 } 45 47 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 } 51 61 52 62 return -1; … … 64 74 } 65 75 76 int 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 66 87 int roar_conv_bits_16to8 (void * out, void * in, int samples) { 67 88 int16_t * ip = (int16_t*)in; … … 77 98 } 78 99 100 int 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 111 int 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 122 int 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 } 79 132 80 133 int 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.