videotestsrc: add bar pattern
authorThijs Vermeir <thijsvermeir@gmail.com>
Thu, 16 Sep 2010 15:14:20 +0000 (17:14 +0200)
committerThijs Vermeir <thijsvermeir@gmail.com>
Thu, 16 Sep 2010 15:14:20 +0000 (17:14 +0200)
Simple bar with foreground color on the background color

gst/videotestsrc/gstvideotestsrc.c
gst/videotestsrc/gstvideotestsrc.h
gst/videotestsrc/videotestsrc.c
gst/videotestsrc/videotestsrc.h

index bf6443c..227e0a9 100644 (file)
@@ -135,6 +135,7 @@ gst_video_test_src_pattern_get_type (void)
     {GST_VIDEO_TEST_SRC_SOLID, "Solid color", "solid-color"},
     {GST_VIDEO_TEST_SRC_BALL, "Moving ball", "ball"},
     {GST_VIDEO_TEST_SRC_SMPTE100, "SMPTE 100% color bars", "smpte100"},
+    {GST_VIDEO_TEST_SRC_BAR, "Bar", "bar"},
     {0, NULL, NULL}
   };
 
@@ -424,6 +425,9 @@ gst_video_test_src_set_pattern (GstVideoTestSrc * videotestsrc,
     case GST_VIDEO_TEST_SRC_SMPTE100:
       videotestsrc->make_image = gst_video_test_src_smpte100;
       break;
+    case GST_VIDEO_TEST_SRC_BAR:
+      videotestsrc->make_image = gst_video_test_src_bar;
+      break;
     default:
       g_assert_not_reached ();
   }
index ea564ca..ae63281 100644 (file)
@@ -58,6 +58,7 @@ G_BEGIN_DECLS
  * @GST_VIDEO_TEST_SRC_CHROMA_ZONE_PLATE: Chroma zone plate
  * @GST_VIDEO_TEST_SRC_BALL: Moving ball
  * @GST_VIDEO_TEST_SRC_SMPTE100: SMPTE test pattern (100% color bars)
+ * @GST_VIDEO_TEST_SRC_BAR: Bar with foreground color
  *
  * The test pattern to produce.
  *
@@ -98,7 +99,8 @@ typedef enum {
   GST_VIDEO_TEST_SRC_CHROMA_ZONE_PLATE,
   GST_VIDEO_TEST_SRC_SOLID,
   GST_VIDEO_TEST_SRC_BALL,
-  GST_VIDEO_TEST_SRC_SMPTE100
+  GST_VIDEO_TEST_SRC_SMPTE100,
+  GST_VIDEO_TEST_SRC_BAR
 } GstVideoTestSrcPattern;
 
 /**
index f7a8af6..1ffe074 100644 (file)
@@ -888,6 +888,33 @@ gst_video_test_src_smpte100 (GstVideoTestSrc * v, unsigned char *dest, int w,
 }
 
 void
+gst_video_test_src_bar (GstVideoTestSrc * v, unsigned char *dest, int w, int h)
+{
+  int j;
+  paintinfo pi = { NULL, };
+  paintinfo *p = &pi;
+  struct fourcc_list_struct *fourcc;
+
+  videotestsrc_setup_paintinfo (v, p, w, h);
+  fourcc = v->fourcc;
+  if (fourcc == NULL)
+    return;
+
+  fourcc->paint_setup (p, dest);
+
+  for (j = 0; j < h; j++) {
+    /* use fixed size for now */
+    int x2 = w / 7;
+
+    p->color = &p->foreground_color;
+    p->paint_tmpline (p, 0, x2);
+    p->color = &p->background_color;
+    p->paint_tmpline (p, x2, (w - x2));
+    videotestsrc_convert_tmpline (p, j);
+  }
+}
+
+void
 gst_video_test_src_snow (GstVideoTestSrc * v, unsigned char *dest, int w, int h)
 {
   int i;
index fbfb794..bea918c 100644 (file)
@@ -139,6 +139,8 @@ void    gst_video_test_src_ball         (GstVideoTestSrc * v,
                                         unsigned char *dest, int w, int h);
 void gst_video_test_src_smpte100        (GstVideoTestSrc * v,
                                          unsigned char *dest, int w, int h);
+void    gst_video_test_src_bar          (GstVideoTestSrc * v,
+                                         unsigned char *dest, int w, int h);
 extern struct fourcc_list_struct fourcc_list[];
 extern int n_fourccs;