Hello,
I am developing a DTV playback software running on Windows Mobile.
I used an ARM optimized H264 decoder (from a Professional codec vendor), and
process AV sync and SDL video/audio render by myself.
Thanks to http://www.dranger.com/ffmpeg/, it is a very good guide to handle
these stuff.
Now the software works on Windows Mobile Phone (I use a HTC touch diamond
with Qualcomm ARM11 inside), except CPU seems overloaded for both H264
decoding and Video Rendering. I have to drop some decoded frames from time
to time to keep AV synchronized, so that the user experience is bad.
I checked and make sure Hardware YUVOverlay is not supported on this ARM11
based qualcomm platform. So I use GAPI which is already well supported by
SDL.
Considering H.264 decoder is ARM optimized, I think what 's left to optimize
should be video render.
In a few details, it includes:
– YUV2RGB (YUV420 to RGB565)
– Scale (2x , this HTC touch features VGA resolution screen)
– Rotation (to Landscape, DTV H264 video is 320 * 240 )
– copy processed YUV data into video framebuffer
The current SDL implementation of YUV2RGB is well optimized by lookup
table.
I have no idea whether the algorithm for other steps can still be optimized
much for ARM.
Hope anyone can input something.
What’s worth mentioned is I have tried another commercial playback software
(incl. decoding/av sync/av render ) on the same mobile phone, the
performance is really amazing , even a lot of CPU MIPS still available.
Hard to figure out how they can make it.
Thanks in advance.
I am not English-native and hope you can catch me. I may explain more for
anything unclear.
Xinghua