[Bug 787582] New: videotestsrc: -I and +Q regions are wrong

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Sep 12 11:51:58 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=787582

            Bug ID: 787582
           Summary: videotestsrc: -I and +Q regions are wrong
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: All
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: julien.isorce at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

The pipeline gst-launch-1.0 videotestsrc ! ximagesink videotestsrc !
xvimagesink 
does not output the same colors for some of the bottom left regions:  Blue vs
Purple. To be more precise the -I (in-phase) and +Q (quadrature) regions are
wrong.

Same with:

gst-launch-1.0 videotestsrc ! "video/x-raw, format=BGRx" ! ximagesink
videotestsrc ! "video/x-raw, format=NV12" ! videoconvert ! ximagesink

The issue comes from
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst/videotestsrc/videotestsrc.c#n71
, the coeffs for yuv and rgb do not match for -I and +Q. I.e. on the +Q,
YCbCr(16, 235, 198) is dark purple but RGB(0, 128, 255) is blue.

With git blame I found that -I and +Q regions in videotestsrc have been
introduced by commit 768253dc (year 2002). The values for yuv and rgb mentioned
above are like this since that commit.

Then the -I and +Q coeffs for bt601 have been copied from bt709 in commit
b97e582c (year 2008).

According to http://avisynth.nl/index.php/ColorBars_theory, this should be:

--- a/gst/videotestsrc/videotestsrc.c
+++ b/gst/videotestsrc/videotestsrc.c
@@ -67,8 +67,8 @@ static const struct vts_color_struct
vts_colors_bt709_ycbcr_100[] = {
   {63, 102, 240, 255, 255, 0, 0, (64 << 8)},
   {32, 240, 118, 255, 0, 0, 255, (32 << 8)},
   {16, 128, 128, 255, 0, 0, 0, (16 << 8)},
-  {16, 198, 21, 255, 0, 0, 128, (16 << 8)},     /* -I ? */
-  {16, 235, 198, 255, 0, 128, 255, (16 << 8)},  /* +Q ? */
+  {16, 157, 99, 255, 0, 54, 98, (16 << 8)},     /* -I ? */
+  {16, 172, 146, 255, 75, 17, 126, (16 << 8)},  /* +Q ? */
   {0, 128, 128, 255, 0, 0, 0, 0},
   {32, 128, 128, 255, 19, 19, 19, (32 << 8)},
 };
@@ -97,8 +97,8 @@ static const struct vts_color_struct
vts_colors_bt601_ycbcr_100[] = {
   {81, 90, 240, 255, 255, 0, 0, (64 << 8)},
   {41, 240, 110, 255, 0, 0, 255, (32 << 8)},
   {16, 128, 128, 255, 0, 0, 0, (16 << 8)},
-  {16, 198, 21, 255, 0, 0, 128, (16 << 8)},     /* -I ? */
-  {16, 235, 198, 255, 0, 128, 255, (16 << 8)},  /* +Q ? */
+  {16, 158, 95, 255, 0, 58, 98, (16 << 8)},     /* -I ? */
+  {16, 175, 148, 255, 75, 15, 126, (16 << 8)},  /* +Q ? */
   {-0, 128, 128, 255, 0, 0, 0, 0},
   {32, 128, 128, 255, 19, 19, 19, (32 << 8)},
 };

but this does not make yuv and rgb outputs to look the same either.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list