[maemo-developers] N800 & Video playback

From: Daniel Stone daniel.stone at nokia.com
Date: Wed May 2 12:47:36 EEST 2007
On Tue, May 01, 2007 at 08:49:20PM +0300, ext Siarhei Siamashka wrote:
> On Tuesday 01 May 2007 17:49, Kalle Vahlman wrote:
> > For testing, I fabricated some video with gstreamer:
> >
> > which resulted in 640x480 at 30fps and 800x480 at 30fps videos. For some
> > reason 320x240 and 352x288 refused to play with:
> >
> > X11 error: BadValue (integer parameter out of range for operation)
> > MPlayer interrupted by signal 6 in module: flip_page while gstreamer did
> > play them just fine. Also the Nokia_N800.avi and  NokiaN93.avi died in the
> > same way. 
> This X11 error on video playback start and also sometimes on switching
> fullscreen/windowed mode is a known problem [1] reported in this mailing list.
> If MPlayer dies on start, usually trying to start it again succeeds. So these
> 320x240 and 352x288 videos could be played as well if you were a bit more
> persistent :)

Resizing is a bit tricky.  Most video hardware lets you use the hardware
to clip, so if you move it beyond the edge of the screen, it just
happily ignores anything beyond the hardware's bounds.  Unfortunately
for us, attempting to move a video surface off-screen (even by just a
few pixels) triggers a hardware lockup.

Given that we can't display the frame at all, we send BadValue (there
are a couple of other conditions where this is possible, but this is the
main one).  I don't see the point in returning Success when no video is
drawn at all.  So, I guess you could hack mplayer's error handler to
just ignore BadValues from Xv(Shm)PutImage, unless you get more than
five or ten in a row, say.

> As Daniel replied in one of the followup messages, it is most likely some race
> condition. The question is which code is a suspect. Is it MPlayer Xv video
> output code that has been around for ages and worked fine on different systems
> or relatively new Xv extension code from N800 xserver? In addition, a previous
> revision of N800 firmware had a serious bug [2] related to video playback. It
> should be noted, that MPlayer needed only about 1 minute to freeze on the
> initial N800 firmware. So the problem could be identified much more easily
> if MPlayer was included in the standard set of tests done by Nokia QA staff
> before each new IT OS release. Surely, Nokia is only interested in a
> properly working xvimagesink for the software included in IT OS by default.
> But testing with more client applications can improve overall xserver quality.

Bear in mind that, as you've hinted at, the only part of the Xv code
which is custom is the _output_ code.  We're using the standard X server
implementation (as used by tens of millions of people) for the protocol
decode and standard semantics, the standard KDrive layer for extended
stuff (as used by god-knows-how-many embedded and consumer devices), and
then the only part we have to play is taking frames and putting them on
the screen.

Due to some restrictions (as above), we have to deliberately error out
on some operations.  But errors like that tend to say 'you've hit a
hardware restriction, I can't do this', rather than 'you hit one of the
many random return BadValues we put in this weird code just to confuse

Also, bear in mind that a lot of the initial instability was due to the
DSP.  The video was actually rather stable when you played without
sound, although now the situation is somewhat reversed with the DSP
being pretty steady now, and the new YUV420 code having complicated

> I have also submitted this patch to maemo bugzilla, hopefully it (or its
> modification) can get included into the next version of N800 firmware:
> https://maemo.org/bugzilla/show_bug.cgi?id=1278

I'll merge it with some changes.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.maemo.org/pipermail/maemo-developers/attachments/20070502/4860cb34/attachment.pgp 
More information about the maemo-developers mailing list