diff options
Diffstat (limited to 'apps/codecs/libwmapro')
-rw-r--r-- | apps/codecs/libwmapro/wma.h | 1 | ||||
-rw-r--r-- | apps/codecs/libwmapro/wmapro_math.h | 26 | ||||
-rw-r--r-- | apps/codecs/libwmapro/wmaprodec.c | 6 |
3 files changed, 18 insertions, 15 deletions
diff --git a/apps/codecs/libwmapro/wma.h b/apps/codecs/libwmapro/wma.h index 84abeb349b..6fa7b94724 100644 --- a/apps/codecs/libwmapro/wma.h +++ b/apps/codecs/libwmapro/wma.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "ffmpeg_put_bits.h" | 26 | #include "ffmpeg_put_bits.h" |
27 | 27 | ||
28 | #define WMAPRO_FRACT (17) | 28 | #define WMAPRO_FRACT (17) |
29 | #define WMAPRO_DSP_SAMPLE_DEPTH (WMAPRO_FRACT + 8) | ||
29 | 30 | ||
30 | /* size of blocks */ | 31 | /* size of blocks */ |
31 | #define BLOCK_MIN_BITS 7 | 32 | #define BLOCK_MIN_BITS 7 |
diff --git a/apps/codecs/libwmapro/wmapro_math.h b/apps/codecs/libwmapro/wmapro_math.h index f5cfa5f1d9..17b4829362 100644 --- a/apps/codecs/libwmapro/wmapro_math.h +++ b/apps/codecs/libwmapro/wmapro_math.h | |||
@@ -223,21 +223,22 @@ static inline void vector_fixmul_window(int32_t *dst, const int32_t *src0, | |||
223 | asm volatile ( \ | 223 | asm volatile ( \ |
224 | "ldmia %[src]!, {r1-r4} \n\t" \ | 224 | "ldmia %[src]!, {r1-r4} \n\t" \ |
225 | "smull r0, r5, r1, %[mul] \n\t" \ | 225 | "smull r0, r5, r1, %[mul] \n\t" \ |
226 | "mov r0, r0, lsr #24 \n\t" \ | 226 | "mov r0, r0, lsr #16 \n\t" \ |
227 | "orr r0, r0, r5, lsl #8 \n\t" \ | 227 | "orr r0, r0, r5, lsl #16\n\t" \ |
228 | "smull r1, r5, r2, %[mul] \n\t" \ | 228 | "smull r1, r5, r2, %[mul] \n\t" \ |
229 | "mov r1, r1, lsr #24 \n\t" \ | 229 | "mov r1, r1, lsr #16 \n\t" \ |
230 | "orr r1, r1, r5, lsl #8 \n\t" \ | 230 | "orr r1, r1, r5, lsl #16\n\t" \ |
231 | "smull r2, r5, r3, %[mul] \n\t" \ | 231 | "smull r2, r5, r3, %[mul] \n\t" \ |
232 | "mov r2, r2, lsr #24 \n\t" \ | 232 | "mov r2, r2, lsr #16 \n\t" \ |
233 | "orr r2, r2, r5, lsl #8 \n\t" \ | 233 | "orr r2, r2, r5, lsl #16\n\t" \ |
234 | "smull r3, r5, r4, %[mul] \n\t" \ | 234 | "smull r3, r5, r4, %[mul] \n\t" \ |
235 | "mov r3, r3, lsr #24 \n\t" \ | 235 | "mov r3, r3, lsr #16 \n\t" \ |
236 | "orr r3, r3, r5, lsl #8 \n\t" \ | 236 | "orr r3, r3, r5, lsl #16\n\t" \ |
237 | "stmia %[dst]!, {r0-r3} \n" \ | 237 | "stmia %[dst]!, {r0-r3} \n" \ |
238 | : [dst]"+r"(dst), [src]"+r"(src) \ | 238 | : [dst]"+r"(dst), [src]"+r"(src) \ |
239 | : [mul]"r"(mul) \ | 239 | : [mul]"r"(mul) \ |
240 | : "r0", "r1", "r2", "r3", "r4", "r5", "memory"); | 240 | : "r0", "r1", "r2", "r3", "r4", "r5", "memory"); |
241 | /* Disable ColdFire version until a correct version is written | ||
241 | #elif defined (CPU_COLDFIRE) | 242 | #elif defined (CPU_COLDFIRE) |
242 | #define VECT_MUL_SCALAR_KERNEL(dst, src, mul) \ | 243 | #define VECT_MUL_SCALAR_KERNEL(dst, src, mul) \ |
243 | int32_t tmp; \ | 244 | int32_t tmp; \ |
@@ -270,12 +271,13 @@ static inline void vector_fixmul_window(int32_t *dst, const int32_t *src0, | |||
270 | [tmp] "=d" (tmp) \ | 271 | [tmp] "=d" (tmp) \ |
271 | : [mul] "r" (mul) \ | 272 | : [mul] "r" (mul) \ |
272 | : "d0", "d1", "d2", "d3", "memory", "cc"); | 273 | : "d0", "d1", "d2", "d3", "memory", "cc"); |
274 | */ | ||
273 | #else | 275 | #else |
274 | #define VECT_MUL_SCALAR_KERNEL(dst, src, mul) \ | 276 | #define VECT_MUL_SCALAR_KERNEL(dst, src, mul) \ |
275 | dst[i ] = fixmul24(src[i ], mul); \ | 277 | dst[i ] = fixmul16(src[i ], mul); \ |
276 | dst[i+1] = fixmul24(src[i+1], mul); \ | 278 | dst[i+1] = fixmul16(src[i+1], mul); \ |
277 | dst[i+2] = fixmul24(src[i+2], mul); \ | 279 | dst[i+2] = fixmul16(src[i+2], mul); \ |
278 | dst[i+3] = fixmul24(src[i+3], mul); | 280 | dst[i+3] = fixmul16(src[i+3], mul); |
279 | #endif /* CPU_ARM, CPU_COLDFIRE */ | 281 | #endif /* CPU_ARM, CPU_COLDFIRE */ |
280 | 282 | ||
281 | static inline void vector_fixmul_scalar(int32_t *dst, const int32_t *src, | 283 | static inline void vector_fixmul_scalar(int32_t *dst, const int32_t *src, |
diff --git a/apps/codecs/libwmapro/wmaprodec.c b/apps/codecs/libwmapro/wmaprodec.c index e5a5fd94eb..018ea7c304 100644 --- a/apps/codecs/libwmapro/wmaprodec.c +++ b/apps/codecs/libwmapro/wmaprodec.c | |||
@@ -125,7 +125,7 @@ | |||
125 | #define FFMAX(a,b) ((a) > (b) ? (a) : (b)) | 125 | #define FFMAX(a,b) ((a) > (b) ? (a) : (b)) |
126 | 126 | ||
127 | /* Define some multiple used constants */ | 127 | /* Define some multiple used constants */ |
128 | #define SQRT2_FRACT24 0x016A09E6 /* 0x016A09E6 = (sqrt(2)*(1<<24)) */ | 128 | #define SQRT2_FRACT16 0x00016A0A /* 0x00016A0A = (sqrt(2)*(1<<16)) */ |
129 | #define COS_PI4_FRACT16 0x0000B505 /* 0x0000B505 = (cos(pi/4)<<16) */ | 129 | #define COS_PI4_FRACT16 0x0000B505 /* 0x0000B505 = (cos(pi/4)<<16) */ |
130 | #define ONE_FRACT16 0x00010000 /* 0x00010000 = (1<<16) */ | 130 | #define ONE_FRACT16 0x00010000 /* 0x00010000 = (1<<16) */ |
131 | 131 | ||
@@ -1058,10 +1058,10 @@ static void inverse_channel_transform(WMAProDecodeCtx *s) | |||
1058 | int len = FFMIN(sfb[1], s->subframe_len) - sfb[0]; | 1058 | int len = FFMIN(sfb[1], s->subframe_len) - sfb[0]; |
1059 | vector_fixmul_scalar(ch_data[0] + sfb[0], | 1059 | vector_fixmul_scalar(ch_data[0] + sfb[0], |
1060 | ch_data[0] + sfb[0], | 1060 | ch_data[0] + sfb[0], |
1061 | SQRT2_FRACT24, len); | 1061 | SQRT2_FRACT16, len); |
1062 | vector_fixmul_scalar(ch_data[1] + sfb[0], | 1062 | vector_fixmul_scalar(ch_data[1] + sfb[0], |
1063 | ch_data[1] + sfb[0], | 1063 | ch_data[1] + sfb[0], |
1064 | SQRT2_FRACT24, len); | 1064 | SQRT2_FRACT16, len); |
1065 | 1065 | ||
1066 | } | 1066 | } |
1067 | } | 1067 | } |