Add tests and fix PAR caps issue to ximagesrc
authorZaheer Abbas Merali <zaheerabbas@merali.org>
Fri, 31 Mar 2006 17:52:36 +0000 (17:52 +0000)
committerZaheer Abbas Merali <zaheerabbas@merali.org>
Fri, 31 Mar 2006 17:52:36 +0000 (17:52 +0000)
Original commit message from CVS:
2006-03-31  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* 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
configure.ac
sys/ximagesrc/ximagesrc.c
sys/ximagesrc/ximageutil.c
tests/Makefile.am [new file with mode: 0644]
tests/icles/Makefile.am [new file with mode: 0644]
tests/icles/ximagesrc-test.c [new file with mode: 0644]

index d98da6e..4d6929d 100644 (file)
@@ -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 \
index bea5b9c..91cc508 100644 (file)
@@ -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
 
index 2edbfd7..95c54ba 100644 (file)
@@ -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
index 2c1149b..c9b7c56 100644 (file)
@@ -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 (file)
index 0000000..0658f01
--- /dev/null
@@ -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 (file)
index 0000000..b04651d
--- /dev/null
@@ -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 (file)
index 0000000..655d7b5
--- /dev/null
@@ -0,0 +1,65 @@
+/* GStreamer
+ * Copyright (C) <2006> Zaheer Abbas Merali <zaheerabbas at merali dot org>
+ *
+ * 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 <gst/gst.h>
+
+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;
+}