[Angstrom-distro-users] movies on a Zaurus?
chick at computergeek.freeserve.co.uk
Mon Mar 10 15:06:28 CET 2008
OK, the c1000 and c3x000 NATIVE resolution is
480x640 - 480 WIDE by 640 HIGH, NOT 640 wide by 480 high.
So when you encode a video at 640x480, and try to play with -vo pxa, it
will try to open a framebuffer of size 640x480, which is too big, as
the biggest supported is 480x640.
I put in some fairly OK rotation support into the mplayer pxa driver,
but this is software 0 there is no hardware support. I *ONLY* bothered
with this in 240x320 mode, as the zaurus DOES NOT have the cpu to play
480x640 movies at a good frame rate - so there is no point.
You should get very good results with video of 320x240 size, encoded
just about any way, with more or less any audio format, as long as the
bitrate is 44.1kHz or 48kHz. If the audio is 32kHz it will play really
badly - check this by putting the -noaudio (might be -nosound, can't
remember) flag to mplayer. This is fixable by using you .asoundrc to
software resample from 32kHz to 44.1kHz before giving to the hardware.
I have tested using .asoundrc to do this and it works. I think you can
also get mplayer to do this in software too.
To get the pxa driver to do rotation and set the resolution to 240x320
you need to use the -vm flag.
If you use the -vm flag it will auto rotate the video to match the
screen. It will also crop the video to the middle of the screen.
So the following should get you good quality video:
mplayer -vo pxa -vm -quiet -double -framedrop -noaspect file
You may also see less "tearing" if you do:
mplayer -vo pxa -vm -quiet -double -framedrop -noaspect -noslice file
(it might be -noslices, can't remember)
Now for the 640x480 video. There are 3 problems:
1 - the video overlay uses uncached memory. The frame buffer driver
needs to be updated to allow the use of cached memory with double
buffering and a mechanism to flush the cache.
2 - when using 480x640 resolution, the refresh rate is set to be very
high. This uses much SDRAM bandwidth. Also the bottom layer screen
depth is 16bit - again this uses lots of bandwidth - it could be
reduced whilst playing moves full screen. This needs a new mode added
to the kernel, and maybe a change to the pxa fb driver to allow the
depth to be changed without freeing the screen buffer.
3 - the current pxa mplayer driver enables the "text" overlay, used by
mpalyer to draw the icons and time indications etc all the time. This
wastes more DMA bandwidth. The driver needs to be updated to only
enable this overlay (overlay1) when something is on screen.
More information about the Angstrom-distro-users