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
..
2014-07-10 04:01:03 +02:00
2014-07-13 15:17:04 +02:00
2014-07-11 20:29:40 +02:00
2014-07-13 13:48:31 +02:00
2014-07-09 22:38:13 +02:00
2014-07-09 22:38:13 +02:00
2014-07-09 22:38:13 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-10 01:22:14 +02:00
2014-07-01 15:22:11 +02:00
2014-07-10 01:22:14 +02:00
2014-07-02 19:47:14 +02:00
2014-07-02 16:25:40 +02:00
2014-07-05 02:11:17 +02:00
2014-07-06 23:43:37 +02:00
2014-07-06 23:43:37 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-06-28 19:08:39 +02:00
2014-06-28 19:08:39 +02:00
2014-07-01 15:22:11 +02:00
2014-07-07 16:31:51 +02:00
2014-07-06 20:00:59 +02:00
2014-07-08 02:51:56 +02:00
2014-07-07 16:17:27 +02:00
2014-07-01 15:22:11 +02:00
2014-07-10 01:22:14 +02:00
2014-07-07 00:04:22 +02:00
2014-07-07 00:04:22 +02:00
2014-07-11 20:29:40 +02:00
2014-07-11 20:29:40 +02:00
2014-07-09 22:27:07 +02:00
2014-07-10 08:26:59 +02:00
2014-07-09 22:27:07 +02:00
2014-07-09 22:27:07 +02:00
2014-07-09 22:27:07 +02:00
2014-07-02 19:47:14 +02:00
2014-07-09 22:27:07 +02:00
2014-07-04 00:35:21 +02:00
2014-07-09 20:11:36 +02:00
2014-07-10 01:22:14 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-08 03:19:06 +02:00
2014-07-08 03:19:06 +02:00
2014-06-27 02:36:45 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-13 13:26:19 +02:00
2014-07-10 00:07:04 +02:00
2014-07-10 00:07:04 +02:00
2014-07-10 15:29:54 +02:00
2014-07-10 17:27:56 +02:00
2014-07-12 21:03:09 +02:00
2014-07-12 21:03:09 +02:00
2014-07-11 12:21:41 +02:00
2014-07-10 00:19:49 +02:00
2014-07-12 21:31:37 +02:00
2014-07-12 21:03:09 +02:00
2014-06-29 16:26:38 +02:00
2014-07-08 22:19:38 +02:00
2014-07-08 22:19:38 +02:00
2014-06-27 01:11:59 +02:00
2014-06-27 02:05:22 +02:00
2014-06-27 02:05:22 +02:00
2014-07-01 15:22:11 +02:00
2014-06-27 02:05:22 +02:00
2014-06-27 02:05:22 +02:00
2014-06-27 02:05:22 +02:00
2014-06-27 02:05:22 +02:00
2014-07-10 01:22:14 +02:00
2014-07-07 23:16:59 +02:00
2014-07-08 01:55:47 +02:00
2014-07-08 01:55:47 +02:00
2014-07-01 15:22:11 +02:00
2014-07-10 01:22:14 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 23:28:18 +02:00
2014-07-01 15:22:11 +02:00
2014-07-06 03:39:39 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 13:33:11 +02:00
2014-07-01 13:33:11 +02:00
2014-07-04 20:29:40 +02:00
2014-07-07 15:36:58 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-10 01:22:14 +02:00
2014-07-01 15:22:11 +02:00
2014-07-09 16:04:32 +02:00
2014-07-10 01:22:14 +02:00
2014-07-07 16:17:27 +02:00
2014-07-07 16:17:27 +02:00
2014-07-01 15:22:11 +02:00
2014-07-09 08:51:17 +02:00
2014-07-01 15:22:11 +02:00
2014-07-06 00:32:29 +02:00
2014-07-02 20:22:12 +02:00
2014-07-07 10:24:18 +02:00
2014-07-06 20:11:40 +02:00
2014-07-06 20:11:40 +02:00
2014-07-12 01:09:51 +02:00
2014-07-10 01:22:14 +02:00
2014-07-10 04:01:03 +02:00
2014-07-10 04:01:03 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-08 18:03:11 +02:00
2014-07-08 03:19:06 +02:00
2014-07-09 19:58:58 +02:00
2014-07-07 03:06:00 +02:00
2014-07-09 21:20:31 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00
2014-07-11 05:34:13 +02:00
2014-07-07 16:17:27 +02:00
2014-07-07 16:17:27 +02:00
2014-07-07 16:17:27 +02:00
2014-07-07 15:36:58 +02:00
2014-07-05 21:43:40 +02:00
2014-07-12 22:33:27 +02:00
2014-07-07 16:17:27 +02:00
2014-07-01 07:36:22 -07:00
2014-07-01 07:36:22 -07:00
2014-07-01 15:22:11 +02:00
2014-07-09 22:27:07 +02:00
2014-07-07 18:06:39 +02:00
2014-07-07 22:57:36 +02:00
2014-07-10 15:29:54 +02:00
2014-07-01 15:43:40 +02:00
2014-07-01 15:43:40 +02:00
2014-07-01 15:43:40 +02:00
2014-07-04 01:08:57 +02:00
2014-07-01 15:22:11 +02:00
2014-07-01 15:22:11 +02:00