aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/mISDN/dsp_audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/mISDN/dsp_audio.c')
-rw-r--r--drivers/isdn/mISDN/dsp_audio.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/drivers/isdn/mISDN/dsp_audio.c b/drivers/isdn/mISDN/dsp_audio.c
index 06022952a437..bbef98e7a16e 100644
--- a/drivers/isdn/mISDN/dsp_audio.c
+++ b/drivers/isdn/mISDN/dsp_audio.c
@@ -13,6 +13,7 @@
13#include <linux/mISDNif.h> 13#include <linux/mISDNif.h>
14#include <linux/mISDNdsp.h> 14#include <linux/mISDNdsp.h>
15#include <linux/export.h> 15#include <linux/export.h>
16#include <linux/bitrev.h>
16#include "core.h" 17#include "core.h"
17#include "dsp.h" 18#include "dsp.h"
18 19
@@ -137,27 +138,14 @@ static unsigned char linear2ulaw(short sample)
137 return ulawbyte; 138 return ulawbyte;
138} 139}
139 140
140static int reverse_bits(int i)
141{
142 int z, j;
143 z = 0;
144
145 for (j = 0; j < 8; j++) {
146 if ((i & (1 << j)) != 0)
147 z |= 1 << (7 - j);
148 }
149 return z;
150}
151
152
153void dsp_audio_generate_law_tables(void) 141void dsp_audio_generate_law_tables(void)
154{ 142{
155 int i; 143 int i;
156 for (i = 0; i < 256; i++) 144 for (i = 0; i < 256; i++)
157 dsp_audio_alaw_to_s32[i] = alaw2linear(reverse_bits(i)); 145 dsp_audio_alaw_to_s32[i] = alaw2linear(bitrev8((u8)i));
158 146
159 for (i = 0; i < 256; i++) 147 for (i = 0; i < 256; i++)
160 dsp_audio_ulaw_to_s32[i] = ulaw2linear(reverse_bits(i)); 148 dsp_audio_ulaw_to_s32[i] = ulaw2linear(bitrev8((u8)i));
161 149
162 for (i = 0; i < 256; i++) { 150 for (i = 0; i < 256; i++) {
163 dsp_audio_alaw_to_ulaw[i] = 151 dsp_audio_alaw_to_ulaw[i] =
@@ -176,13 +164,13 @@ dsp_audio_generate_s2law_table(void)
176 /* generating ulaw-table */ 164 /* generating ulaw-table */
177 for (i = -32768; i < 32768; i++) { 165 for (i = -32768; i < 32768; i++) {
178 dsp_audio_s16_to_law[i & 0xffff] = 166 dsp_audio_s16_to_law[i & 0xffff] =
179 reverse_bits(linear2ulaw(i)); 167 bitrev8(linear2ulaw(i));
180 } 168 }
181 } else { 169 } else {
182 /* generating alaw-table */ 170 /* generating alaw-table */
183 for (i = -32768; i < 32768; i++) { 171 for (i = -32768; i < 32768; i++) {
184 dsp_audio_s16_to_law[i & 0xffff] = 172 dsp_audio_s16_to_law[i & 0xffff] =
185 reverse_bits(linear2alaw(i)); 173 bitrev8(linear2alaw(i));
186 } 174 }
187 } 175 }
188} 176}