[mythtv] mythfrontend: xvideo bad colors

Dewey Garrett dgarrett at panix.com
Sun Feb 26 04:59:58 UTC 2006


If I start X (xvideo enabled) and use 
   mplayer -vo xv
   xine --video-driver=xv
I can play an mpg file or use /dev/video0 directly with no
problems and very low cpu usage.

If I start mythfrontend (with xvideo enabled) the colors are wrong
-- skin tones are bluish, lips are greenish for instance.  (The
colors are normal if I start X with xvideo disabled.)

After I stop mythfrontend, then xine and mplayer show the same
wrong colors as with mythfrontend.  Correct colors for xine and
mplayer are restored only by restarting X.

So it seems that when mythfrontend starts, it sets something for
xvideo that messes up color rendition.  The color error  persists
after mythfrontend stops with other applications.

OS:                   2.6.15-gentoo-r1
Mythtv version:       0.19
Video grabber:        PVR500
Motherboard:          MSI RS480M-IL
CPU:                  Sempron 64 2800
Integrated graphics:  Radeon Xpress 200G
lspci:                01:05.0 VGA compatible controller:
                      ATI Technologies Inc RS480 [Radeon Xpress 200G Series]
ati-drivers:          8.22.5 (fglrx)

Xorg.0.log excerpts:
    (II) Loading extension XVideo
    (II) Loading extension XVideo-MotionCompensation
    	RADEON XPRESS 200 (RS400 5A41), RADEON XPRESS 200M (RS400 5A42),

xvinfo excerpt:
                X-Video Extension version 2.2
                  Adaptor #0: "ATI Radeon Video Overlay"
                    Number of image formats: 4
                    id: 0x32595559 (YUY2)
                    id: 0x59565955 (UYVY)
                    id: 0x32315659 (YV12)
                    id: 0x30323449 (I420)

grep for xv in mythfrontend log messages:
  VideoOutputXv: ctor
  VideoOutputXv: Pixel dimensions: Screen 1280x999, window 640x480
  VideoOutputXv: Estimated display dimensions: 342x271 mm Aspect: 1.26199
  VideoOutputXv: Estimated window dimensions: 171x130 mm Aspect: 1.31538
  VideoOutputXv: @ j=3 Looking for flag[s]: XvInputMask XvImageMask 
  VideoOutputXv: Adaptor: 0 has flag[s]: XvInputMask XvImageMask 
  VideoOutputXv: Grabbed xv port 67
  VideoOutputXv: XVideo surface found on port 67
  VideoOutputXv: XVideo Format #0 is 'YUY2'
  VideoOutputXv: XVideo Format #1 is 'UYVY'
  VideoOutputXv: XVideo Format #2 is 'YV12'
  VideoOutputXv: XVideo Format #3 is 'I420'
  VideoOutputXv: Using XVideo Format 'I420'
  VideoOutputXv: CreateShmImages(32): XJ: (480,480)
  VideoOutputXv: ClearAfterSeek()
  VideoOutputXv: dtor
  VideoOutputXv: Closing XVideo port 67

For a test, I edited videoout_xv.cpp to force xv_chroma to YV12:
|  bool VideoOutputXv::InitXVideo()
|  ...
|          foundimageformat = true;
|          xv_chroma = GUID_I420_PLANAR;
|          VERBOSE(VB_IMPORTANT, LOC + "dng+ forcing GUID_YV12_PLANAR");
|          xv_chroma = GUID_YV12_PLANAR;

But the colors were not improved.

Any ideas?

More information about the mythtv-dev mailing list