1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
Go to file
Ben Avison 42c1cc35b7 armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6)
The previous implementation targeted DTS Coherent Acoustics, which only
requires mdct_bits == 6. This relatively small size lent itself to
unrolling the loops a small number of times, and encoding offsets
calculated at assembly time within the load/store instructions of each
iteration.

In the more general case (codecs such as AAC and AC3) much larger arrays
are used - mdct_bits == [8, 9, 11]. The old method does not scale for
these cases, so more integer registers are used with non-unrolled versions
of the loops (and with some stack spillage). The postrotation filter loop
is still unrolled by a factor of 2 to permit the double-buffering of some
VFP registers to facilitate overlap of neighbouring iterations.

I benchmarked the result by measuring the number of gperftools samples
that hit anywhere in the AAC decoder (starting from aac_decode_frame())
or specifically in ff_imdct_half_c / ff_imdct_half_vfp, for the same
example AAC stream:

                  Before          After
                  Mean   StdDev   Mean   StdDev  Confidence  Change
aac_decode_frame  2368.1 35.8     2117.2 35.3    100.0%      +11.8%
ff_imdct_half_*   457.5  22.4     251.2  16.2    100.0%      +82.1%

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-13 15:17:04 +02:00
compat
doc fix spelling errors 2014-07-12 22:33:27 +02:00
libavcodec armv6: Accelerate ff_imdct_half for general case (mdct_bits != 6) 2014-07-13 15:17:04 +02:00
libavdevice
libavfilter fix spelling errors 2014-07-12 22:33:27 +02:00
libavformat avformat/asfdec: dvrms timestamps are pts not dts 2014-07-13 03:50:47 +02:00
libavresample
libavutil fix spelling errors 2014-07-12 22:33:27 +02:00
libpostproc
libswresample fix spelling errors 2014-07-12 22:33:27 +02:00
libswscale swscale/x86/rgb2rgb_template: fix 1 byte overread in yuyvtoyuv420 and uyvytoyuv420 2014-07-13 05:48:09 +02:00
presets
tests
tools
.gitignore gitignore: add examples/transcoding 2014-07-10 02:18:09 +02:00
arch.mak
Changelog
cmdutils_common_opts.h
cmdutils_opencl.c
cmdutils.c
cmdutils.h
common.mak
configure configure: fix alphabetical order of previous commit 2014-07-12 23:24:16 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
ffmpeg_dxva2.c
ffmpeg_filter.c
ffmpeg_opt.c
ffmpeg_vda.c
ffmpeg_vdpau.c
ffmpeg.c ffmpeg: fix integer overflows with sub->*display_time 2014-07-12 02:23:48 +02:00
ffmpeg.h
ffplay.c ffplay: increase subtitle que size 2014-07-12 16:29:03 +02:00
ffprobe.c
ffserver.c
INSTALL.md
library.mak
LICENSE.md
MAINTAINERS
Makefile
README.md
RELEASE
version.sh

FFmpeg README

  1. Documentation

  1. Licensing

  • See the LICENSE file.
  1. Build and Install

  • See the INSTALL file.