summaryrefslogtreecommitdiff
path: root/lib/rbcodec (follow)
Commit message (Collapse)AuthorAge
...
* 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>
* Support technically invalid image/jpg mimetype in tags.Frank Gevaerts2012-09-29
| | | | | | | | | | Although the mimetype for jpeg is clearly image/jpeg, many tagging applications seem to use image/jpg, so we'll support that too. Change-Id: Icb9063fd5a9d8aea169eaa7f74ac52b72603d148 Reviewed-on: http://gerrit.rockbox.org/318 Reviewed-by: Michael Giacomelli <mgiacomelli@gmail.com> Reviewed-by: Thomas Martitz <kugel@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: build with -fno-strict-aliasing for mips to fix warningsNils Wallménius2012-09-27
| | | | Change-Id: I370f43f2e25e03650681c207908f79cdea744d99
* 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>
* Make codec_realloc retain the contents when resizing a memory segmentBertrik Sikken2012-07-26
| | | | Change-Id: Ia2fc42eb0d36399e6856d3a957dd1634f019ca6a
* Expand the range of the WPA Pro quant table. Fixes FS#12704.Michael Giacomelli2012-07-03
| | | | Change-Id: I5495c4d7d165cac15016d3233b85bbe5497ea3e1
* Fix libmad compilation on MIPS with newer gcc. FS#12013Huan Zhang2012-06-11
| | | | | | | | | | | Since gcc 4.4 the MIPS port no longer recognizes the "h" asm constraint. It was necessary to remove this constraint in order to avoid generating unpredictable code sequences. We can achieve the same effect using 128-bit types. See also:GCC 4.4 release notes at http://gcc.gnu.org/gcc-4.4/ Change-Id: I713cdf57cde1a989ad960aa441ab1ccf51f1cdc6
* New crossfeed algorithm for Rockbox: "Meier" crossfeedBertrik Sikken2012-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Emulates the basic "Meier" crossfeed (2 capacitors, 3 resistors) as discussed in http://www.meier-audio.homepage.t-online.de/passivefilter.htm This crossfeed blends a bit of low-pass filtered L signal into the R signal (and vice versa) while adding about 300 us delay to the crossfed-signal. A difference with the crossfeed already present in rockbox, is that this algorithm keeps the total spectrum flat (the one currently in rockbox accentuates low-frequency signals, making it sound a bit muffled). This implementation is quite lightweight, just 3 multiplies per left-right pair of samples. Has a default C implementation and optimized assembly versions for ARM and Coldfire. The crossfeed effect is quite subtle and is noticeable mostly one albums that have very strong left-right separation (e.g. one instrument only on the left, another only on the right). In the user interface, the new crossfeed option appears as "Meier" and is not configureable. The existing crossfeed is renamed to "Custom" as it allows itself to be customised. There is no entry for the user manual yet. Change-Id: Iaa100616fe0fcd7e16f08cdb9a7f41501973eee1
* Stop timestretch freezing things during format changes.Michael Sevakis2012-05-21
| | | | | | | | When it was inactive but enabled, the format change hook was dropping through to code that it shouldn't execute without it also being active in processing samples. Change-Id: Ie7899df0395d3f0d10f2bf2b55ea549dd06749a7
* Expand the range of the inverse quant table in WMA Pro.Michael Giacomelli2012-05-20
| | | | | | | | | Several of the problem samples on the tracker use values outside this range. Trying the larger table doesn't quite seem to fix things, but its only a small amount of additional memory and looking at ffmpeg, I think the larger table is correct. Change-Id: Id046e62b68550701aa1f80c9abd0a1dcd711bd0d
* Revert "Work in progress hermite resampler."Michael Giacomelli2012-05-20
| | | | This reverts commit f358228ea1bc66804e9ea12b65c2593c6c1fe8ee.
* support decoding of files that contain the number of vector coded ↵Michael Giacomelli2012-05-20
| | | | | | | | | | coefficients in their bitstream No known samples are fixed by this problem, but I haven't tested many. Backport of ffmpeg revision 26388. Change-Id: Ife9654b7477a432834e3cab2cb43d16da071445a
* Work in progress hermite resampler.Michael Giacomelli2012-05-20
| | | | | | Based on http://src.gnu-darwin.org/ports/multimedia/helixplayer/work/hxplay-1.0.7/audio/resampler/hermite.c Change-Id: Id87565a060aa2383701e7c2f3ea023c7555ad9ef
* dsp_arm: Fix up some .section directives to fix crash on app targets.Thomas Martitz2012-05-13
| | | | | | | This is needed on app targets as e.g. ".section .icode" leads to the code getting linked to incorrect locations (0x0 in this case). Change-Id: Ic28c5ae6d4f8001d211d685b5ca92d5ffff0c7b2
* TDSpeed: Fix crackling on some systemsNils Wallménius2012-05-12
| | | | | | | | Use memmove instead of memcpy for overlapping copy, fixes crackling in sims and warble on my system. Native targets seem to have been unaffected. Change-Id: I265d4ce373e224581bd2f5ba15c75b473ec231f2
* TDSpeed settings to setup call need to be recorded, always.Michael Sevakis2012-05-11
| | | | | | | | If the settings, like samplerate, were to go out of range where timestretch drops out of processing and then go back to the same as when they were valid, it would fail to switch back on by itelf. Change-Id: Ic5bcb268540b0db8e0483117b8a5a0ce5c5a9db0
* TDSpeed: Minor assembly optimization to frame fade on Coldfire.Michael Sevakis2012-05-11
| | | | | | | | Makes quite a huge difference to get rid of 64-bit math in a hot area. Cuts about 12 MHz. Generic routine generates good code on ARM and asm cuts no instructions there. Change-Id: I4ac647406006c42004f9f5ab396cbf4e85688854
* TDSpeed: Fix up samples consumed return (FS#12666) + other stuff like...Michael Sevakis2012-05-10
| | | | | | | | | Wrap up the the stereo case into loops and remove unused calculations hanging out in tdspeed_update(). A wee little bit of code style and column policing. Change-Id: I8dd3ab4b3e7e56b55dc00c00f3e32996228cc457
* Rename HAVE_PITCHSCREEN to HAVE_PITCHCONTROLNils Wallménius2012-05-09
| | | | | | | | Also move the definition to config.h Change-Id: I36bb5020c5e06b2344292bc05e8c13ccc7a6a1ff Reviewed-on: http://gerrit.rockbox.org/234 Reviewed-by: Nils Wallménius <nils@rockbox.org>
* Tweak dsp_format_change_process (default format handler).Michael Sevakis2012-05-08
| | | | | | Just stop searching if the entry is found (as it should have been). Change-Id: Id968694e825282d58c8ca4a7789c236f98643a5f
* Consolidate some sample input code.Michael Sevakis2012-05-08
| | | | | | | Input functions have common setup sequences that can be placed into an inline function instead of repeating it all repeatedly. Change-Id: I9e62904ff0948651c64ddf160ed4400ed6dc81ff
* Remove STATICIRAM hackNils Wallménius2012-05-08
| | | | | | | | It was only needed by the old arm toolchain that we no longer use or support. Change-Id: Id0e6c67477f8834a637079b03cde5fbf9da68b1c Reviewed-on: http://gerrit.rockbox.org/233 Reviewed-by: Nils Wallménius <nils@rockbox.org>
* rbcodec: abstract tdspeed buffer allocationNils Wallménius2012-05-07
| | | | | | | | | | | | | Move code dealing with rockbox specific buflib allocations into a rockbox specific file and implement buffer allocation with malloc/free for warble/stand alone lib. Based on patch by Sean Bartell. Change-Id: I8cb85dad5890fbd34c1bb26abbb89c0b0f6b55cf Reviewed-on: http://gerrit.rockbox.org/144 Tested-by: Nils Wallménius <nils@rockbox.org> Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Reviewed-by: Nils Wallménius <nils@rockbox.org>
* remove extraneous parensRafaël Carré2012-05-06
|
* asap codec: remove invalid memsetRafaël Carré2012-05-06
| | | | | | | | This would zero the first 4 or 8 bytes of the array because it is declared as a pointer rockbox/lib/rbcodec/codecs/libasap/asap.c:1229:44: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess] memset(ast -> memory, 0, sizeof(ast -> memory)); ~~~~~~~~~~~~~ ~~~~~~~^~~~~~
* Don't use function in a functionRafaël Carré2012-05-06
| | | | It is not supported by clang
* Correct comments in lin_resample re: what is actually used by asm.Michael Sevakis2012-05-06
| | | | Change-Id: Idd457f3c645c5d469ebc6fab0bfc85e7b8dd56da
* Remove pointless IRAM allocation from voice DSP.Michael Sevakis2012-05-04
| | | | | | | | | It's always used in MONO mode and doesn't need the IRAM sample/ resample buffers and 1280 bytes can be freed. M5 can now have its PCM mixer downmix buffer in IRAM. Change-Id: I0af08be5b212b7dfe382bba588a6585eb328a038
* rbcodec: Hooks for target specific functions in dsp_process loopMichael Sevakis2012-05-03
| | | | | | | | | | Use them to move tick counting, yielding and coldfire macsr handling code to a rockbox specific file. Change-Id: Id7417dc98c08a342eba45ba56b044a276e50564b Reviewed-on: http://gerrit.rockbox.org/229 Tested-by: Nils Wallménius <nils@rockbox.org> Reviewed-by: Nils Wallménius <nils@rockbox.org>
* Add rbcodecplatform.h and rbcodecconfig.h.Sean Bartell2012-05-03
| | | | | | | | | | | | | | | | | librbcodec users must provide these two files when the library is built. rbcodecconfig.h provides configuration #defines and basic types, and will be included by public librbcodec headers, so it must not conflict with the user's code. rbcodecplatform.h provides various OS functions, and will only be included by source files and private headers. This system is intended to provide maximum flexibility for use on embedded systems, where no operating system headers are included. Unix systems can just copy rbcodecconfig-example.h and rbcodecplatform-unix.h with minimal changes. Change-Id: I350a2274d173da391fd1ca00c4202e9760d91def Reviewed-on: http://gerrit.rockbox.org/143 Reviewed-by: Nils Wallménius <nils@rockbox.org> Tested-by: Nils Wallménius <nils@rockbox.org>
* Delete unused stub functions.Nils Wallménius2012-05-02
| | | | Change-Id: I886d65b60364699845475e2ea1a741aece506a8f
* Delete autoconf.h file in the warble source, one less headache.Nils Wallménius2012-05-01
| | | | Change-Id: I83c1b523de453c45aa4df3340b9a1aa63bf321ed
* rbcodec refactoring: autoresumableSean Bartell2012-05-01
| | | | | | | | Moved to playback.c, since it doesn't use metadata from the music file. Change-Id: I5c3ad7750d94b36754f64eb302f96ec163785cb9 Reviewed-on: http://gerrit.rockbox.org/142 Reviewed-by: Nils Wallménius <nils@rockbox.org>
* Fix audio corruption when sequentially playing low bitrate WMA filesMichael Giacomelli2012-05-01
| | | | | | for real this time. Also, use English grammar. Change-Id: I1f2156afa313280deb02b58a191511699671a761
* Make INITDATA_ATTR work on everything that has INIT_ATTR enabled for code.Michael Sevakis2012-05-01
| | | | Change-Id: If9936bfbbd3bc3eb2a3e3e290701b8517eabfb13
* Fix corrupt when repeatidly playing very low bitrate WMA files.Michael Giacomelli2012-05-01
| | | | | | | | | | | | | | | | | | | The LSP feature in WMA requires that the noise table values be doubled verses when it is not used. Unfortunately, the previous code would double the same values every time a LSP file was decoded without first resetting them to their original values. Change the code to check if the values are already doubled, and then double/halve them as needed. This is still a bit ugly, in the future consider using the built in rockbox dither instead of a lookup table. Fixes playback when skipping back and forth between low and high bitrate WMA. Change-Id: I4c393092e4a789bc8f98d74274fe207400b9550e Reviewed-on: http://gerrit.rockbox.org/226 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Tested-by: Michael Giacomelli <giac2000@hotmail.com>
* Should've had dsp_replaygain_set_gains as static for now...Michael Sevakis2012-04-30
| | | | | | ...because currently gains are only set through dsp_configure. Change-Id: I2866473a82fdd5f41de4705b45928daa7e43f8eb