From 8d14994bb5a2dfdd32bb1b8f2ac3935e45a14e4a Mon Sep 17 00:00:00 2001 From: Thijs Vermeir Date: Thu, 16 Sep 2010 17:14:20 +0200 Subject: [PATCH] videotestsrc: add bar pattern Simple bar with foreground color on the background color --- gst/videotestsrc/gstvideotestsrc.c | 4 ++++ gst/videotestsrc/gstvideotestsrc.h | 4 +++- gst/videotestsrc/videotestsrc.c | 27 +++++++++++++++++++++++++++ gst/videotestsrc/videotestsrc.h | 2 ++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gst/videotestsrc/gstvideotestsrc.c b/gst/videotestsrc/gstvideotestsrc.c index bf6443c..227e0a9 100644 --- a/gst/videotestsrc/gstvideotestsrc.c +++ b/gst/videotestsrc/gstvideotestsrc.c @@ -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 (); } diff --git a/gst/videotestsrc/gstvideotestsrc.h b/gst/videotestsrc/gstvideotestsrc.h index ea564ca..ae63281 100644 --- a/gst/videotestsrc/gstvideotestsrc.h +++ b/gst/videotestsrc/gstvideotestsrc.h @@ -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; /** diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c index f7a8af6..1ffe074 100644 --- a/gst/videotestsrc/videotestsrc.c +++ b/gst/videotestsrc/videotestsrc.c @@ -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 = π + 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; diff --git a/gst/videotestsrc/videotestsrc.h b/gst/videotestsrc/videotestsrc.h index fbfb794..bea918c 100644 --- a/gst/videotestsrc/videotestsrc.h +++ b/gst/videotestsrc/videotestsrc.h @@ -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; -- 2.7.4