Rockbox

This is the bug/patch tracker for Rockbox. Click here for more information.

Quick links: Bugs · Patches · Rockbox frontpage

Tasklist

FS#10071 - Trying out Tremolo optimisations for tremor on ARM

Attached to Project: Rockbox
Opened by Dave Hooper (stripwax) - Sunday, 29 March 2009, 22:36 GMT+2
Task Type Patches
Category Codecs
Status Unconfirmed
Assigned To No-one
Player Type PortalPlayer-based
Severity Low
Priority Normal
Reported Version Version 3.1
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Private No

Details

This first patch is a merge of Tremolo's bitwise.c and bitwiseARM.s code into rockbox libtremor. As a naive version of the merge, I have taken out the previous rockbox optimisations to huffman decode (originally implemented in  FS#6848 ). Versus svn, decoding speed is worse with this patch. However something that incorporates both  FS#6848  and the Tremolo bitwise optimisations for little-endian ARM may well turn out better. This patch is seriously not committable, the arch-specific stuff is not done cleanly in the headers or the makefile
   libtremor-tremolo-bitwise-merge.patch (38.7 KiB)
 apps/codecs/libtremor/codebook.c     |  150 ------
 apps/codecs/libtremor/SOURCES        |    1 
 apps/codecs/libtremor/bitwise.c      |  821 ++++++++++++++++++++++++++++++-----
 apps/codecs/libtremor/ogg.h          |   90 ---
 apps/codecs/libtremor/libtremor.make |    9 
 5 files changed, 760 insertions(+), 311 deletions(-)

This task depends upon

Comment by Dave Hooper (stripwax) - Sunday, 29 March 2009, 22:40 GMT+2
including missing bitwiseARM.s from previous file. should go into apps/codecs/libtremor
Quick note on the patch - bitwise.c and bitwiseARM.s are unchanged from the Tremolo versions (so contains all the original testing code etc by the Tremolo author) - not a very clean patch in any case.
Comment by Dave Hooper (stripwax) - Sunday, 29 March 2009, 23:18 GMT+2
According to test_codec - vorbis_500 worse by about 9MHz over current svn, vorbis_096 worse by about 2MHz over current svn
Comment by Dave Hooper (stripwax) - Sunday, 29 March 2009, 23:24 GMT+2
Slightly saner / smaller version of patch
   libtremor-tremolo-bitwise-merge-v2.patch (19 KiB)
 apps/codecs/libtremor/codebook.c     |  150 +------------------------
 apps/codecs/libtremor/SOURCES        |    1 
 apps/codecs/libtremor/bitwise.c      |  204 ++++++++++++++++-------------------
 apps/codecs/libtremor/ogg.h          |   90 +++------------
 apps/codecs/libtremor/libtremor.make |    9 -
 5 files changed, 133 insertions(+), 321 deletions(-)

Comment by Dave Hooper (stripwax) - Monday, 30 March 2009, 00:30 GMT+2
Updated patch to preserve the vorbis_book_decodevv_add_2ch_even and decode_packed_block functions from  FS#6848  (but significantly does NOT include the optimisation of the packed reads that were implemented in decode_packed_block in  FS#6848  i.e. we always just call back to decode_packed_entry_number ). Still noticeably worse than svn forall but the lowest bitrates (e.g. vorbis_500 worse by ~6MHz; vorbis_096 worse by 1.4MHz)

Also attaching runs of test_codec from current svn build (all codecs actually) and run of test_codec on vorbis with just this patch


   libtremor-tremolo-bitwise-merge-v3.patch (15.5 KiB)
 apps/codecs/libtremor/codebook.c     |   64 ----------
 apps/codecs/libtremor/SOURCES        |    1 
 apps/codecs/libtremor/bitwise.c      |  204 ++++++++++++++++-------------------
 apps/codecs/libtremor/ogg.h          |   90 +++------------
 apps/codecs/libtremor/libtremor.make |    9 -
 5 files changed, 125 insertions(+), 243 deletions(-)

   all-svn-r20572.txt (3.8 KiB)
   VORBIS_tremolo_bitwise-v3.txt (0.7 KiB)

Loading...