• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category Codecs
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by freqmod - 2006-06-27

FS#5607 - Speex codec interface (&library)

Tested on iPod video with gcc 3.4.3. (GCC 4.0.3 on iPod gives me the sound of silence).
Gcc 4.0.3 works with sound using the simulator on x86_64 (with the same target).
Logf gives some messages, and printf is used too (if SIMULATOR is defined).
Based on speex SVN from week 21.06.2006.
Uses arm4 assembly if ARM_CPU is defined.

Seeking and changing tracks work.
Seeks in the start backwards so you loose a bit of playback.
Vorbis metadata tags are parsed.

Includes a little workaround for a segmentation fault when using crossfade.

Decodes NB&WB speex files (up to 16kHz) realtime on iPod video.

Patch against rockbox CVS as of 25.06.2006.

Closed by  safetydan
2007-02-09 10:22
Reason for closing:  Accepted
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407

Checked in to SVN as revision 12241. Cheers.

Fix for skipping in the beginning of playback (caused by reallocation in libogg)

I have tried, and would very much like to see it ported to Tremor/framing, but the memory management code caused segmentation faults when libogg was working so I was not able to figure it out.

Pach must depends on speex.v003.patch

You’ll have to remove all (2) printf’s in apps/codecs/libogg/framing.c to make it compile on non simulated targets.

It’s unlikely to get included (in my opinion) unless you resolve the GCC 4 things, since that’s what we use for our iPod builds.
Is there any clue to what’s causing it, or is it more an issue of GCC being crazy?

Any change to get this patch available as an already compiled experimental build for the iPod mini 2nd gen? I have the gcc version 4.0.0 (Apple Computer, Inc. build 5026). It would be interesting to see how the Dual 80 MHz ARM 7TDMI processors inside perform with Speex if at all.

Removed (in a way) the silence for (stereo) using gcc 4 on ipod by editing apps/codecs/libspeex/math_approx.c:~106: change spx_sqrtf to be like:
float spx_sqrtf(float arg)

      if(arg==1.0) return 1.0;
return spx_sqrt(arg); // <---------- this is the line to be added

#if 0
……… #endif

This patch no longer applies to CVS (probably due to the SID codec being added). Would you be able to update it, preferably as a single patch against CVS?

New patch applies against current CVS (as of 2006.07.21 ~18.00 CET). Includes a better (but not very good) sterio square root function, please use mono speex files if possible. Seeking is not improved and it is somewhat flaky, especially in short (about 1 min) files.

Patch (to apply to to get better stereo sound

Fixes speed (& incorperates sterio imporvement). Now speex files encoded with speexenc –vbr –agc –comp 9 –quality 5 (and source files 32kHz mono) decodes nearly realtime (with pich 90% on ipod), which means that they are listenable on a happy day :)

Patch is against speex.v004 patched sources

v005: 32kHz UWB decodes 100% on ipod (gcc4) (with no peak meaters), skips if menues are used.
16kHz WB decodes realtime on ipod (gcc4) with boost half the time.
Crossfade works without workaround.
speex.c confirms to rockbox text format guidelines.

Patch against cvs 2006.8.3.

Not tested on big endian processors, use update be_int & le_int to use #if*def ROCKBOX_BIG_ENDIAN to have a chance.

Wont work with cvs due changes in id3.c and playback.c

Sync with Speex SVN & rockbox CVS, updated to compile without errors with gcc 4.0. (UWB, gets a little slower (just not realtime on iPod)).

in apps/codecs/libspeex/vq.c change:
#elif defined(SHORTCUTS) && (defined(ARM4_ASM) || defined(ARM5E_ASM))
#elif (defined(ARM4_ASM) || defined(ARM5E_ASM))
to make uwb work realtime

Fixed assembly and synced to cvs.

should be better makefiles

This last patch is broken quite severely, could you please upload one that adds Speex support, not removes it? :)

I quite agree. I didn’t see this before now, but now i am uploading a new synced (afaik working patch)

Any chance of a new working version?

This should work (tested on iPod, but it may be some faults in the diffing).
use ‘patch -p0 < patch (unzipped)’ to apply


Available keyboard shortcuts


Task Details

Task Editing