From 7becef8f96aa821eca208b8e5ef7980da8963d12 Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Fri, 31 Mar 2006 17:52:36 +0000 Subject: [PATCH] Add tests and fix PAR caps issue to ximagesrc Original commit message from CVS: 2006-03-31 Zaheer Abbas Merali * Makefile.am: * configure.ac: * sys/ximagesrc/ximagesrc.c: (gst_ximagesrc_ximage_get), (gst_ximagesrc_get_caps), (gst_ximagesrc_class_init): * sys/ximagesrc/ximageutil.c: * tests/Makefile.am: * tests/icles/Makefile.am: * tests/icles/ximagesrc-test.c: (terminate_playback), (main): Add tests and fix PAR caps issue to ximagesrc --- Makefile.am | 4 +-- configure.ac | 6 ++-- sys/ximagesrc/ximagesrc.c | 11 ++++++-- sys/ximagesrc/ximageutil.c | 6 ++-- tests/Makefile.am | 11 ++++++++ tests/icles/Makefile.am | 12 ++++++++ tests/icles/ximagesrc-test.c | 65 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 tests/Makefile.am create mode 100644 tests/icles/Makefile.am create mode 100644 tests/icles/ximagesrc-test.c diff --git a/Makefile.am b/Makefile.am index d98da6e..4d6929d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,11 +8,11 @@ endif SUBDIRS = \ gst gst-libs sys ext \ - m4 common docs \ + m4 common docs tests \ $(SUBDIRS_EXAMPLES) DIST_SUBDIRS = \ - gst gst-libs sys ext m4 common docs examples + gst gst-libs sys ext m4 common docs examples tests EXTRA_DIST = \ gst-plugins-bad.spec depcomp \ diff --git a/configure.ac b/configure.ac index bea5b9c..91cc508 100644 --- a/configure.ac +++ b/configure.ac @@ -260,8 +260,8 @@ GST_PLUGINS_ALL="\ speed \ qtdemux \ xingheader \ - tta \ - " + tta \ + " dnl see if we can build C++ plug-ins if test "x$HAVE_CXX" = "xyes"; then @@ -869,6 +869,8 @@ docs/version.entities common/Makefile common/m4/Makefile m4/Makefile +tests/Makefile +tests/icles/Makefile ) AC_OUTPUT diff --git a/sys/ximagesrc/ximagesrc.c b/sys/ximagesrc/ximagesrc.c index 2edbfd7..95c54ba 100644 --- a/sys/ximagesrc/ximagesrc.c +++ b/sys/ximagesrc/ximagesrc.c @@ -68,7 +68,8 @@ static GstStaticPadTemplate t = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("video/x-raw-rgb, " "framerate = (fraction) [ 0, MAX ], " - "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ] ")); + "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ], " + "pixel-aspect-ratio = (fraction) [ 0, MAX ]")); enum { @@ -369,7 +370,9 @@ gst_ximagesrc_ximage_get (GstXImageSrc * ximagesrc) "width", G_TYPE_INT, xcontext->width, "height", G_TYPE_INT, xcontext->height, "framerate", GST_TYPE_FRACTION, ximagesrc->fps_n, ximagesrc->fps_d, - "pixel-aspect-ratio", GST_TYPE_FRACTION, xcontext->par, NULL); + "pixel-aspect-ratio", GST_TYPE_FRACTION, + gst_value_get_fraction_numerator (xcontext->par), + gst_value_get_fraction_denominator (xcontext->par), NULL); gst_buffer_set_caps (GST_BUFFER (ximage), caps); g_mutex_unlock (ximagesrc->x_lock); @@ -717,7 +720,9 @@ gst_ximagesrc_get_caps (GstBaseSrc * bs) "blue_mask", G_TYPE_INT, xcontext->b_mask_output, "width", G_TYPE_INT, xcontext->width, "height", G_TYPE_INT, xcontext->height, - "framerate", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1, NULL); + "framerate", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1, + "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1, + NULL); } static gboolean diff --git a/sys/ximagesrc/ximageutil.c b/sys/ximagesrc/ximageutil.c index 2c1149b..c9b7c56 100644 --- a/sys/ximagesrc/ximageutil.c +++ b/sys/ximagesrc/ximageutil.c @@ -140,12 +140,11 @@ ximageutil_xcontext_get (GstElement * parent, const gchar * display_name) xcontext = g_new0 (GstXContext, 1); xcontext->disp = XOpenDisplay (display_name); - + GST_DEBUG_OBJECT (parent, "opened display 0x%x", xcontext->disp); if (!xcontext->disp) { g_free (xcontext); return NULL; } - xcontext->screen = DefaultScreenOfDisplay (xcontext->disp); xcontext->screen_num = DefaultScreen (xcontext->disp); xcontext->visual = DefaultVisual (xcontext->disp, xcontext->screen_num); @@ -164,7 +163,6 @@ ximageutil_xcontext_get (GstElement * parent, const gchar * display_name) GST_DEBUG_OBJECT (parent, "X reports %dx%d pixels and %d mm x %d mm", xcontext->width, xcontext->height, xcontext->widthmm, xcontext->heightmm); - ximageutil_calculate_pixel_aspect_ratio (xcontext); /* We get supported pixmap formats at supported depth */ @@ -288,7 +286,7 @@ ximageutil_calculate_pixel_aspect_ratio (GstXContext * xcontext) xcontext->par = g_new0 (GValue, 1); g_value_init (xcontext->par, GST_TYPE_FRACTION); gst_value_set_fraction (xcontext->par, par[index][0], par[index][1]); - GST_DEBUG ("set xcontext PAR to %d/%d", + GST_DEBUG ("set xcontext PAR to %d/%d\n", gst_value_get_fraction_numerator (xcontext->par), gst_value_get_fraction_denominator (xcontext->par)); } diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..0658f01 --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,11 @@ +if USE_X +SUBDIRS_ICLES = icles +else +SUBDIRS_ICLES = +endif + +SUBDIRS = \ + $(SUBDIRS_ICLES) + +DIST_SUBDIRS = \ + icles diff --git a/tests/icles/Makefile.am b/tests/icles/Makefile.am new file mode 100644 index 0000000..b04651d --- /dev/null +++ b/tests/icles/Makefile.am @@ -0,0 +1,12 @@ +if USE_X +X_TESTS = ximagesrc_test + +ximagesrc_test_SOURCES = ximagesrc-test.c +ximagesrc_test_CFLAGS = $(GST_CFLAGS) +ximagesrc_test_LDFLAGS = $(GST_LIBS) +else +X_TESTS = +endif + +noinst_PROGRAMS = $(X_TESTS) + diff --git a/tests/icles/ximagesrc-test.c b/tests/icles/ximagesrc-test.c new file mode 100644 index 0000000..655d7b5 --- /dev/null +++ b/tests/icles/ximagesrc-test.c @@ -0,0 +1,65 @@ +/* GStreamer + * Copyright (C) <2006> Zaheer Abbas Merali + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +static GMainLoop *loop; + +static gboolean +terminate_playback (GstElement * pipeline) +{ + g_print ("Terminating playback\n"); + g_main_loop_quit (loop); + return FALSE; +} + +int +main (int argc, char **argv) +{ + GstElement *pipeline; + GstBus *bus; + GError *error = NULL; + + gst_init (&argc, &argv); + + pipeline = gst_parse_launch ("ximagesrc ! fakesink", &error); + if (error) { + g_print ("Error while parsing pipeline description: %s\n", error->message); + return -1; + } + + loop = g_main_loop_new (NULL, FALSE); + + bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + + /* We want to get out after */ + g_timeout_add (500000, (GSourceFunc) terminate_playback, pipeline); + + g_main_loop_run (loop); + + g_main_loop_unref (loop); + + return 0; +} -- 2.7.4