Hello, I'm interested in getting vorbis up and running on the PlayStation 2. I'm an official developer, not a ps2 linux developer, but the issues should be roughly the same. I've gotten the code to compile but our setup (intentionally) doesn't have libm so I'm seeing references to several double-precision math functions. Some of the issues I'm seeing: - As reported on this list a few years ago(!), longs are 64 bits. That's really not a big deal as long as it's not part of a binary file. Perhaps the lingering references to "longs" in the code could be changed to ogg_int32_t instead for clarify? It looks like it's mostly in ogg.h. - I added the following clause to os_types.h before the final config clause (we're using PC-hosted tools and don't have autoconf) #elif defined(R5900) /* PS2 EE */ typedef long ogg_int64_t; typedef int ogg_int32_t; typedef unsigned ogg_uint32_t; typedef short ogg_int16_t; #else - There are a lot of double-precision constants in the source code, which by default would cause the expression to promote to double-precision arithmetic. Unfortunately doubles are done entirely with software emulation on the PS2, so are a performance no-no. I can turn on a compiler option to treat all constants as single-precision, but the code already uses a mix of single- and double-precision constants so it would seem possible to fix it in the source. M_PI is used in several places, and it's a double-precision constant; perhaps we could use an ogg_pi #define to isolate this dependency? - Several initialization functions use double-precision arithmetic just to set up lookup tables. Are things stabilized enough now that we could add the option of making them statically tabled in the code? Also, in my experience LUT's on the PS2 are often slower than a quick taylor series because of the high cost of D$ misses on that platform. I know I'm showing up out of nowhere with a lot of questions, and I apologize for that. I am interested in contributing improvements back into the code base if that makes sense; ultimately, I would like it if other PS2 developers could grab the "standard" cut of vorbis and have it run optimally "out of the box". I took a brief look at Tremor, but the PS2 has more floating-point performance than integer performance, and it has a separate vector unit that could run tasks in parallel with the main CPU. The IOP on the PS2 is a MIPS 3000 at 36 Mhz, and I've been told that there's just not enough horsepower there so I'm sticking with floating-point for now. Thanks, -David Etherton Rockstar San Diego --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
On Wed, 5 Feb 2003, David Etherton wrote:> Hello, > > I'm interested in getting vorbis up and running on the PlayStation 2. I'm > an official developer, not a ps2 linux developer, but the issues should be > roughly the same. I've gotten the code to compile but our setup > (intentionally) doesn't have libm so I'm seeing references to several > double-precision math functions.Then you should use the Tremor source. <p>Nicolas --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
On Wed, 5 Feb 2003 12:58:44 -0800, David Etherton wrote: Hi David:>I'm interested in getting vorbis up and running on the PlayStation 2. I'm >an official developer, not a ps2 linux developer, but the issues should be >roughly the same. I've gotten the code to compile but our setup >(intentionally) doesn't have libm so I'm seeing references to several >double-precision math functions.I'm the guy who did the "official" port of Ogg Vorbis for the PS2 Linux platform. I won't pretend to be a PS2 development expert, but I'd be happy to share what information I've collected.>I took a brief look at Tremor, but the PS2 has more floating-point >performance than integer performance, and it has a separate vector unit that >could run tasks in parallel with the main CPU. The IOP on the PS2 is a MIPS >3000 at 36 Mhz, and I've been told that there's just not enough horsepower >there so I'm sticking with floating-point for now.The Vorbis code is probably the way to go, using one (or both) vector units to handle the most-called transformation functions. I looked into all of this about 6 months ago, running the code through a profiler to determine which methods the code spent the most time in. I've actually been searching through my records recently looking for this information (your the second official PS2 developer to ask about this this week (the other one was via private e-mail)). If you'd like, when I find my notes I'd be happy to send them your way (I haven't worked on this stuff for months, because there didn't appear to be much -- if any -- interest in this within either the Vorbis or PS2 communities, besides which I have my own Open Source project I administer (the jSyncManager -- ref: http://www.jsyncmanager.org), and haven't had alot of time to work on optimizations and such). As well, if you're interested in working on this in a completely Open Source framework, I can put you in touch with that "other PS2 developer" (if they're likewise interested), and we can all pool our resources. Brad BARCLAY <p>=-=-=-=-=-=-=-=->From the OS/2 WARP v4.5 Desktop of Brad BARCLAY. E-Mail: yaztromo@acm.org Web: http://www.jsyncmanager.org <p>--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.