GNOME Bugzilla – Bug 361587
wrong colors when playing a video when using xvimage sink
Last modified: 2006-10-12 08:10:33 UTC
Please describe the problem: all videos played get their colors shifted. (that is, red becomes blue, and so on) it's apparently related to I420 fourcc caps. (YV12 works, I420 doesn't) Steps to reproduce: gst-launch playbin uri=file://xxx.avi Actual results: Expected results: Does this happen every time? yes Other information: here is a log when the problem is present: =================== 0:00:00.541284000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1479:gst_xvimagesink_xcontext_get:<videosink-actual-sink> X reports 1440x900 pixels and 373 mm x 231 mm 0:00:00.541459000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1407:gst_xvimagesink_calculate_pixel_aspect_ratio: calculated pixel aspect ratio: 1,009199 0:00:00.541574000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1422:gst_xvimagesink_calculate_pixel_aspect_ratio: Decided on index 0 (1/1) 0:00:00.541665000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1430:gst_xvimagesink_calculate_pixel_aspect_ratio: set xcontext PAR to 1/1 0:00:00.541986000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1136:gst_xvimagesink_get_xv_support: Found 1 XV adaptor(s) 0:00:00.542163000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1153:gst_xvimagesink_get_xv_support: XV Adaptor ATI Radeon AVIVO Video with 4 ports 0:00:00.542734000 7808 0x80a7140 DEBUG xvimagesink xvimagesink.c:1348:gst_xvimagesink_get_xv_support: Generated the following caps: video/x-raw-yuv, format=(fourcc)YV12, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-yuv, format=(fourcc)I420, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw-rgb, endianness=(int)4321, depth=(int)32, bpp=(int)32, blue_mask=(int)-16777216, green_mask=(int)-16777216, red_mask=(int)-16777216, width=(int)[ 1, 4096 ], height=(int)[ 1, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ] 0:00:00.660941000 7808 0x80f1960 DEBUG xvimagesink xvimagesink.c:1762:gst_xvimagesink_setcaps:<videosink-actual-sink> intersection returned video/x-raw-yuv, format=(fourcc)I420, width=(int)320, height=(int)180, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1 ======== now, if I add in the code a workaround, near xvimagesink.c:1306 case XvYUV: if (formats[i].id == GST_MAKE_FOURCC ('I','4','2','0')) break; then the format is removed from the list, "YV12" is chosen instead, and everything works as expected. (now I have no idea if this is a Xv bug, an ati bug, a xvimagesink bug, a colorspace converter bug, as I have no idea what those fourcc mean precisely... )
Which graphics hardware is this? Which driver are you using? This is the 2nd report like this that I've seen. I'm pretty sure it's a driver bug, since it's announcing that it supports I420, we're giving it I420, and it's drawing it as YV12 (which is the same as I420 but with the U & V planes flipped) Pretty sure this is a dupe of bug #357741
it's indeed a duplicate of bug #357741. I'm using: (II) ATI Proprietary Linux Driver Version Identifier:8.29.6 (II) ATI Proprietary Linux Driver Release Identifier: LGDr8.29g1 (II) ATI Proprietary Linux Driver Build Date: Sep 19 2006 16:28:05 (II) ATI Proprietary Linux Driver Build Information: autobuild-rel-r6-8.29.1.1.2.3-driver-lnx-x86-x86_64-294118 (--) Chipset MOBILITY RADEON X1600 (M56 71C5) found xvimagesink.c:1153:gst_xvimagesink_get_xv_support: XV Adaptor ATI Radeon AVIVO Video with 4 ports (and it's with ubuntu6.06)
*** This bug has been marked as a duplicate of 357741 ***