Age | Commit message (Collapse) | Author |
|
Implements double-buffered volume, balance and prescaling control in
the main PCM driver when HAVE_SW_VOLUME_CONTROL is defined ensuring
that all PCM is volume controlled and level changes are low in latency.
Supports -73 to +6 dB using a 15-bit factor so that no large-integer
math is needed.
Low-level hardware drivers do not have to implement it themselves but
parameters can be changed (currently defined in pcm-internal.h) to work
best with a particular SoC or to provide different volume ranges.
Volume and prescale calls should be made in the codec driver. It should
appear as a normal hardware interface. PCM volume calls expect .1 dB
units.
Change-Id: Idf6316a64ef4fb8abcede10707e1e6c6d01d57db
Reviewed-on: http://gerrit.rockbox.org/423
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
|
|
Will need it soon enough.
Combine the contents of all the various fixedpoint.h files.
Not moving fixedpoint.c for now since I'm not sure where it
should be and it causes some dependency issues.
Change-Id: Ideacbca2ca78f9158c2b114b113c274f68e908d5
|
|
Prevents cutoff of tracks, especially short ones:
* Extend looped tracks by fade length to fade at start of loop repeat.
* No fade occurs for non-repeating track only having an intro.
* Uses id3.tail_trim field to store fade duration.
Use libGME built-in elapsed time reporting instead of custom calculation:
* libGME already reports in milliseconds.
* Don't advance time counter when Repeat == One. It just runs the progress
over the length limit.
Fix a comment about sample rate and set the reported bitrate to be
accurate for 44.1 kHz stereo.
Change-Id: I3ede22bda0f9a941a3fef751f4d678eb0027344c
|
|
Flush decoder state and frame out buffer upon a forced stop to prevent
a short burst of stale audio from the previously decoding track from
playing when skipping from one WMA track to another.
Change-Id: I24c910c5dbd83caed2510db68d9e39a474332a79
Reviewed-on: http://gerrit.rockbox.org/406
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
|
|
Instead of 3 cfg lines per eq band there is now a single line
for each:
<config name>: <cutoff/center freq>, <q>, <gain>
In addition, the config value names make a bit more sense.
The old settings are still readable but config.cfg and any new
settings files will be written with the new config values. (The
old settings will be removed completly sometime after the next
stable release).
Also a slight rework of the advanced EQ menu UI
Change-Id: I9008658d36ded442a5f2f825916df42a3934cbef
Reviewed-on: http://gerrit.rockbox.org/394
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
|
|
- A 10 Band EQ for Rockbox w/ presets adapted
from VLC
- frequency stepping at 32, 64, 125, 250, 500
1K, 2K, 4K, 8K, 16K
Change-Id: I85ad84d70a534edfc66c6ad9af8a76f022a02ec7
Reviewed-on: http://gerrit.rockbox.org/386
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
|
|
Instead specify explicit library dependencies for codecs and plugins.
|
|
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>
|
|
The old GCC version currently required (sbox-arm-linux-gcc 3.4.4
release) apparently has trouble with function pointers used as
static array initializers when using indexed initializers + ranges
(ie. [A ... B] = fn).
Change-Id: I494c2b607e4d93a9893264749d0ac257fb54ce3b
|
|
I'm not 100% sure that the rounding of denormals is correct. As compared to foobar2000,
some samples are off by +1 LSB. However, since I can't output 24 bit PCM easily with
rockbox, I'm not sure if this is due to a bug or just how rockbox rounds. In practice
I don't think it matters so I'm just going to commit this for now.
Change-Id: Ic0792fcb172e4369a5512d202121c2b918b36079
|
|
avoids overflows for very long files
Change-Id: Idb1e9a411bd9007cfddbbd2d3dcf127645fa9a7c
|
|
Change-Id: Ia3fba4ba2c46a202c48f3a9b7db0cba9f75b6a50
|
|
doesn't make any speed diff on pp
Change-Id: Ia6484e2a2bbf72d33a583470918c0fa267fd9b97
|
|
Change-Id: I2d64fb20b2526d912eb665df0df4e87459676a92
|
|
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>
|
|
Saves 1.1MHz decoding a 64kbps test file on h300 (cf) and
0.2MHz on c200 (pp)
Change-Id: If9ed03f2e3787ee497eababda4013fbb5d395946
|
|
on a target with a disk.
Change-Id: I37c875c9cd014eb61fe5232dab0f4b8f15f057dd
Reviewed-on: http://gerrit.rockbox.org/319
Tested-by: Thiago Okada <thiago.mast3r@gmail.com>
Reviewed-by: Frederik Vestre <freqmod@gmail.com>
Tested-by: Frederik Vestre <freqmod@gmail.com>
|
|
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>
|
|
saves 2.7MHz decoding a 64kbps test file on h300
Change-Id: Id63791f79b44ed398ce5d341a5f5212d9a30282e
|
|
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>
|
|
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>
|
|
speeds up decoding of a 64kbps test file by 2MHz on h300
Change-Id: I437d05278fe1c495715cf0e3477f9960d1df9d3a
|
|
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>
|
|
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
|
|
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>
|
|
speeds up decoding of a 64kbps test file by 14MHz on h300 (cf)
and 1MHz on c200 (pp)
Change-Id: I852cb66808676ea51109423f5b70cfc8782dd109
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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
|
|
Change-Id: I370f43f2e25e03650681c207908f79cdea744d99
|
|
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
|
|
saves about 3MHz when decoding a 64kbps test file
Change-Id: I10f47173ccb78e60e364662220d1db2f78dd5fdd
|
|
Speeds up decoding of a 64kbps test file by 20MHz on h300 (cf)
and 1MHz on c200 (pp)
Change-Id: Ia2adc0a3ad86abce8f948062eb53a8ac14c2cdf2
|
|
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
|
|
Change-Id: I96033f42e0c3096ec9d779e9f8ca46570f981ab0
|
|
Change-Id: I16fa9b439f8da5b9b8a4f17040487b9535078ec5
|
|
Change-Id: Ie5ab9d893a7d2c6ec1aca6c295e29ab34eacd656
|
|
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>
|
|
Change-Id: Ia2fc42eb0d36399e6856d3a957dd1634f019ca6a
|
|
Change-Id: I5495c4d7d165cac15016d3233b85bbe5497ea3e1
|
|
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
|
|
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
|
|
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
|
|
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
|
|
This reverts commit f358228ea1bc66804e9ea12b65c2593c6c1fe8ee.
|
|
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
|
|
Based on http://src.gnu-darwin.org/ports/multimedia/helixplayer/work/hxplay-1.0.7/audio/resampler/hermite.c
Change-Id: Id87565a060aa2383701e7c2f3ea023c7555ad9ef
|