summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libopus (follow)
Commit message (Collapse)AuthorAge
* libopus: use iram for more constantsNils Wallménius2014-07-13
| | | | | | | | Speeds up decoding of the 64 kbps test file by 2.59 MHz and the 128 kbps test file by 4.31 MHz on H300 (cf). Decoding the same files on c200 is sped up by 0.33 MHz and 0.55 MHz respectively. Change-Id: I0f9f9ef6a7293581cf45e3201b33c65504c95c81
* libopus: asm C_MUL for coldfireNils Wallménius2014-07-13
| | | | | | | | | | The recent merge of upstream changed the fft to use C_MUL which wasn't implemented in asm for coldfire. Speeds up decoding 64 kbps test file by 2.68 MHz and 128 kbps test file by 2.80 MHz on H300. Change-Id: I8b61fc0f9568d6350431e311a12e44fe4f60f72e
* Sync to upstream libopusNils Wallménius2014-07-13
| | | | | | | | | | | | | | | | | | | | | | Sync to commit bb4b6885a139644cf3ac14e7deda9f633ec2d93c This brings in a bunch of optimizations to decode speed and memory usage. Allocations are switched from using the pseudostack to using the real stack. Enabled hacks to reduce stack usage. This should fix crashes on sansa clip, although some files will not play due to failing allocations in the codec buffer. Speeds up decoding of the following test files: H300 (cf) C200 (arm7tdmi) ipod classic (arm9e) 16 kbps (silk) 14.28 MHz 4.00 MHz 2.61 MHz 64 kbps (celt) 4.09 MHz 8.08 MHz 6.24 MHz 128 kbps (celt) 1.93 MHz 8.83 MHz 6.53 MHz Change-Id: I851733a8a5824b61feb363a173091bc7e6629b58
* Sync libopus to upstream release 1.1Nils Wallménius2013-12-16
| | | | Change-Id: I9fea7460fc33f60faff961b3389dd97b5191463c
* Opus: delete two files that were moved into a subdirNils Wallménius2013-09-01
| | | | Change-Id: I54ef0dfd57fbb493ad38855767a8f5e724e5bc65
* Fix warning from a35c1b3Nils Wallménius2013-09-01
| | | | Change-Id: I0e9b2c265a6a2355dc39b1696df4c8f266d9a638
* Opus: Coldfire inline asm for comb_filter_constNils Wallménius2013-09-01
| | | | | | Speeds up decoding a 64kbps test file by 2.6MHz Change-Id: Ibeb30f37cc00a4a6f65b64851009753f40e06fc1
* Add cf asm inline for multiplication commonly used in silk.Nils Wallménius2013-08-31
| | | | | | Speeds up decoding a 16kbps test file by 4.9MHz on h300. Change-Id: I8c25431c98dfa9a1c3806a84055e0847eb77a9f1
* Put two hot silk arrays on real stack (iram)Nils Wallménius2013-08-31
| | | | | | Speeds up decoding of 16kbps test file by 16.7MHz on H300. Change-Id: I39c90e3b423ae8e2ee5c2b88c5dcec8d48807f77
* Silence spurious warningNils Wallménius2013-08-31
| | | | Change-Id: I856c722e959314c0a86e9c0a3a31cb824ddb41cc
* Sync opus codec to upstream gitNils Wallménius2013-08-31
| | | | | | | | | | | | | | | | | | | | | | | Sync opus codec to upstream commit 02fed471a4568852d6618e041c4f2af0d7730ee2 (August 30 2013) This brings in a lot of optimizations but also makes the diff between our codec and the upstream much smaller as most of our optimizations have been upstreamed or supeceded. Speedups across the board for CELT mode files: 64kbps 128kbps H300 9.82MHz 15.48MHz c200 4.86MHz 9.63MHz fuze v1 10.32MHz 15.92MHz For the silk mode test file (16kbps) arm targets get a speedup of about 2MHz while the H300 is 7.8MHz slower, likely because it's now using the pseudostack more rather than the real stack which is in iram. Patches to get around that are upcomming. Change-Id: Ifecf963e461c51ac42e09dac1e91bc4bc3b12fa3
* Change CODECFLAGS to a "simply-expanded" var to give the individualNils Wallménius2013-08-23
| | | | | | | | | | | | codec makefiles larger freedom in what they can do to it. Use this in libopus to prepend the libopus searchpaths to CODECFLAGS so that its internal config.h will be picked up before our global one. This avoids having to do a s/config.h/opus_config.h/ when syncing which will be handy soon. Change-Id: I018d729aa0c8300fa3149f22a5a8c5668b339dfa Reviewed-on: http://gerrit.rockbox.org/496 Reviewed-by: Nils Wallménius <nils@rockbox.org>
* Fix opus craches with large embedded album artNils Wallménius2013-05-18
| | | | | | | | | | | | Use the tlsf malloc and friends instead of the silly codec_malloc to get actually working free and saner realloc that doesn't leak memory. Makes files with moderately sized embedded AA play on targets with large enough codec buffers and files with too large AA are now skipped rather than crashing. Fixes crash when playing example file in FS#12842. Change-Id: I06562955c4d9a95bd90f55738214fba462092b71
* ARMv5 optimized complex multiply function for libopus.Michael Giacomelli2013-01-21
| | | | | | | | | | | | | Speeds up decoding of 128k opus files by 1.2MHz on AMSv2. Rounding error is 1 bit due to KissFFT using a 15 bit shift instead of a 16 bit shift. Also, change an LDMIA in the armv4 code to LDM as the pointer should not increment. Change-Id: I626a207c6a056a1984e33cfe89415c35d0caed93 Reviewed-on: http://gerrit.rockbox.org/377 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Tested-by: Michael Giacomelli <giac2000@hotmail.com>
* opus: only put the mdct function in iram for cf,Nils Wallménius2012-10-17
| | | | | | doesn't make any speed diff on pp Change-Id: Ia6484e2a2bbf72d33a583470918c0fa267fd9b97
* opus: don't rely on stride being 1<<shiftNils Wallménius2012-10-16
| | | | Change-Id: I2d64fb20b2526d912eb665df0df4e87459676a92
* opus: use two pointers for mdct pre and post rotationAndree Buschmann2012-10-16
| | | | | | | | | avoids complicated index calculations in the loops. saves 0.3MHz decoding a 64kbps test file on h300 (cf) and 0.2MHz on c200 (pp) Change-Id: I1918912d9a4502f89980c6bb270ec2ef10a07010 Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: put hot code in iramNils Wallménius2012-10-16
| | | | | | | Saves 1.1MHz decoding a 64kbps test file on h300 (cf) and 0.2MHz on c200 (pp) Change-Id: If9ed03f2e3787ee497eababda4013fbb5d395946
* opus: arm asm for C_MULCAndree Buschmann2012-10-10
| | | | | | | | speeds up decoding of a 64kbps test_file by 1.5MHz on c200 (pp) and 1.9MHz on fuzev1 (amsv1) Change-Id: I1db460b634eba608c3e00541d96fc93d5a05710b Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: cf asm for C_MULCNils Wallménius2012-10-10
| | | | | | saves 2.7MHz decoding a 64kbps test file on h300 Change-Id: Id63791f79b44ed398ce5d341a5f5212d9a30282e
* opus: replace copy loops with calls to memcpyAndree Buschmann2012-10-07
| | | | | | | | speeds up decoding of a 64kbps test file by 0.5Hz on h300 (cf) 0.9MHz on c200 (pp) and 0.2MHz on fuzev1 (amsv1) Change-Id: Ib537c2393fa6dca0b61e4e9f80eef5e688c2c2bd Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: speed up mdct overlap add and copyingAndree Buschmann2012-10-07
| | | | | | | | Unroll overlap add loop by four and use memcpy for copying instead of loops. Change-Id: I17114626a395d5972130251d892f851bc86e3a6a Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: cf inline asm for MULT32_32_Q31Nils Wallménius2012-10-06
| | | | | | speeds up decoding of a 64kbps test file by 2MHz on h300 Change-Id: I437d05278fe1c495715cf0e3477f9960d1df9d3a
* opus: full precision MULT32_32_Q31 (32*32=64>>31) multiplicationAndree Buschmann2012-10-06
| | | | | | | | | Replace complicated macro doing three 16*16 muls and add an inline asm implementation for arm, speeds up decoding a 64kbps test file by 0.5MHz on c200 (pp) and gives slightly better precision. Change-Id: I6fc5b83c210f01bffdc38aec54cc5a8b646d8169 Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: slight speedup of deemphasisAndree Buschmann2012-10-06
| | | | | | | | | | | Hoist load of coefficients out of the loop. Speeds up decoding of a 64kbps test file by 0.6MHz on h300 (cf) 0.2MHz on c200 (pp) and 0.1MHz on fuzev1 (amsv1) Signed-off-by: Nils Wallménius <nils@rockbox.org> Change-Id: I4be0059fc2a77748575f5fc9378f7f348d64f1c4
* opus: speed up comb_filterAndree Buschmann2012-10-06
| | | | | | | | | | | Skip expensive multiply-accumulate loop when gains are 0 and just copy using memcpy if soure and destination are not the same Speeds up decoding of a 64kbps test file by 6MHz on h300 (cf) 7MHz on c200 (pp) and 6MHz on fuzev1 (amsv1) Change-Id: Ibbc9ddfd45a9ac661467b1327b8c67761924fb8b Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: put arrays frequently used by pulse decoding on the stackNils Wallménius2012-10-04
| | | | | | | speeds up decoding of a 64kbps test file by 14MHz on h300 (cf) and 1MHz on c200 (pp) Change-Id: I852cb66808676ea51109423f5b70cfc8782dd109
* opus: speed up arm asm MULT16_32_Q15Nils Wallménius2012-10-01
| | | | | | | | Reorder operands to take advantage of the early termination of multiplications. Saves 2.5MHz decoding a 64kbps opus test file on c200 (pp). Change-Id: I470266dc870ab183ece3b23426d41e2a64342a71
* opus: allocate mdct f2 buffer in iramAndree Buschmann2012-10-01
| | | | | | | | | Speeds up decoding of 64kbps test file by 6.3MHz on h300 (cf) and 1.2MHz on c200 (pp). Signed-off-by: Nils Wallménius <nils@rockbox.org> Change-Id: I08c2c332153abcbef9447c81986777fd2fcc73fe
* opus: allocate buffers for X and freq in iramAndree Buschmann2012-10-01
| | | | | | | | speeds up decoding of 64kbps test file by 19MHz on h300 (cf) and 2.5MHz on c200 (pp) Change-Id: Idacd2f8962c20c518055d586daeec6b932b7ded2 Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: statically allocate decoder state in iramAndree Buschmann2012-09-29
| | | | | | | | Speeds up decoding of a 64kbps test file 26MHz on H300 (cf) and 2MHz on c200 (pp) Change-Id: I2fb4fe6c0a29321087e02fbd17fd1b1eb84e7b57 Signed-off-by: Nils Wallménius <nils@rockbox.org>
* opus: speed up deemphasisNils Wallménius2012-09-28
| | | | | | | | | Remove downsampling code from deemphasis loop as we don't use it and remove multiplications that are not relevant when not using custom modes. Saves 1.4MHz on h300 (cf), 4.3MHz on c200 (pp) and 4.6 on fuzev1 (amsv1). Change-Id: Iab3f1d737a656a563aaa351d50db987a9cff2287
* opus: put frequently used mdct buffer on the real stack which is in iramNils Wallménius2012-09-26
| | | | | | | Saves about 30MHz on h300 (cf) and 1.5MHz on c200 (pp) decoding a 64kbps test file. Stack usage is still below 70%. Change-Id: Ib13df9011adb4eef4bb91a52e5a32741c8bf8988
* opus: improve cf MULT16_32_Q15 by giving the compiler more freedomNils Wallménius2012-09-26
| | | | | | saves about 3MHz when decoding a 64kbps test file Change-Id: I10f47173ccb78e60e364662220d1db2f78dd5fdd
* opus: put some const tables and structs in iramNils Wallménius2012-09-25
| | | | | | | Speeds up decoding of a 64kbps test file by 20MHz on h300 (cf) and 1MHz on c200 (pp) Change-Id: Ia2adc0a3ad86abce8f948062eb53a8ac14c2cdf2
* opus: asm MULT16_32_Q15 for arm and cfNils Wallménius2012-09-25
| | | | | | | Speeds up decoding of a 64kbps opus test file by 34MHz on h300 (cf), 24MHz on c200 (pp) and 13MHz on fuzev1 (amsv1) Change-Id: I0dce6b3bfe6c81d0a722dfebb13891b9a428c6ba
* opus: #if 0 out some more unused code, delete unused fileNils Wallménius2012-09-24
| | | | Change-Id: I96033f42e0c3096ec9d779e9f8ca46570f981ab0
* opus: #if 0 out some unused codeNils Wallménius2012-09-24
| | | | Change-Id: I16fa9b439f8da5b9b8a4f17040487b9535078ec5
* Remove unused include path for opusBertrik Sikken2012-09-23
| | | | Change-Id: Ie5ab9d893a7d2c6ec1aca6c295e29ab34eacd656
* Initial opus codec supportFrederik M J Vestre2012-09-20
Synchronised with opus repo on github (https://github.com/freqmod/rockbox-opus) Status: * Seeking ported from speex, but fails on some cases (e.g. seek to granule 0) * ReplayGain parsing needs to be reworked, we do vorbis-style replaygain now. http://wiki.xiph.org/OggOpus#Comment_Header explicitly forbids these in favour of R128_TRACK_GAIN tag. * No optimisation yet, source files still nearly identical to opus upstream * Multi-stream opus files may not be parsed correctly Change-Id: Ia66f1027dc1d288083e3c57b2816700078376f9a Reviewed-on: http://gerrit.rockbox.org/300 Reviewed-by: Bertrik Sikken <bertrik@sikken.nl> Tested-by: Bertrik Sikken <bertrik@sikken.nl>