summaryrefslogtreecommitdiff
path: root/libavcodec/arm
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-10-01 02:54:46 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-01 02:54:46 +0200
commitef74ab20c255abf49b856c15f812cc9ea3fec061 (patch)
tree8d80c8ff7272908dede2ef2d90b4bac460f3748d /libavcodec/arm
parent5ca5d432e028ffdd4067b87aed6702168c3207b6 (diff)
parent08bd22a61b820160bff5f98cd51d2e0135d02e00 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: (34 commits) dpcm: return error if packet is too small dpcm: use smaller data types for static tables dpcm: use sol_table_16 directly instead of through the DPCMContext. dpcm: replace short with int16_t dpcm: check to make sure channels is 1 or 2. dpcm: misc pretty-printing dpcm: remove unnecessary variable by using bytestream functions. dpcm: move codec-specific variable declarations to their corresponding decoding blocks. dpcm: consistently use the variable name 'n' for the next input byte. dpcm: output AV_SAMPLE_FMT_U8 for Sol DPCM subcodecs 1 and 2. dpcm: calculate and check actual output data size prior to decoding. dpcm: factor out the stereo flag calculation dpcm: cosmetics: rename channel_number to ch avserver: Fix a bug where the socket is IPv4, but IPv6 is autoselected for the loopback address. lavf: Avoid using av_malloc(0) in av_dump_format dxva2_h264: pass the correct 8x8 scaling lists dca: NEON optimised high freq VQ decoding avcodec: reject audio packets with NULL data and non-zero size dxva: Add ability to enable workaround for older ATI cards latmenc: Set latmBufferFullness to largest value to indicate it is not used ... Conflicts: libavcodec/dxva2_h264.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/arm')
-rw-r--r--libavcodec/arm/dca.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/libavcodec/arm/dca.h b/libavcodec/arm/dca.h
new file mode 100644
index 0000000000..c4c024a36a
--- /dev/null
+++ b/libavcodec/arm/dca.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2011 Mans Rullgard <mans@mansr.com>
+ *
+ * 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_ARM_DCA_H
+#define AVCODEC_ARM_DCA_H
+
+#include <stdint.h>
+#include "config.h"
+
+#if HAVE_NEON && HAVE_INLINE_ASM
+
+#define int8x8_fmul_int32 int8x8_fmul_int32
+static inline void int8x8_fmul_int32(float *dst, const int8_t *src, int scale)
+{
+ __asm__ ("vcvt.f32.s32 %2, %2, #4 \n"
+ "vld1.8 {d0}, [%1,:64] \n"
+ "vmovl.s8 q0, d0 \n"
+ "vmovl.s16 q1, d1 \n"
+ "vmovl.s16 q0, d0 \n"
+ "vcvt.f32.s32 q0, q0 \n"
+ "vcvt.f32.s32 q1, q1 \n"
+ "vmul.f32 q0, q0, %y2 \n"
+ "vmul.f32 q1, q1, %y2 \n"
+ "vst1.32 {q0-q1}, [%m0,:128] \n"
+ : "=Um"(*(float (*)[8])dst)
+ : "r"(src), "x"(scale)
+ : "d0", "d1", "d2", "d3");
+}
+
+#endif
+
+#endif /* AVCODEC_ARM_DCA_H */