Re: Theora on iPhone
"Timothy B. Terribrery" <[email protected]>
| Newsgroups | gmane.comp.multimedia.ogg.theora.devel |
|---|---|
| Message-ID | <[email protected]> |
Mihai Balea wrote: > Conversion from YUV to RGB is probably an order of magnitude less > intensive than Theora decoding, so if you got that working in realtime This is not as true as you think. Large portions of the Theora decoder operate on the compressed data, which requires significantly less memory bandwidth than that needed to access the full video frame, and memory bandwidth is often the bottleneck. Even for the steps that do operate on the full frame are organized to do so mostly from cache. While the Theora API includes a stripe callback function that can let you perform the YUV->RGB conversion while the freshly decoded YUV data is still in cache, the RGB data is twice as large, and you still have to get _that_ into SDL somehow. I could easily see it taking up more than 10% of decoding time if implemented directly in C. > - Pixel shaders. If you can offload to GPU, then by all means do it. > I'm not familiar with the PowerVR MBX chip that's in the iphone to > know whether it has the chops, but I doubt it. Sadly, AFAIK the iPhone only supports OpenGL ES 1.1. Version 2.0 is required for pixel shaders. > You might actually want to profile the last two, I'm not sure that the > SIMD version would be so much faster... Straightforward C does relatively poorly with such code. There's lots of excess overhead due to reading data a byte a time, promoting all intermediate calculations to ints, etc. Doesn't the iPhone support some adaptation of Quicktime? I would assume that this is the way one is expected to do video playback on it.