Changeset 2391:364c3dbd7cf6 in roaraudio
- Timestamp:
- 08/17/09 02:27:41 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/remove.c
r2157 r2391 50 50 51 51 int roar_remove_8 (int8_t * inout, int8_t * subs, int samples, struct roar_remove_state * state) { 52 return -1; 52 int i; 53 register int_least16_t s; 54 register int_least16_t peak; 55 56 if ( state == NULL ) { 57 for (i = 0; i < samples; i++) { 58 s = inout[i]; 59 s -= subs[i]; 60 inout[i] = s; 61 } 62 } else { 63 peak = 127; 64 for (i = 0; i < samples; i++) { 65 s = inout[i]; 66 s -= subs[i]; 67 s = s < 0 ? -s : s; // we true 32 bit, not int operation here 68 if ( s > peak ) 69 peak = s; 70 } 71 72 for (i = 0; i < samples; i++) { 73 s = -subs[i]; 74 s *= 127; 75 s /= peak; 76 s += inout[i]; 77 inout[i] = s; 78 } 79 } 80 81 return 0; 53 82 } 83 54 84 int roar_remove_16 (int16_t * inout, int16_t * subs, int samples, struct roar_remove_state * state) { 55 85 int i; … … 84 114 return 0; 85 115 } 116 86 117 int roar_remove_32 (int32_t * inout, int32_t * subs, int samples, struct roar_remove_state * state) { 87 return -1; 118 int i; 119 register int64_t s; 120 register int64_t peak; 121 122 if ( state == NULL ) { 123 for (i = 0; i < samples; i++) { 124 s = inout[i]; 125 s -= subs[i]; 126 inout[i] = s; 127 } 128 } else { 129 peak = 4294967295UL; 130 for (i = 0; i < samples; i++) { 131 s = inout[i]; 132 s -= subs[i]; 133 s = s < 0 ? -s : s; // we true 32 bit, not int operation here 134 if ( s > peak ) 135 peak = s; 136 } 137 138 for (i = 0; i < samples; i++) { 139 s = -subs[i]; 140 s *= 4294967295UL; 141 s /= peak; 142 s += inout[i]; 143 inout[i] = s; 144 } 145 } 146 147 return 0; 88 148 } 89 149
Note: See TracChangeset
for help on using the changeset viewer.