1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00
FFmpeg/libavcodec/aarch64
Martin Storsjö cad42fadcd aarch64: vp9itxfm: Skip empty slices in the first pass of idct_idct 16x16 and 32x32
This work is sponsored by, and copyright, Google.

Previously all subpartitions except the eob=1 (DC) case ran with
the same runtime:

vp9_inv_dct_dct_16x16_sub16_add_neon:   1373.2
vp9_inv_dct_dct_32x32_sub32_add_neon:   8089.0

By skipping individual 8x16 or 8x32 pixel slices in the first pass,
we reduce the runtime of these functions like this:

vp9_inv_dct_dct_16x16_sub1_add_neon:     235.3
vp9_inv_dct_dct_16x16_sub2_add_neon:    1036.7
vp9_inv_dct_dct_16x16_sub4_add_neon:    1036.7
vp9_inv_dct_dct_16x16_sub8_add_neon:    1036.7
vp9_inv_dct_dct_16x16_sub12_add_neon:   1372.1
vp9_inv_dct_dct_16x16_sub16_add_neon:   1372.1
vp9_inv_dct_dct_32x32_sub1_add_neon:     555.1
vp9_inv_dct_dct_32x32_sub2_add_neon:    5190.2
vp9_inv_dct_dct_32x32_sub4_add_neon:    5180.0
vp9_inv_dct_dct_32x32_sub8_add_neon:    5183.1
vp9_inv_dct_dct_32x32_sub12_add_neon:   6161.5
vp9_inv_dct_dct_32x32_sub16_add_neon:   6155.5
vp9_inv_dct_dct_32x32_sub20_add_neon:   7136.3
vp9_inv_dct_dct_32x32_sub24_add_neon:   7128.4
vp9_inv_dct_dct_32x32_sub28_add_neon:   8098.9
vp9_inv_dct_dct_32x32_sub32_add_neon:   8098.8

I.e. in general a very minor overhead for the full subpartition case due
to the additional cmps, but a significant speedup for the cases when we
only need to process a small part of the actual input data.

Signed-off-by: Martin Storsjö <martin@martin.st>
2016-11-30 23:57:05 +02:00
..
asm-offsets.h arm64: port synth_filter_float_neon from arm 2015-12-14 16:45:01 +01:00
cabac.h aarch64: get_cabac inline asm 2014-03-09 00:45:33 +01:00
dcadsp_init.c dca: remove unused decode_hf function and quant_d tables 2015-12-24 13:58:18 +01:00
dcadsp_neon.S dca: remove unused decode_hf function and quant_d tables 2015-12-24 13:58:18 +01:00
fft_init_aarch64.c fft: Split MDCT bits off from FFT 2016-03-01 10:18:28 +01:00
fft_neon.S aarch64: Use .data.rel.ro for const data with relocations 2014-12-09 11:43:31 +02:00
fmtconvert_init.c arm64: int32_to_float_fmul neon asm 2015-12-14 16:45:02 +01:00
fmtconvert_neon.S arm64: int32_to_float_fmul neon asm 2015-12-14 16:45:02 +01:00
h264chroma_init_aarch64.c h264chroma: Change type of stride parameters to ptrdiff_t 2016-09-29 14:48:04 +02:00
h264cmc_neon.S h264chroma: Change type of stride parameters to ptrdiff_t 2016-09-29 14:48:04 +02:00
h264dsp_init_aarch64.c aarch64: h264 (bi)weight NEON optimizations 2014-01-15 12:31:07 +01:00
h264dsp_neon.S aarch64: h264 (bi)weight NEON optimizations 2014-01-15 12:31:07 +01:00
h264idct_neon.S aarch64: h264idct: Use the offset parameter to movrel 2016-11-10 11:18:22 +02:00
h264pred_init.c h264: aarch64: intra prediction optimisations 2015-07-20 23:10:29 +02:00
h264pred_neon.S h264: aarch64: intra prediction optimisations 2015-07-20 23:10:29 +02:00
h264qpel_init_aarch64.c arm64: constify src in h264qpel dsp function definitions 2015-06-24 08:41:32 +02:00
h264qpel_neon.S aarch64: h264 qpel NEON optimizations 2014-01-15 12:17:49 +01:00
hpeldsp_init_aarch64.c aarch64: hpeldsp NEON optimizations 2014-01-15 12:30:24 +01:00
hpeldsp_neon.S aarch64: hpeldsp NEON optimizations 2014-01-15 12:30:24 +01:00
imdct15_init.c opus: Factor out imdct15 into a standalone component 2015-02-02 16:07:33 +01:00
imdct15_neon.S opus: Factor out imdct15 into a standalone component 2015-02-02 16:07:33 +01:00
Makefile aarch64: vp9: Implement NEON loop filters 2016-11-14 00:10:13 +02:00
mdct_init.c fft: Split MDCT bits off from FFT 2016-03-01 10:18:28 +01:00
mdct_neon.S aarch64: NEON float (i)MDCT 2014-04-22 19:35:41 +02:00
mpegaudiodsp_init.c mpegaudiodsp: aarch64: Adjust function prototype after 2caa93b813 2016-11-10 00:13:48 +01:00
mpegaudiodsp_neon.S mpegaudiodsp: Change type of array stride parameters to ptrdiff_t 2016-09-29 17:54:24 +02:00
neon.S aarch64: Make transpose_4x4H do a regular transpose 2016-03-26 21:25:56 +02:00
neontest.c lavc: add clobber tests for the new encoding/decoding API 2016-09-28 10:01:52 +02:00
rv40dsp_init_aarch64.c h264chroma: Change type of stride parameters to ptrdiff_t 2016-09-29 14:48:04 +02:00
synth_filter_neon.S arm64: port synth_filter_float_neon from arm 2015-12-14 16:45:01 +01:00
vc1dsp_init_aarch64.c h264chroma: Change type of stride parameters to ptrdiff_t 2016-09-29 14:48:04 +02:00
videodsp_init.c aarch64: implement videodsp.prefetch 2014-04-06 21:18:49 +02:00
videodsp.S aarch64: implement videodsp.prefetch 2014-04-06 21:18:49 +02:00
vorbisdsp_init.c aarch64: NEON vorbis_inverse_coupling 2014-04-22 22:01:45 +02:00
vorbisdsp_neon.S aarch64: NEON vorbis_inverse_coupling 2014-04-22 22:01:45 +02:00
vp9dsp_init_aarch64.c aarch64: vp9: Implement NEON loop filters 2016-11-14 00:10:13 +02:00
vp9itxfm_neon.S aarch64: vp9itxfm: Skip empty slices in the first pass of idct_idct 16x16 and 32x32 2016-11-30 23:57:05 +02:00
vp9lpf_neon.S aarch64: vp9: loop filter: replace 'orr; cbn?z' with 'adds; b.{eq,ne}; 2016-11-16 09:05:18 +01:00
vp9mc_neon.S aarch64: vp9: Add NEON optimizations of VP9 MC functions 2016-11-10 11:15:56 +02:00