From: <ds...@ke...> - 2007-04-04 02:45:19
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: ds Date: Wed Apr 04 2007 02:45:15 UTC Log message: * gst/videotestsrc/gstvideotestsrc.c: * gst/videotestsrc/gstvideotestsrc.h: * gst/videotestsrc/videotestsrc.c: * gst/videotestsrc/videotestsrc.h: Add a test pattern called "circular", which has concentric rings with varying radial frequency. The main purpose of this pattern is to test fidelity loss in a filter or scaler element. Notably, this pattern is scale invariant, and is optimally viewed with a width (and height) of 400. Modified files: . : ChangeLog gst/videotestsrc: gstvideotestsrc.c gstvideotestsrc.h videotestsrc.c videotestsrc.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3250&r2=1.3251 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst/videotestsrc/gstvideotestsrc.c.diff?r1=1.107&r2=1.108 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst/videotestsrc/gstvideotestsrc.h.diff?r1=1.33&r2=1.34 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst/videotestsrc/videotestsrc.c.diff?r1=1.34&r2=1.35 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/gst/videotestsrc/videotestsrc.h.diff?r1=1.20&r2=1.21 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3250 retrieving revision 1.3251 diff -u -d -r1.3250 -r1.3251 --- ChangeLog 3 Apr 2007 11:10:52 -0000 1.3250 +++ ChangeLog 4 Apr 2007 02:45:02 -0000 1.3251 @@ -1,3 +1,15 @@ +2007-04-03 David Schleef <ds...@sc...> + + * gst/videotestsrc/gstvideotestsrc.c: + * gst/videotestsrc/gstvideotestsrc.h: + * gst/videotestsrc/videotestsrc.c: + * gst/videotestsrc/videotestsrc.h: + Add a test pattern called "circular", which has concentric + rings with varying radial frequency. The main purpose of this + pattern is to test fidelity loss in a filter or scaler element. + Notably, this pattern is scale invariant, and is optimally viewed + with a width (and height) of 400. 2007-04-03 Wim Taymans <wi...@fl...> Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com> Index: gstvideotestsrc.c RCS file: /cvs/gstreamer/gst-plugins-base/gst/videotestsrc/gstvideotestsrc.c,v retrieving revision 1.107 retrieving revision 1.108 diff -u -d -r1.107 -r1.108 --- gstvideotestsrc.c 23 Oct 2006 12:46:41 -0000 1.107 +++ gstvideotestsrc.c 4 Apr 2007 02:45:02 -0000 1.108 @@ -113,6 +113,7 @@ {GST_VIDEO_TEST_SRC_CHECKERS2, "Checkers 2px", "checkers-2"}, {GST_VIDEO_TEST_SRC_CHECKERS4, "Checkers 4px", "checkers-4"}, {GST_VIDEO_TEST_SRC_CHECKERS8, "Checkers 8px", "checkers-8"}, + {GST_VIDEO_TEST_SRC_CIRCULAR, "Circular", "circular"}, {0, NULL, NULL} }; @@ -243,6 +244,9 @@ case GST_VIDEO_TEST_SRC_CHECKERS8: videotestsrc->make_image = gst_video_test_src_checkers8; break; + case GST_VIDEO_TEST_SRC_CIRCULAR: + videotestsrc->make_image = gst_video_test_src_circular; + break; default: g_assert_not_reached (); } Index: gstvideotestsrc.h RCS file: /cvs/gstreamer/gst-plugins-base/gst/videotestsrc/gstvideotestsrc.h,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- gstvideotestsrc.h 23 Oct 2006 12:46:41 -0000 1.33 +++ gstvideotestsrc.h 4 Apr 2007 02:45:03 -0000 1.34 @@ -50,6 +50,7 @@ * @GST_VIDEO_TEST_SRC_CHECKERS2: Checkers pattern (2px) * @GST_VIDEO_TEST_SRC_CHECKERS4: Checkers pattern (4px) * @GST_VIDEO_TEST_SRC_CHECKERS8: Checkers pattern (8px) + * @GST_VIDEO_TEST_SRC_CIRCULAR: Circular pattern * * The test pattern to produce. */ @@ -64,7 +65,8 @@ GST_VIDEO_TEST_SRC_CHECKERS1, GST_VIDEO_TEST_SRC_CHECKERS2, GST_VIDEO_TEST_SRC_CHECKERS4, - GST_VIDEO_TEST_SRC_CHECKERS8 + GST_VIDEO_TEST_SRC_CHECKERS8, + GST_VIDEO_TEST_SRC_CIRCULAR } GstVideoTestSrcPattern; typedef struct _GstVideoTestSrc GstVideoTestSrc; Index: videotestsrc.c RCS file: /cvs/gstreamer/gst-plugins-base/gst/videotestsrc/videotestsrc.c,v retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- videotestsrc.c 14 Nov 2006 23:34:19 -0000 1.34 +++ videotestsrc.c 4 Apr 2007 02:45:03 -0000 1.35 @@ -30,6 +30,7 @@ #include <string.h> #include <stdlib.h> +#include <math.h> static unsigned char random_char (void) @@ -901,6 +902,91 @@ } +#undef SCALE_AMPLITUDE +void +gst_video_test_src_circular (GstVideoTestSrc * v, unsigned char *dest, + int w, int h) +{ + int i; + int j; + paintinfo pi = { NULL, }; + paintinfo *p = π + struct fourcc_list_struct *fourcc; + struct vts_color_struct color; + static uint8_t sine_array[256]; + static int sine_array_inited = FALSE; + double freq[8]; +#ifdef SCALE_AMPLITUDE + double ampl[8]; +#endif + int d; + if (!sine_array_inited) { + for (i = 0; i < 256; i++) { + sine_array[i] = + floor (255 * (0.5 + 0.5 * sin (i * 2 * M_PI / 256)) + 0.5); + } + sine_array_inited = TRUE; + } + p->width = w; + p->height = h; + fourcc = v->fourcc; + if (fourcc == NULL) + return; + fourcc->paint_setup (p, dest); + p->paint_hline = fourcc->paint_hline; + color = vts_colors[COLOR_BLACK]; + p->color = &color; + for (i = 1; i < 8; i++) { + freq[i] = 200 * pow (2.0, -(i - 1) / 4.0); + { + double x; + x = 2 * M_PI * freq[i] / w; + ampl[i] = sin (x) / x; + for (i = 0; i < w; i++) { + for (j = 0; j < h; j++) { + double dist; + int seg; + dist = + sqrt ((2 * i - w) * (2 * i - w) + (2 * j - h) * (2 * j - + h)) / (2 * w); + seg = floor (dist * 16); + if (seg == 0 || seg >= 8) { + color.Y = 255; + } else { + double a; + d = floor (256 * dist * freq[seg] + 0.5); + a = ampl[seg]; + if (a < 0) + a = 0; + color.Y = 128 + a * (sine_array[d & 0xff] - 128); +#else + color.Y = sine_array[d & 0xff]; + } + color.R = color.Y; + color.G = color.Y; + color.B = color.Y; + p->paint_hline (p, i, j, 1); +} static void paint_setup_I420 (paintinfo * p, unsigned char *dest) { Index: videotestsrc.h RCS file: /cvs/gstreamer/gst-plugins-base/gst/videotestsrc/videotestsrc.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- videotestsrc.h 23 Oct 2006 12:46:41 -0000 1.20 +++ videotestsrc.h 4 Apr 2007 02:45:03 -0000 1.21 @@ -91,6 +91,8 @@ unsigned char *dest, int w, int h); void gst_video_test_src_checkers8 (GstVideoTestSrc * v, +void gst_video_test_src_circular (GstVideoTestSrc * v, + unsigned char *dest, int w, int h); extern struct fourcc_list_struct fourcc_list[]; extern int n_fourccs; |