1
0
Fork 0
forked from len0rd/rockbox
Fork of rockbox tailored for ipod classic
Find a file
Cástor Muñoz b320bbaf61 iPod Classic: YUV to RGB optimizations for ARM v5+
Optimizes YUV to RGB conversion using ARMv5 multiply-accumulate
intructions for operations and data tables for saturation.

This first patch set includes the three versions i have developed.
Although iPod Classic need to use the latest version to reach 30fps,
old versions may serve other targets.

All versions are based on current SVN algorithm (round->scale->add)
using the same coefficients, so output results are identical.

Version history:

  ARMv4:
   - use all available registers to calculate four pixels within each
     loop iteration.
   - avoid LDR interlocks.

  ARMv5TE:
   - use ARMv5TE+ 1-cycle multiply-accumulate instructions.

  ARMv5TE_WST:
   - use data tables (256 bytes) for RBG565 saturation.

Benchmarks results using iPod Classic (ARM926EJ 216Mhz):

                 size    test_fps (1)    mpegplayer (2)
                 bytes   YUV  YUV1/4     average  min/max
                 -----   -----------     ------------------
  SVN-20141107   528     27.8  110.0     11035  10864/13397
  ARMv4          480     28.8  114.0      9767   9586/12126
  ARMv5TE        468     29.7  117.5      8751   8584/11118
  ARMv5TE_WST    544     33.6  133.0      6355   6316/6403

  (1) boosted
  (2) play full elephants_dream_320x240.mpg file (15693 frames) using
      mpegplayer, patched RB measures YUV to RGB565 frame conversion
      time (microseconds)

  Compared against the WST version, the ARMV5TE version w/o cached
  saturation tables is slower, but it is smaller and i have doubts
  about the power consumption.

Change-Id: I2b6a81804636658d85a1bb104ccb2055e77ac120
Reviewed-on: http://gerrit.rockbox.org/1034
Reviewed-by: Cástor Muñoz <cmvidal@gmail.com>
Tested: Cástor Muñoz <cmvidal@gmail.com>
2014-12-10 20:39:34 +01:00
android Don't require a specific BUILD_TOOLS_VERSION. 2014-09-25 00:26:25 +02:00
apps Fix remaining errors in Polish translation. 2014-11-10 14:09:11 +01:00
backdrops Add Cabbiev2 port for 128x96x16 targets (Samsung YH-820), made by me. 2014-03-27 19:50:48 +00:00
bootloader Fix USB speed detection 2014-10-04 11:57:09 +02:00
debian Prepare new maemo release 2013-03-10 12:12:38 +01:00
docs Add myself to committers list 2014-11-18 02:31:24 +01:00
firmware iPod Classic: YUV to RGB optimizations for ARM v5+ 2014-12-10 20:39:34 +01:00
flash Fix some more straggling stuff 2014-08-08 03:23:29 -04:00
fonts Remove superfluous executable bits on a bunch of files. 2011-06-08 14:22:03 +00:00
gdb Generate C file / header for svn version string 2010-05-27 09:41:46 +00:00
icons wpsbuild: Rewrite to fix various issues and support .fms 2012-06-10 21:20:36 +02:00
lib Fix warning in WMA Pro and remove a c++ comment. 2014-11-28 23:04:50 +01:00
manual Manual: add missing actions in Sokoban for the Packard Bell Vibe 500. 2014-10-22 15:31:20 +02:00
packaging Prepare unofficial pandora release 2013-03-10 14:09:30 +01:00
rbutil Introducing Targets iBasso DX50 & iBasso DX90 2014-09-18 18:19:01 +02:00
tools Introducing Targets iBasso DX50 & iBasso DX90 2014-09-18 18:19:01 +02:00
uisimulator Get the last errors I hope! 2014-08-30 01:29:18 -04:00
utils hwstub/atj213x: add clock setup to crt0.S 2014-11-28 19:39:38 +01:00
wps lcd-24bit: Introduce a 24-bit mid-level LCD driver 2014-06-21 00:15:53 +02:00
.gitattributes Add a gitattributes file for the migration. 2011-12-01 14:14:59 +00:00
.gitignore Add *.o and *.a to .gitignore 2012-05-16 11:26:22 +02:00

               __________               __   ___.
     Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
     Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
     Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
     Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
                       \/            \/     \/    \/            \/

Build Your Own Rockbox

1. Clone 'rockbox' from git (or extract a downloaded archive).

   $ git clone git://git.rockbox.org/rockbox

     or

   $ tar xjf rockbox.tar.bz2

2. Create a build directory, preferably in the same directory as the firmware/
   and apps/ directories. This is where all generated files will be written.

   $ cd rockbox
   $ mkdir build
   $ cd build

3. Make sure you have sh/arm/m68k-elf-gcc and siblings in the PATH. Make sure
   that you have 'perl' in your PATH too. Your gcc cross compiler needs to be
   a particular version depending on what player you are compiling for. These
   can be acquired with the rockboxdev.sh script in the /tools/ folder of the
   source, or will have been included if you've installed one of the
   toolchains or development environments provided at http://www.rockbox.org/

   $ which sh-elf-gcc
   $ which perl

4. In your build directory, run the 'tools/configure' script and enter what
   target you want to build for and if you want a debug version or not (and a
   few more questions). It'll prompt you. The debug version is for making a
   gdb version out of it. It is only useful if you run gdb towards your target
   Archos.

   $ ../tools/configure

5. *ploink*. Now you have got a Makefile generated for you.

6. Run 'make' and soon the necessary pieces from the firmware and the apps
   directories have been compiled, linked and scrambled for you.

   $ make
   $ make zip

7. unzip the rockbox.zip on your music player, reboot it and
   *smile*.

If you want to build for more than one target, just create several build
directories and create a setup for each target:

   $ mkdir build-fmrecorder
   $ cd build-fmrecorder
   $ ../tools/configure

   $ mkdir build-player
   $ cd build-player
   $ ../tools/configure

Questions anyone? Ask on the mailing list. We'll be happy to help you!