summaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2016-09-07Opus: update resume offset correctly while playing.Adam Sampson1-0/+1
The codec wasn't calling ci->set_offset() while decoding; as a result, the saved offset in ci.id3->offset was only updated at the start of the file and when seeking. To reproduce the problem in the simulator or on a real device: - Start playing an Opus file. - Let it play until 15s, then turn the player off. - Turn back on and resume playback. This'll resume correctly from 15s (using time-based resume, I think, as the offset was 0?). - Let it play until 30s, then turn the player off again. - Turn back on and resume playback. This'll resume from 15s, based on the initial position from last time, when it should resume from 30s. I believe this will also fix FS#12799 ("Resuming opus file from bookmark is not working correctly"). Change-Id: Iba67368e0029c968ef802693767e0722719bc38b
2016-05-28Fix race conditions in parallel build.Frank Gevaerts2-2/+0
ffmpeg_bitstream.c is included in libcodec, so there doesn't seem to be any reason for individual codecs to also compile it (and clobber any previous copy while they're at it, leading to broken builds) Change-Id: I2bedc277ab109f44a6e8feb3d12ed01a720e00a6
2016-03-18_BSD_SOURCE is deprecated, and we're supposed to use _DEFAULT_SOURCE now.Frank Gevaerts1-1/+1
Change-Id: Ia051bc758c8fe4002e222511fdc6be613cdd39e7
2015-07-17mp3_enc.c: fix MP3 recording at 32 kHz sample rateCástor Muñoz1-2/+2
Fixes a buffer overflow present when MP3 is encoded at 32000 Hz sample rate, affected bitrates are 320 and 256 kbps. Change-Id: I7634e70409be9d675d47be316a42630dd3147636
2015-02-02iBasso DX50/DX90: Major code cleanup and reorganization.Udo Schläpfer1-5/+5
Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-01-30fix surround & pbe dsp crashChiwen Chang2-2/+4
check handle before clean up buffer in flush(). Change-Id: I36a130c45c9f5dce97aa723ef98922b6935ead75
2015-01-22fix pbe/haas surround dsps: surround_enabled, redo flush functions.Chiwen Chang2-26/+11
surround_enabled was never true, end up dsp_surround_flush didn't work; Thats why a cracking noise occurs in right channel when moving track positions. redo pbe/surround flush in a much simpler way suits the current single buffer style. Change-Id: I394054ddfb164b82c90b3dcf49df4442db87d8d2
2015-01-19Enable buflib and core_alloc for warble.Frank Gevaerts4-0/+25
Most of the work comes from http://gerrit.rockbox.org/r/#/c/1088/ by Thomas Jarosch. Change-Id: Iaa673dad2388d1e44fc95ffaa14bafadc6158101
2015-01-19three new DSPsChiwen Chang11-5/+852
perceptual bass enhancement - a bbe-ish group delay corrction with Biophonic EQ boost. - precut auditory fatigue reduction -reduce signal in frequency that may trigger temporary threshold shift haas surround -frequency between f(x1) and f(x2) is always bypassed. -can apply to side only. Change-Id: Icb6355ce9b1c99bf2c58c9385c3c411c0ae209d3
2015-01-12ARM unwinder for thumb: Fix broken MOV opcodeThomas Jarosch1-2/+2
The origin of the register value was never moved in the desired register state due to a typo ('rhs' vs. 'rhd'). While looking at the code, I noticed the action taken for the register value is another copy'n'paste error from the ADD opcode above -> it added to the register value instead of MOVing the current value. Patch submitted upstream. cppcheck reported: [lib/unwarminder/unwarm_thumb.c:473]: (warning) Redundant assignment of 'state.regData[rhd].o' to itself. Change-Id: I78cdbf37a191007a3bddbaa350b906dbce2fe671
2015-01-12Fix redThomas Jarosch1-1/+1
Change-Id: Ia7565dac0f6b9703a5dfff723167620deb218bc3
2015-01-12ARM unwinder for thumb: Fix broken SUB opcodeThomas Jarosch1-1/+1
Detected while looking through the code. Patch submitted upstream. Change-Id: I7ebe7b5f5947cf3df1b054d545dba92829f21b99
2015-01-12ARM unwinder: Add missing 'register' variable in debug outputThomas Jarosch1-2/+2
Also fix a wrong format specifier for an unsigned variable. Detected by cppcheck, patch submitted upstream. Change-Id: I9b84d91eeb242ed77b53ecc16252c5b35190bb9f
2015-01-12ARM unwinder: Add missing va_end() call.Thomas Jarosch1-0/+1
Detected by cppcheck, patch submitted upstream. Change-Id: Ieeec9d2e7e2c22d64c94936958f5a4ff02d3548b
2015-01-11Limit more variables to file scopeThomas Jarosch12-59/+52
Change-Id: I30219d626316776eb73b4205d63376fa3dbc6361
2015-01-08Clarify usb_powered() and fix some code.Amaury Pouly2-2/+2
Either by mistake or because its meaning changed, usb_powered() doesn't mean what the name suggest, so clarify its meaning by renaming it to usb_powered_only. So use of usb_powered() are replaced by usb_inserted() when it makes more sense. Change-Id: I112887e2d8560e84587bee5f55c826dde8c806d8 Reviewed-on: http://gerrit.rockbox.org/1097 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2015-01-05Fix yellowThomas Jarosch4-40/+41
Change-Id: I8685198c208b5324b09b5ad59f7379502e9ed977
2015-01-05Make thirty functions static to reduce binary sizeThomas Jarosch4-10/+10
If any of those functions should be (unused) API functions, they can easily be turned back once really needed. Detected using a new cppcheck check that uses the internal symbol database to catch functions that are only used in the current file. Change-Id: Ic2b1e5b8020b76397f11cefc4e205f3b7ac1f184
2014-12-27More standard conforming codec_realloc()Thomas Jarosch1-2/+6
- Leave original ptr untouched if allocation fails (bail out early) - Behave like malloc() in case ptr is NULL Change-Id: Ib854ca19bd0e069999b7780d2d9a533ece705add
2014-12-17Add newlines at the end of the fileThomas Jarosch2-2/+2
Quiet maemo's gcc 4.2.1 compiler warning. Change-Id: I35dfb2c0cb269b05edd62adf71fe0308a4b9ba5b
2014-11-28Fix warning in WMA Pro and remove a c++ comment.Michael Giacomelli2-4/+3
Change-Id: Id9b50c1fdeca4d87f158da717de8958330f027ef
2014-11-28Fix FS#13009.Michael Giacomelli3-13/+33
This file revealed several problems with our ASF parser: 1) The packet count in the ASF was actually a 64 bit value, leading to overflow in very long files. 2) Seeking blindly trusted the bitrate listed in the ASF header rather than computing it from the packet size and number of packets. Fix these problems and fix a few minor issues. Change-Id: Ie0f68734e6423e837757528ddb155f3bdcc979f3
2014-09-22fix yellowMarcin Bukat1-1/+1
Change-Id: Ie3aa9b208e3f4f17d4d02f11f69839e9b381217d
2014-09-22metadata: Add cuesheet embedded in ape tags.nialv71-13/+23
Change-Id: I5d9e731c3ea786fb910afbb0a5201fc68dcab9f9 Reviewed-on: http://gerrit.rockbox.org/965 Reviewed-by: Nick Peskett <rockbox@peskett.co.uk> Tested: Nick Peskett <rockbox@peskett.co.uk> Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
2014-08-30Fix last warning for WarbleMichael Sevakis1-0/+2
Unused result warnings will have to be dealt with separately. Change-Id: I00c45e28d4d43a5376745036e650ff8df576c2db
2014-08-30Get the last errors I hope!Michael Sevakis4-9/+12
Change-Id: Ia285b95480cc9ac6494b745d80892c4b1b912341
2014-08-25Remove unused return value variable in lib/unwarminder/backtrace.cMichael Sevakis1-3/+1
Stop the Android warning about it Change-Id: I2f01220004f128befaa5757786b8de174566cbb5
2014-08-16Fix warnings from 6ed0087Michael Sevakis1-2/+2
Forgot to (void) an unused parameter when priorityless. usb-drv-rl27xx.c was using a compound init to initialize a semaphore but the structure changed so that it is no longer correct. Use designated initializers to avoid having to complete all fields. Forgot to break compatibility on all plugins and codecs since the kernel objects are now different. Take care of that too and do the sort thing. Change-Id: Ie2ab8da152d40be0c69dc573ced8d697d94b0674
2014-07-21add supports for x,y value in percentage to several tags.Chiwen Chang1-7/+6
including BAR_PARAMS, %xl, %dr, %T,%St, %xl and %Cl Change-Id: I0811ebfff5f83085481dcbf08f97b7223f677bfe Reviewed-on: http://gerrit.rockbox.org/900 Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2014-07-13libopus: use iram for more constantsNils Wallménius2-5/+5
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
2014-07-13libopus: asm C_MUL for coldfireNils Wallménius1-0/+21
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
2014-07-13Sync to upstream libopusNils Wallménius46-1051/+1608
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
2014-04-15libmad: Use 32bit unsigned for requantize table.Thomas Martitz1-2/+2
Implicit promotion of integer literals to unsigned long introduced a subtle bug on 64-bit systems due to weird sign extensions (leads to audible glitches in a few files). The table is originally designed for unsigned 32bit integers, and it works with those so use them. As a consequence the lookup table size is halved as well. Change-Id: I35d878d6df03300387f0e403e0f3c3bdc73eea00
2014-03-10Implement time-based resume and playback start.Michael Sevakis36-192/+487
This complements offset-based resume and playback start funcionality. The implementation is global on both HWCODEC and SWCODEC. Basically, if either the specified elapsed or offset are non-zero, it indicates a mid-track resume. To resume by time only, set elapsed to nonzero and offset to zero. To resume by offset only, set offset to nonzero and elapsed to zero. Which one the codec uses and which has priority is up to the codec; however, using an elapsed time covers more cases: * Codecs not able to use an offset such as VGM or other atomic formats * Starting playback at a nonzero elapsed time from a source that contains no offset, such as a cuesheet The change re-versions pretty much everything from tagcache to nvram. Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38 Reviewed-on: http://gerrit.rockbox.org/516 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2014-03-03Fix more reds.Thomas Martitz1-11/+5
Change-Id: I4b58dda0953b7f9799238c32b78037b0a5403c04
2014-03-03Fix various reds. Some includes needed fixup.Thomas Martitz2-2/+4
Change-Id: I4327740bae17054131feb917abdd58846c451988
2013-12-23Proposed fix for FS#12878: Zero-length embedded album art prevents mp3 playbackJack Whitham1-1/+2
see http://www.rockbox.org/tracker/task/12878 Change-Id: Ib4233c06e18d1d193dfb9e73e745ca5d174e40b2 Reviewed-on: http://gerrit.rockbox.org/507 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-12-16Sync libopus to upstream release 1.1Nils Wallménius97-578/+977
Change-Id: I9fea7460fc33f60faff961b3389dd97b5191463c
2013-12-15DSP Compressor: Sidechain, Exponential Atk/RlsRyan Billing2-88/+292
This is an improvement to the current compressor which I have added to my own Sansa Fuze V2 build. I am submitting here in case others find it interesting. Features added to the existing compressor: Attack, Look-ahead, Sidechain Filtering. Exponential attack and release characteristic response. Benefits from adding missing features: Attack: Preserve perceived "brightness" of tone by letting onset transients come through at a higher level than the rest of the compressed program material. Look-ahead: With Attack comes clipping on the leading several cycles of a transient onset. With look-ahead function, this can be pre-emptively mitigated with a slower gain change (less distortion). Look-ahead limiting is implemented to prevent clipping while keeping gain change ramp to an interval near 3ms instead of instant attack. The existing compressor implementation distorts the leading edge of a transient by causing instant gain change, resulting in log() distortion. This sounds "woofy" to me. Exponential Attack/Release: eMore natural sounding. On attack, this is a true straight line of 10dB per attack interval. Release is a little different, however, sounds natural as an analog compressor. Sidechain Filtering: Mild high-pass filter reduces response to low frequency onsets. For example, a hard kick drum is less likely to make the whole of the program material appear to fade in and out. Combined with a moderate attack time, such a transient will ride through with minimal audible artifact. Overall these changes make dynamic music sound more "open", more natural. The goal of a compressor is to make dyanamic music sound louder without necessarily sounding as though it has been compressed. I believe these changes come closer to this goal. Enjoy. If not, I am enjoying it Change-Id: I664eace546c364b815b4dc9ed4a72849231a0eb2 Reviewed-on: http://gerrit.rockbox.org/626 Tested: Purling Nayuki <cyq.yzfl@gmail.com> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2013-12-13Add support for flac embeded album art.Albert Song1-0/+50
Change-Id: I077768f7d80b57976f9a7278b640ef67cf4f2af2 Reviewed-on: http://gerrit.rockbox.org/694 Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-11-18flac: fix seeking.Andrew Ryabinin1-1/+1
As comment in code states: "It is possible for our seek to land in the middle of audio data that looks exactly like a frame header from a future version of an encoder. When that happens, frame_sync() will return false. But there is a remote possibility that it is properly synced at such a "future-codec frame", so to make sure, we wait to see several "unparseable" errors in a row before bailing out." Currently we wait for 10 "unparseable" errors. libFLAC waits for 20. But I've got a valid flac+cue, wherein switching to certain track gave me 24 "unparsaeable" errors. Therefore I increased unparseable_count to 30. Change-Id: I4e97a5385c729adf3d5075d41ea312622c69e548 Reviewed-on: http://gerrit.rockbox.org/658 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Reviewed-by: Boris Gjenero <boris.gjenero@gmail.com> Tested-by: Andrew Ryabinin <ryabinin.a.a@gmail.com> Reviewed-by: Andrew Ryabinin <ryabinin.a.a@gmail.com>
2013-10-20Add missing #include statements.Kevin Zheng3-0/+6
Although Linux accepts several implicit definitions of SEEK_END found in stdio.h, the compiler on FreeBSD won't. Rockbox compilation will fail without stdio.h included. There is a precedent for including this header, see lib/rbcodec/codecs/libtremor/ivorbisfile.h. Change-Id: I58510101b59a354cd6601cb3f323f385a824d2e8 Reviewed-on: http://gerrit.rockbox.org/639 Tested-by: Kevin Zheng <kevinz5000@gmail.com> Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
2013-10-05Simulator - encoders can now be loadedLorenzo Miori1-1/+2
This enables the encoders - i.e. to record audio - to be loaded also on the simulator. Change-Id: I54fdbeb75b89023c0d7824a34cf76301c02c3150 Reviewed-on: http://gerrit.rockbox.org/632 Reviewed-by: Thomas Martitz <kugel@rockbox.org>
2013-09-01Opus: delete two files that were moved into a subdirNils Wallménius2-108/+0
Change-Id: I54ef0dfd57fbb493ad38855767a8f5e724e5bc65
2013-09-01Fix warning from a35c1b3Nils Wallménius1-1/+1
Change-Id: I0e9b2c265a6a2355dc39b1696df4c8f266d9a638
2013-09-01Opus: Coldfire inline asm for comb_filter_constNils Wallménius1-0/+33
Speeds up decoding a 64kbps test file by 2.6MHz Change-Id: Ibeb30f37cc00a4a6f65b64851009753f40e06fc1
2013-08-31Add cf asm inline for multiplication commonly used in silk.Nils Wallménius2-0/+54
Speeds up decoding a 16kbps test file by 4.9MHz on h300. Change-Id: I8c25431c98dfa9a1c3806a84055e0847eb77a9f1
2013-08-31Put two hot silk arrays on real stack (iram)Nils Wallménius2-6/+10
Speeds up decoding of 16kbps test file by 16.7MHz on H300. Change-Id: I39c90e3b423ae8e2ee5c2b88c5dcec8d48807f77
2013-08-31Silence spurious warningNils Wallménius1-1/+1
Change-Id: I856c722e959314c0a86e9c0a3a31cb824ddb41cc
2013-08-31Sync opus codec to upstream gitNils Wallménius115-4290/+4825
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