[mythtv-users] Colors inverted

Michael Kurtz myth at friendz.de
Sun Oct 14 16:00:56 UTC 2007

On Sun, 2007-10-14 at 01:51 -0600, Robert Johnston wrote: 
> On 10/14/07, Michael Kurtz <myth[at]friendz.de> wrote: 
> > Hi... 
> > 
> > My problem is that Live TV or recordings played with MythTV have colours 
> > up. People have blue skin and things that should be blue are displayed red 
> > or brown. Everything else is displayed as expected. Thumbnail previews are 
> > unaffected and play with correct colour response. That's why I think the 
> > problem is related with xv. If I disable xv in my xorg.conf I don't get 
> > videos playing. 
> <snip /> 
> > Anybody knows a solution to this problem ? 
> Are you getting these problems with any other software (MPlayer, for 
> instance). If so, then yes, it's an XV problem. If not, it could be 
> that your version of Myth is compiled for MMX extensions which aren't 
> working (Or something similar), as Myth requires MMX for colourspace 
> conversions to work properly (IIRC). 
>It could also be that XVideo picture controls are enabled and the hue 
>is set incorrectly. If hitting "F" in playback and adjusting the hue 
>fixes the problem run "mythfrontend -v playback" play a video and then 
>submit a ticket with the log attached and describe the problem, 
>including what you must adjust the hue to before the picture looks ok. 
>-- Daniel 
Hitting F and adjusting the hue doesn't really change the problem. It seems 
that the colours blue and red are simply swapped. Adjusting the hue leeds to 
horrible neon green ;-) . I found the following in the list but I didn't find 
the code in the specified file ... :

" The previous nvidia drivers had I420 video (the format it's using 
internally) flipped with YV12. Basically, you're seeing blue because the two 
color fields are swapped. If it still doesn't work, do this:
Replace line 746 (848 in current cvs) of NuppelVideoPlayer.cpp (the memcpy) 
with this:
memcpy(X11videobuf, vbuffer[rpos], video_width * video_height);
memcpy(X11videobuf + video_width * video_height, vbuffer[rpos] +
              video_width * video_height * 5 / 4, video_width *
              video_height / 4);
memcpy(X11videobuf + video_width * video_height * 5 / 4,
             vbuffer[rpos] + video_width * video_height, video_width *
             video_height / 4);
That _will_ fix it, as it swaps the two color fields in memory before the 
buffer's sent to the video card for output.  It'll revert back to funky 
colors when it's paused, but the fix for that is similar.
I think I shall add a 'PeopleAreBlue' setting to the config file (it'll 
basically just do that memcpy change).." 

Where do I have to look for this "PeopleAreBlue" Option? 

Thanks in advance...

More information about the mythtv-users mailing list