summaryrefslogtreecommitdiff
path: root/ffmpeg/libavcodec/ac3dsp.c
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-29 12:19:38 +0000
commitf7813a5324be39d13ab536c245d15dfc602a7849 (patch)
treefad99148b88823d34a5df2f0a25881a002eb291b /ffmpeg/libavcodec/ac3dsp.c
parentb7a5a477b8ff4d4e3028b9dfb9a9df0a41463f92 (diff)
basic type mechanism working
Diffstat (limited to 'ffmpeg/libavcodec/ac3dsp.c')
-rw-r--r--ffmpeg/libavcodec/ac3dsp.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/ffmpeg/libavcodec/ac3dsp.c b/ffmpeg/libavcodec/ac3dsp.c
index 6df3a68..feda6dd 100644
--- a/ffmpeg/libavcodec/ac3dsp.c
+++ b/ffmpeg/libavcodec/ac3dsp.c
@@ -239,6 +239,19 @@ static void ac3_downmix_c(float **samples, float (*matrix)[2],
}
}
+static void apply_window_int16_c(int16_t *output, const int16_t *input,
+ const int16_t *window, unsigned int len)
+{
+ int i;
+ int len2 = len >> 1;
+
+ for (i = 0; i < len2; i++) {
+ int16_t w = window[i];
+ output[i] = (MUL16(input[i], w) + (1 << 14)) >> 15;
+ output[len-i-1] = (MUL16(input[len-i-1], w) + (1 << 14)) >> 15;
+ }
+}
+
av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
{
c->ac3_exponent_min = ac3_exponent_min_c;
@@ -253,6 +266,7 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
c->sum_square_butterfly_int32 = ac3_sum_square_butterfly_int32_c;
c->sum_square_butterfly_float = ac3_sum_square_butterfly_float_c;
c->downmix = ac3_downmix_c;
+ c->apply_window_int16 = apply_window_int16_c;
if (ARCH_ARM)
ff_ac3dsp_init_arm(c, bit_exact);