Commit graph

80 commits

Author SHA1 Message Date
Rafaël Carré
2c00cb5e83 wma: move inline functions into .h file
use 'static inline' instead of GCC extension 'inline'
some GCC don't support this (android NDK for example)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27679 a1c6a512-1295-4272-9138-f99709370657
2010-08-03 17:41:34 +00:00
Mohamed Tarek
b1fefcf3e9 Modify WMA to produce non-interleaved stereo output (FS#11503 by me). speeds up wma by 3.5MHz on CF and 2.2MHz on ARM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27591 a1c6a512-1295-4272-9138-f99709370657
2010-07-28 12:45:21 +00:00
Nils Wallménius
fa15494ab8 libwma: void pointer voodoo to get rid ov strict aliasing warnings
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27463 a1c6a512-1295-4272-9138-f99709370657
2010-07-17 10:57:40 +00:00
Nils Wallménius
87b29215d5 libwma: Reuse a static buffer that was unused while decoding lsp files for some lsp related tables.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27462 a1c6a512-1295-4272-9138-f99709370657
2010-07-17 10:40:00 +00:00
Nils Wallménius
331460c1f5 libwma: Reduce size of runtab and levtab buffers, only one set can get the worst case size so make the other set the second worst case size.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27459 a1c6a512-1295-4272-9138-f99709370657
2010-07-17 08:57:30 +00:00
Nils Wallménius
f2a1d92030 Remove unused 2kB buffer and some dead code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27458 a1c6a512-1295-4272-9138-f99709370657
2010-07-17 08:49:21 +00:00
Michael Giacomelli
b9e7c18dda Use codeclib version of the ffmpeg bitstream code for wma rather then ancient hacked up version.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27432 a1c6a512-1295-4272-9138-f99709370657
2010-07-15 17:14:56 +00:00
Mohamed Tarek
7aaae54afc - Modify metadata/asf.c to use libasf.
- Modify the files in libwma to use libasf.
- Remove apps/codecs/libwma/asf.h since it's not used now.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25783 a1c6a512-1295-4272-9138-f99709370657
2010-05-02 18:27:01 +00:00
Dave Hooper
42774d3128 Merge from branches/mdctexp - faster ifft+imdct in codec lib
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24712 a1c6a512-1295-4272-9138-f99709370657
2010-02-17 00:49:53 +00:00
Nils Wallménius
b9d7f98f8c Move av_log2 function and asociated table to the codec lib, remove 3 identical implementations, always have LUT in iram (gives a *tiny* speedup on coldfire), make the clz based function return the same value as the non clz based function for 0 input to be safe (slows down flac ~2% on the gigabeat S)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23858 a1c6a512-1295-4272-9138-f99709370657
2009-12-05 16:47:43 +00:00
Michael Giacomelli
e4fb3dc14c Commit unrolled version of WMA's exponent decode taken from latest ffmpeg. Gives a 1% speedup @ 192kbps.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22871 a1c6a512-1295-4272-9138-f99709370657
2009-10-02 00:47:15 +00:00
Mohamed Tarek
c74319b2f4 Fix red.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22338 a1c6a512-1295-4272-9138-f99709370657
2009-08-15 22:20:25 +00:00
Mohamed Tarek
adf3f09251 Move bitstream.[ch] to codecs/lib/ffmpeg_bitstream.[ch] to avoid duplicate copies across codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22337 a1c6a512-1295-4272-9138-f99709370657
2009-08-15 22:06:42 +00:00
Michael Giacomelli
5bd339c9f9 Clean up a lot of old and ugly comments. Wrap some long lines. Remove unneeded fixed point function. Move some fixed point math functions out of wmadeci. No functional changes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22077 a1c6a512-1295-4272-9138-f99709370657
2009-07-28 22:19:53 +00:00
Michael Giacomelli
3866755d28 Remove unused variable and assignment.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21304 a1c6a512-1295-4272-9138-f99709370657
2009-06-15 22:36:57 +00:00
Tom Ross
e7afeff072 Sync some changes found in ffmpeg plus a spelling correction I forgot to commit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19503 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 06:40:46 +00:00
Tom Ross
c3615119ba Don't read a full byte if less than 8 bits are available. The change doesn't fix any problem samples, but the current code makes no sense. Also some spelling corrections in debugfs and comments.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19502 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 06:16:22 +00:00
Michael Giacomelli
6a635b20da Wrap some of the more ridiculously long lines introduced in the previous revision. Whitespace changes only.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19501 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 05:53:28 +00:00
Michael Giacomelli
2557251351 Correctly implement remaining portions of ffmpeg's r8627 that I'd forgotten about. This fixes a table overflow in low bitrate files that use noise coding, and in theory should be substantial improvement, but I haven't found any files were it makes a difference.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19500 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 05:43:58 +00:00
Michael Giacomelli
7a0baa3aa5 Fix occasional glitch when switching from stereo to mono tracks due to uninitialized m/s coding flag.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19498 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 02:38:35 +00:00
Michael Giacomelli
d909eee0ce Commit fix by Tom Ross in FS#7488 wherein a silly mistake noise coding initialization is corrected. This sample alone has probably resulted in more WMA fixes then all other combined and I suspect there will still be at least one more.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19496 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 01:49:27 +00:00
Michael Giacomelli
0301ed5594 Fix bug where a mono file using noise coding would be corrupted if it was played immediately after a stereo files using noise coding due to incorrect initialization of the decoder state. Thanks to Tom Ross for pointing out that initialization was incomplete on these files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19494 a1c6a512-1295-4272-9138-f99709370657
2008-12-20 01:38:34 +00:00
Michael Giacomelli
1620d1fd03 Correct poor assumption on my part that WMA frames are 2048 samples long. Fixed problems with sample rates < 44.1khz. Fixes FS#9242 and FS#9439.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18805 a1c6a512-1295-4272-9138-f99709370657
2008-10-14 01:41:26 +00:00
Michael Giacomelli
46f85c4c54 Combine the Vorbis, WMA and AAC IMDCT functions and put them into the codeclib. Combined IMDCT is now based on existing Tremor transform. Reduces CPU for 192k AAC by 21MHz on Coldfire, and 5MHz on PP5024. WMA and Vorbis should have no functional changes since they already used this code. Further optimization is possible and would benefit all 3 codecs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18412 a1c6a512-1295-4272-9138-f99709370657
2008-09-04 18:02:10 +00:00
Michael Giacomelli
d016402fec Actually put the output in IRAM this time by combining some buffers that weren't used at the same time.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18231 a1c6a512-1295-4272-9138-f99709370657
2008-08-10 02:31:01 +00:00
Jens Arnold
ee39863459 Speed up WMA decoding on coldfire (14% speedup with a 128kbps test file).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18228 a1c6a512-1295-4272-9138-f99709370657
2008-08-09 22:32:34 +00:00
Michael Giacomelli
1334738071 Use Tremor IMDCT for WMA. Gives a ~20% speedup on ARM and coldfire. All my test samples gave equivilent or better accuracy (>>16 bit), but there may still be problems. Code becomes somewhat less readable since the IMDCT has bits of Vorbis in it, but this is not a serious issue and the old ffmpeg transform remains in SVN if anyone wants it. Also, WMA now passes Vorbis as the fastest transform codec on ARM, although MPC remains the fastest lossy codec overall.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18084 a1c6a512-1295-4272-9138-f99709370657
2008-07-17 17:43:49 +00:00
Michael Giacomelli
95fb20b7a8 Fix warning due to typo on my part.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17948 a1c6a512-1295-4272-9138-f99709370657
2008-07-05 22:55:09 +00:00
Michael Giacomelli
2a75a9045c More WMAv1 fixes by Rafael Carre.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17943 a1c6a512-1295-4272-9138-f99709370657
2008-07-05 00:44:01 +00:00
Michael Giacomelli
a06f651c3e Put the WMA windowing and output buffer into IRAM on targets with > 96KB of it. Improves 192k WMA decoding speed by about 2MHz on PP5024, and maybe saves some more when applying DSP.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17853 a1c6a512-1295-4272-9138-f99709370657
2008-06-28 18:56:19 +00:00
Michael Giacomelli
dab9fa1ef7 Fix for WMAv1 decoding suggested by Rafael Carre. I don't think anyone out there will ever use V1, but its worth having correct code for its own sake.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17782 a1c6a512-1295-4272-9138-f99709370657
2008-06-24 15:17:14 +00:00
Michael Giacomelli
e7999873f5 Fix mistake in previous WMA commit. Also update comments to reflect changes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17202 a1c6a512-1295-4272-9138-f99709370657
2008-04-21 00:46:55 +00:00
Michael Giacomelli
82dc8175cf Make the WMA decoder less noisy in the sim.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17014 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 02:32:48 +00:00
Michael Giacomelli
231f0c208d Let the console know when the huffman tables have overflown. This should never happen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17012 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 02:11:14 +00:00
Michael Giacomelli
4a808073c7 Amazingly, I've only been initing about 1/2 the huffman table entries needed to actually decode a WMA file for the last 8 months and yet somehow never noticed. Fixes FS#8713, FS#8606 and probably a lot of other files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17011 a1c6a512-1295-4272-9138-f99709370657
2008-04-07 02:01:44 +00:00
Michael Giacomelli
03f1b98531 Fix misleading debug statement.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16838 a1c6a512-1295-4272-9138-f99709370657
2008-03-27 01:40:16 +00:00
Michael Giacomelli
5730da2ba8 Apply last fall's exponent fix to WMA v1 files as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16114 a1c6a512-1295-4272-9138-f99709370657
2008-01-19 23:00:50 +00:00
Michael Giacomelli
dadd80a8a6 If seek fails, don't insert nonsense for the current position. Also, make one of the error messages a bit more clear.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16002 a1c6a512-1295-4272-9138-f99709370657
2008-01-06 02:50:01 +00:00
Thom Johansen
9a1a2fd686 Oversight in syncing on my end, sorry.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15184 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 10:14:31 +00:00
Thom Johansen
6e4aa260d0 Add Coldfire and ARM assembler for "reverse multiply and copy" function too. Gives big speedup on Coldfire, small on ARM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15183 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 10:09:21 +00:00
Thom Johansen
fffc257897 Woops, movem.l needs other order.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15178 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 00:48:00 +00:00
Thom Johansen
00662a235c Add Coldfire assembler for window and add function, yielding a nice speedup. Tweak ARM assembler version of same routine to act the same as the Coldfire version. Remove an error condition that newer ffmpegs do not bail out on. Files requiring this new behaviour have been observed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15177 a1c6a512-1295-4272-9138-f99709370657
2007-10-18 00:28:10 +00:00
Marcoen Hirschberg
b8753ffdaa move structures around in the header files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14941 a1c6a512-1295-4272-9138-f99709370657
2007-10-01 13:46:07 +00:00
Marcoen Hirschberg
b2abd67671 remove unused struct member and variable
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14777 a1c6a512-1295-4272-9138-f99709370657
2007-09-20 12:32:39 +00:00
Marcoen Hirschberg
1ddef375df move (i)MDCT and FFT code to separate files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14776 a1c6a512-1295-4272-9138-f99709370657
2007-09-20 12:27:24 +00:00
Marcoen Hirschberg
cd5edbe52c small cleanups
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14772 a1c6a512-1295-4272-9138-f99709370657
2007-09-20 10:50:59 +00:00
Jens Arnold
20444c47a8 Fix warning.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14577 a1c6a512-1295-4272-9138-f99709370657
2007-09-02 11:06:29 +00:00
Michael Giacomelli
a514c60fd0 Apparently, negative exponents are possible when decoding exponential VLC. Should fix occasional glitches that happened in files of all bitrates.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14571 a1c6a512-1295-4272-9138-f99709370657
2007-09-02 03:28:49 +00:00
Michael Giacomelli
153d74443a Clean up iMDCT coefficient calculations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14451 a1c6a512-1295-4272-9138-f99709370657
2007-08-24 20:02:50 +00:00
Michael Giacomelli
8159b9ee9a Faster Q1.31 multiply for ARM. Add some ARM asm windowing code. Simply replacing c code with loop unrolled + load/store multiple instructions makes a surprising difference on PP. Also, add comments to the windowing code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14365 a1c6a512-1295-4272-9138-f99709370657
2007-08-16 03:33:15 +00:00