aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/mpegaudiodsp.h
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-05-16 16:52:01 +0100
committerMans Rullgard <mans@mansr.com>2011-05-19 12:25:34 +0100
commitc4f5c2d6f4ffa3f4b56555059000208a6ba47b55 (patch)
treef46c4f0d94a1e073ac0dae24fab4d1d972bcb2c6 /libavcodec/mpegaudiodsp.h
parentea91e77127229015d23a046f1797d3fc6a33e54d (diff)
downloadffmpeg-c4f5c2d6f4ffa3f4b56555059000208a6ba47b55.tar.gz
Move some mpegaudio functions to new mpegaudiodsp subsystem
This separation allows these functions to be used in a cleaner fashion from other codecs (e.g. qdm2) and simplifies creating optimised versions of them. Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavcodec/mpegaudiodsp.h')
-rw-r--r--libavcodec/mpegaudiodsp.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/libavcodec/mpegaudiodsp.h b/libavcodec/mpegaudiodsp.h
new file mode 100644
index 0000000000..7b05b68eee
--- /dev/null
+++ b/libavcodec/mpegaudiodsp.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_MPEGAUDIODSP_H
+#define AVCODEC_MPEGAUDIODSP_H
+
+#include <stdint.h>
+
+typedef struct MPADSPContext {
+ void (*apply_window_float)(float *synth_buf, float *window,
+ int *dither_state, float *samples, int incr);
+ void (*apply_window_fixed)(int32_t *synth_buf, int32_t *window,
+ int *dither_state, int16_t *samples, int incr);
+ void (*dct32_float)(float *dst, const float *src);
+ void (*dct32_fixed)(int *dst, const int *src);
+} MPADSPContext;
+
+void ff_mpadsp_init(MPADSPContext *s);
+
+extern int32_t ff_mpa_synth_window_fixed[];
+extern float ff_mpa_synth_window_float[];
+
+void ff_mpa_synth_filter_fixed(MPADSPContext *s,
+ int32_t *synth_buf_ptr, int *synth_buf_offset,
+ int32_t *window, int *dither_state,
+ int16_t *samples, int incr,
+ int *sb_samples);
+
+void ff_mpa_synth_filter_float(MPADSPContext *s,
+ float *synth_buf_ptr, int *synth_buf_offset,
+ float *window, int *dither_state,
+ float *samples, int incr,
+ float *sb_samples);
+
+void ff_mpadsp_init_mmx(MPADSPContext *s);
+void ff_mpadsp_init_altivec(MPADSPContext *s);
+
+void ff_mpa_synth_init_float(float *window);
+void ff_mpa_synth_init_fixed(int32_t *window);
+
+void ff_mpadsp_apply_window_float(float *synth_buf, float *window,
+ int *dither_state, float *samples,
+ int incr);
+void ff_mpadsp_apply_window_fixed(int32_t *synth_buf, int32_t *window,
+ int *dither_state, int16_t *samples,
+ int incr);
+
+#endif