I spent some time implementing Theora video recording via libtheora. My implementation is currently quite slow, mainly because of two things:
- I'm rendering off-screen at the specified video resolution, rather than simply grabbing the current framebuffer and scaling. This yields higher quality, but at a much reduced recording speed.
- My RGB to Y'CbCr 4:2:0 conversion uses floating-point calculations and no SIMD.