Commit graph

195 commits

Author SHA1 Message Date
Solomon Peachy
2c6094843c Third attempt to shut up the warble build printf() warning.
(resorting to an explicit cast this time)

Change-Id: Ib5fc7bcd9e573cd32fc4372003c6c5429e339652
2018-12-28 07:57:23 -05:00
Solomon Peachy
c77348f780 Another attempt to silence the warble build warning on 32-bit hosts
Change-Id: Ib83ce41582b18641badb389c3871e501c8be697f
2018-12-28 07:16:03 -05:00
Solomon Peachy
6c2a7ddc74 build: Put all codec optiomization definitions in one place
It was already mostly there.

Change-Id: I24ff278d9bf18a54be4b67c3075d5ebbe7947f65
2018-12-25 14:17:29 -05:00
Solomon Peachy
df1d386019 Hopefully silence the warning in the warble codec build.
Change-Id: I63eef2c33bf3ea31a135cd6336882b600723f946
2018-12-24 22:18:23 +01:00
Solomon Peachy
928557bb17 AAC bitstream format files support
Files with extension "aac" in ADTS or ADIF format are now playable.

Full credit goes to Igor Poretsky.

Change-Id: I413b34e15e5242fea60d3461966ae0984080f530
2018-12-22 20:12:10 -05:00
Solomon Peachy
9b9b30bd54 Realmedia related codecs fixes and enhancements
* More tolerance to the file format variations.
 * AC3 coded files in realaudio format are now playable

Full credit to Igor Poretsky

Change-Id: Id24e94bc00623e89fb8c80403efa92f69ab1e5d7
2018-12-22 20:12:10 -05:00
Solomon Peachy
b51995942e Improved seeking in a52 codec
(Patch by Igor Poretsky)

Change-Id: I0cdc2021b44f6cd6e76def190d9f04733b922454
2018-12-22 19:54:40 -05:00
William Wilgus
ed63ef077a Fix overlapping string region ape.c->read_ape_tags
Switch to strrchr to find the extension

Change-Id: Id7ea01ecc2e0553f560308f8b0fc53bd33b023e5
2018-12-08 20:30:12 +01:00
William Wilgus
69c6c77680 Fix speex warning lsp.c->lsp_to_lpc
I'm pretty sure this was a false positive

Change-Id: I0ab375d1d844b3d468c24888c371f588052e1ce9
2018-12-08 02:25:17 -06:00
Solomon Peachy
20b91a83d3 codecs: Fix elapsed time calculation for large files
In particular, this solves seeking glitches seen in ~6 hr mp3 files.

(Patch taken from Igor Poretsky's tree)

Change-Id: Id65b6726146b6d2d1a223e90b88e401d1b2d597a
2018-10-29 19:50:34 +01:00
Solomon Peachy
b1ee789f97 libmad: Back out a change that disabled optimization for libmad.
(Caused non-realtime playback on mips..)

Change-Id: I878229e16e31d49156f1ae71ab9c7bb627e4c17b
2018-09-02 11:55:39 -04:00
Cástor Muñoz
7442742208 iPod Classic: disable IRAM1
On Classic, IRAM1 (second 128Kb of a total of 256KB available IRAM) is
slower than DRAM. Codecs that actually are using regions of IRAM1 runs
faster when DRAM is used, so IRAM1 is disabled and only IRAM0 remains
enabled: 48KB for core and 80KB for codecs/plugins.

The next test_codec results shows how decode time is decreased:

file           boosted     unboosted
*.ra           ~1.5%       ~0.5%
*.mpc          ~21%        ~4.5%
*.ogg          ~0.5%       ~0%
nero_he*.m4a   ~8%         ~1%
nero*.m4a      ~25%        ~7%
wmapro*.wma    ~4.5%       ~0%
wma*.wma       ~25%        ~7%

In addition there is a small power save when IRAM1 HW is disabled.

Change-Id: I102adee11458e82037f23076d5d5956e23235de8
2018-07-30 18:50:27 -04:00
Marcin Bukat
d55680993d Agptek Rocker: Initial commit
Change-Id: I26b51106c7b1c36a603fba6d521e917d79b5a95b
2018-06-12 10:31:14 +02:00
Michael Sevakis
6c868dd48f Remove explicit 'enum codec_command_action' in codec API
Just use long so the compiler potentially doesn't complain about
use of other values not in the enum. It's also the type used
around the system for event ids.

Increase min codec API version.

No functional changes.

Change-Id: If4419b42912f5e4ef673adcdeb69313e503f94cc
2017-12-07 14:41:59 -05:00
Michael Sevakis
826f99e187 libpcm: Get unbranded structure tag out of my way.
No functional changes.

Change-Id: If372023cb605389a203a635b700eca20685ad49b
2017-11-06 20:06:08 -05:00
Michael Sevakis
a8e4b3a190 PBE+Surround: Localize some variables and fixup some flush ops
Change-Id: I9fba5b8cbf69d261a7ca1c66e080c08d2fc6d9db
2017-10-12 05:59:18 -04:00
Michael Sevakis
5eee28e37d Nitpick configuration code in a few DSP filters to fix some bugs
Most importantly is surround shouldn't operate in mono mode. Have it
watch and (de)activate itself on relevant format changes as it should.

Other changes to better handle buffer allocation failure.

PBE was set internally at 100 by default; SBZ.

Change-Id: I328e0b674e56751a255eae817d7892d685796b06
2017-10-12 04:44:55 -04:00
Amaury Pouly
3b7263be2d fix warning in vorbis
Change-Id: I01dd320ac7f4641caaef62363556ca7527dbee19
2017-09-17 15:09:39 +02:00
Amaury Pouly
ce39850e6b rbcodec: remove useless include
metadata.c does not need cuesheet.h, which in apps/ and has nothing to do with
rbcodec library.

Change-Id: I914a49e8c182f5c367d7db3479c2ff39565e5f07
2017-07-30 14:32:12 +02:00
Amaury Pouly
928d660a67 rbcodec: fix compilation in debug mode
Change-Id: I124cf59c641c2e161cc147b031d9bef5ef773dfb
2017-07-30 14:32:12 +02:00
Amaury Pouly
d7871914ac Fix dangerous casts
On Windows 64-bit, the size of long is 32-bit, thus any pointer to long cast is
not valid. In any case, one should use intptr_t and ptrdiff_t when casting
to integers. This commit attempts to fix all instances reported by GCC.
When relevant, I replaced code by the macros PTR_ADD, ALIGN_UP from system.h

Change-Id: I2273b0e8465d3c4689824717ed5afa5ed238a2dc
2017-02-04 17:24:47 +01:00
Amaury Pouly
16d1788356 Fix codecs in simulator builds on Windows
The mingw linker uses strlen() in some cases, and codeclib.c redefines it, that
leads to mingw runtime init to call into our strlen() and then ci->strlen() which
of course crashes. Apply the same fix as for malloc and friends: rename the symbol.

The codeclib.h include is necessary for normal builds.

Change-Id: Ifa85901a3e4a31cc0e10b4b905df348a239d5c99
2017-01-15 21:46:19 +01:00
Amaury Pouly
bbf4ff2c91 Fix DEBUG build codecs
In DEBUG build, the codec API struct is consider with DEBUG flag in apps/
but without DEBUG flah in rbcodecs/, leading to unmatched structure and horrible
crashes in some cases (mostly encoders). I have no idea why the codecs Makefile
removes the DEBUG flag (maybe for performance reasons?) but it cannot be right.

Change-Id: Idb2c5f66741408ec2939624590fc39c4cf69fc2b
2016-12-03 23:07:32 +01:00
Adam Sampson
1f8ea9fe27 Opus: update resume offset correctly while playing.
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-09-07 19:44:37 +02:00
Frank Gevaerts
c926a5269e Fix race conditions in parallel build.
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-05-28 17:41:32 +02:00
Frank Gevaerts
123346b86a _BSD_SOURCE is deprecated, and we're supposed to use _DEFAULT_SOURCE now.
Change-Id: Ia051bc758c8fe4002e222511fdc6be613cdd39e7
2016-03-18 21:27:15 +01:00
Cástor Muñoz
d68ecccd88 mp3_enc.c: fix MP3 recording at 32 kHz sample rate
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-07-17 01:03:38 +02:00
Udo Schläpfer
dbabd0d9c3 iBasso DX50/DX90: Major code cleanup and reorganization.
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-02-02 21:57:55 +01:00
Chiwen Chang
572b36a51a fix surround & pbe dsp crash
check handle before clean up buffer in flush().

Change-Id: I36a130c45c9f5dce97aa723ef98922b6935ead75
2015-01-30 20:06:00 +01:00
Chiwen Chang
30784cc262 fix pbe/haas surround dsps: surround_enabled, redo flush functions.
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-22 13:28:34 +11:00
Frank Gevaerts
163ca14e58 Enable buflib and core_alloc for warble.
Most of the work comes from http://gerrit.rockbox.org/r/#/c/1088/
by Thomas Jarosch.

Change-Id: Iaa673dad2388d1e44fc95ffaa14bafadc6158101
2015-01-19 21:30:03 +01:00
Chiwen Chang
3ae0f32ac3 three new DSPs
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-19 19:34:01 +01:00
Thomas Jarosch
2a3e1628a5 Limit more variables to file scope
Change-Id: I30219d626316776eb73b4205d63376fa3dbc6361
2015-01-11 21:40:51 +01:00
Thomas Jarosch
e7c282fed7 More standard conforming codec_realloc()
- Leave original ptr untouched if allocation fails
  (bail out early)
- Behave like malloc() in case ptr is NULL

Change-Id: Ib854ca19bd0e069999b7780d2d9a533ece705add
2014-12-27 17:33:24 +01:00
Michael Giacomelli
d924c83066 Fix warning in WMA Pro and remove a c++ comment.
Change-Id: Id9b50c1fdeca4d87f158da717de8958330f027ef
2014-11-28 23:04:50 +01:00
Michael Giacomelli
aa2c55e105 Fix FS#13009.
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-11-28 22:30:05 +01:00
Marcin Bukat
da417ab93d fix yellow
Change-Id: Ie3aa9b208e3f4f17d4d02f11f69839e9b381217d
2014-09-22 10:55:11 +02:00
nialv7
d392da8002 metadata: Add cuesheet embedded in ape tags.
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-09-22 10:20:39 +02:00
Michael Sevakis
5d31d3c3bc Fix last warning for Warble
Unused result warnings will have to be dealt with separately.

Change-Id: I00c45e28d4d43a5376745036e650ff8df576c2db
2014-08-30 01:50:22 -04:00
Michael Sevakis
da4938d6ee Get the last errors I hope!
Change-Id: Ia285b95480cc9ac6494b745d80892c4b1b912341
2014-08-30 01:29:18 -04:00
Michael Sevakis
528715a672 Fix warnings from 6ed0087
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-08-16 06:00:36 -04:00
Nils Wallménius
8e8671a73e libopus: use iram for more constants
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-13 14:19:54 +02:00
Nils Wallménius
888e05ec12 libopus: asm C_MUL for coldfire
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-13 11:49:34 +02:00
Nils Wallménius
9b7ec42403 Sync to upstream libopus
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-07-13 11:12:40 +02:00
Thomas Martitz
466441dc14 libmad: Use 32bit unsigned for requantize table.
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-04-15 23:49:07 +02:00
Michael Sevakis
31b7122867 Implement time-based resume and playback start.
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-10 04:12:30 +01:00
Thomas Martitz
68768260e8 Fix more reds.
Change-Id: I4b58dda0953b7f9799238c32b78037b0a5403c04
2014-03-03 20:26:08 +01:00
Thomas Martitz
c245de029d Fix various reds. Some includes needed fixup.
Change-Id: I4327740bae17054131feb917abdd58846c451988
2014-03-03 19:10:48 +01:00
Jack Whitham
ca423ed0e3 Proposed fix for FS#12878: Zero-length embedded album art prevents mp3 playback
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-23 17:55:15 +01:00
Nils Wallménius
e3c2ed7a71 Sync libopus to upstream release 1.1
Change-Id: I9fea7460fc33f60faff961b3389dd97b5191463c
2013-12-16 21:13:23 +01:00