test: fix more tests
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 6 Feb 2012 17:35:01 +0000 (18:35 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 6 Feb 2012 17:35:01 +0000 (18:35 +0100)
tests/check/elements/rglimiter.c
tests/check/elements/rgvolume.c
tests/check/elements/spectrum.c
tests/check/elements/videocrop.c

index 4b9ea02..104df22 100644 (file)
@@ -33,6 +33,7 @@ static GstPad *mysrcpad, *mysinkpad;
 #define RG_LIMITER_CAPS_TEMPLATE_STRING       \
   "audio/x-raw, "                             \
   "format = (string) "GST_AUDIO_NE (F32) ", " \
+  "layout = (string) interleaved, "           \
   "channels = (int) [ 1, MAX ], "             \
   "rate = (int) [ 1, MAX ]"
 
@@ -108,7 +109,8 @@ create_test_buffer (void)
 
   caps = gst_caps_new_simple ("audio/x-raw",
       "rate", G_TYPE_INT, 44100, "channels", G_TYPE_INT, 1,
-      "format", G_TYPE_STRING, GST_AUDIO_NE (F32), NULL);
+      "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+      "layout", G_TYPE_STRING, "interleaved", NULL);
   gst_pad_set_caps (mysrcpad, caps);
   gst_caps_unref (caps);
 
index fc9a180..c5bb3e3 100644 (file)
@@ -35,6 +35,7 @@ static GstPad *mysrcpad, *mysinkpad;
 #define RG_VOLUME_CAPS_TEMPLATE_STRING        \
   "audio/x-raw, "                             \
   "format = (string) "GST_AUDIO_NE (F32) ", " \
+  "layout = (string) interleaved, "           \
   "channels = (int) [ 1, MAX ], "             \
   "rate = (int) [ 1, MAX ]"
 
@@ -56,6 +57,7 @@ static GstBuffer *test_buffer_new (gfloat value);
 static gboolean
 event_func (GstPad * pad, GstObject * parent, GstEvent * event)
 {
+  GST_DEBUG ("received event %p", event);
   events = g_list_append (events, event);
 
   return TRUE;
@@ -65,6 +67,7 @@ static GstElement *
 setup_rgvolume (void)
 {
   GstElement *element;
+  GstCaps *caps;
 
   GST_DEBUG ("setup_rgvolume");
   element = gst_check_setup_element ("rgvolume");
@@ -77,6 +80,11 @@ setup_rgvolume (void)
   gst_pad_set_active (mysrcpad, TRUE);
   gst_pad_set_active (mysinkpad, TRUE);
 
+  caps = gst_caps_from_string ("audio/x-raw, format = F32LE, "
+      "layout = interleaved, rate = 8000, channels = 1");
+  gst_pad_set_caps (mysrcpad, caps);
+  gst_caps_unref (caps);
+
   return element;
 }
 
@@ -94,16 +102,21 @@ send_newsegment_and_empty_buffer (void)
   fail_unless (gst_pad_push_event (mysrcpad, ev),
       "Pushing newsegment event failed");
 
+  /* makes caps event */
   buf = test_buffer_new (0.0);
   gst_buffer_resize (buf, 0, 0);
   GST_BUFFER_DURATION (buf) = 0;
   GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET (buf);
   fail_unless (gst_pad_push (mysrcpad, buf) == GST_FLOW_OK);
 
-  fail_unless (g_list_length (events) == 1);
+  fail_unless (g_list_length (events) == 2);
   fail_unless (events->data == ev);
   gst_mini_object_unref ((GstMiniObject *) events->data);
   events = g_list_remove (events, ev);
+  ev = events->data;
+  gst_mini_object_unref ((GstMiniObject *) ev);
+  events = g_list_remove (events, ev);
+  fail_unless (g_list_length (events) == 0);
 
   fail_unless (g_list_length (buffers) == 1);
   fail_unless (buffers->data == buf);
@@ -152,6 +165,8 @@ send_eos_event (GstElement * element)
 {
   GstEvent *event = gst_event_new_eos ();
 
+  GST_DEBUG ("events : %d", g_list_length (events));
+
   fail_unless (g_list_length (events) == 0);
   fail_unless (gst_pad_push_event (mysrcpad, event),
       "Pushing EOS event failed");
@@ -201,7 +216,6 @@ static GstBuffer *
 test_buffer_new (gfloat value)
 {
   GstBuffer *buf;
-  GstCaps *caps;
   GstMapInfo map;
   gfloat *data;
   gint i;
@@ -213,10 +227,6 @@ test_buffer_new (gfloat value)
     data[i] = value;
   gst_buffer_unmap (buf, &map);
 
-  caps = gst_caps_from_string ("audio/x-raw-float, "
-      "rate = 8000, channels = 1, endianness = BYTE_ORDER, width = 32");
-  gst_pad_set_caps (mysrcpad, caps);
-  gst_caps_unref (caps);
 
   ASSERT_BUFFER_REFCOUNT (buf, "buf", 1);
 
@@ -338,8 +348,6 @@ GST_START_TEST (test_events)
       GST_TAG_ARTIST, "Foobar", NULL);
   event = gst_event_new_tag (tag_list);
   new_event = send_tag_event (element, event);
-  /* Expect the element to modify the writable event. */
-  fail_unless (event == new_event, "Writable tag event not reused");
   gst_event_parse_tag (new_event, &tag_list);
   fail_unless (gst_tag_list_get_string (tag_list, GST_TAG_ARTIST, &artist));
   fail_unless (g_str_equal (artist, "Foobar"));
@@ -354,15 +362,11 @@ GST_START_TEST (test_events)
       GST_TAG_ALBUM_GAIN, -1.54, GST_TAG_ALBUM_PEAK, 0.693415,
       GST_TAG_ARTIST, "Foobar", NULL);
   event = gst_event_new_tag (tag_list);
-  /* Holding an extra ref makes the event unwritable: */
-  gst_event_ref (event);
   new_event = send_tag_event (element, event);
-  fail_unless (event != new_event, "Unwritable tag event reused");
   gst_event_parse_tag (new_event, &tag_list);
   fail_unless (gst_tag_list_get_string (tag_list, GST_TAG_ARTIST, &artist));
   fail_unless (g_str_equal (artist, "Foobar"));
   g_free (artist);
-  gst_event_unref (event);
   gst_event_unref (new_event);
 
   cleanup_rgvolume (element);
index 4ea3741..ff3d030 100644 (file)
@@ -36,6 +36,7 @@ GstPad *mysrcpad, *mysinkpad;
     "audio/x-raw, "                                                   \
     " rate = (int) [ 1, MAX ], "                                      \
     " channels = (int) [ 1, MAX ], "                                  \
+    " layout = (string) interleaved, "                                \
     " format = (string) { "                                           \
     GST_AUDIO_NE(S16) ", "                                            \
     GST_AUDIO_NE(S32) ", "                                            \
@@ -46,24 +47,28 @@ GstPad *mysrcpad, *mysinkpad;
   "audio/x-raw, " \
     "rate = (int) 44100, " \
     "channels = (int) 1, " \
+    "layout = (string) interleaved, " \
     "format = (string) " GST_AUDIO_NE(S16)
 
 #define SPECT_CAPS_STRING_S32 \
   "audio/x-raw, " \
     "rate = (int) 44100, " \
     "channels = (int) 1, " \
+    "layout = (string) interleaved, " \
     "format = (string) " GST_AUDIO_NE(S32)
 
 #define SPECT_CAPS_STRING_F32 \
     "audio/x-raw, "                                                   \
     " rate = (int) 44100, "                                           \
     " channels = (int) 1, "                                           \
+    " layout = (string) interleaved, " \
     " format = (string) " GST_AUDIO_NE(F32)
 
 #define SPECT_CAPS_STRING_F64 \
     "audio/x-raw, "                                                   \
     " rate = (int) 44100, "                                           \
     " channels = (int) 1, "                                           \
+    " layout = (string) interleaved, " \
     " format = (string) " GST_AUDIO_NE(F64)
 
 #define SPECT_BANDS 256
index 7538fc8..101835e 100644 (file)
 static GList *
 video_crop_get_test_caps (GstElement * videocrop)
 {
-  const GstCaps *allowed_caps;
+  GstCaps *templ, *allowed_caps;
   GstPad *srcpad;
   GList *list = NULL;
   guint i;
 
   srcpad = gst_element_get_static_pad (videocrop, "src");
   fail_unless (srcpad != NULL);
-  allowed_caps = gst_pad_get_pad_template_caps (srcpad);
-  fail_unless (allowed_caps != NULL);
+  templ = gst_pad_get_pad_template_caps (srcpad);
+  fail_unless (templ != NULL);
+
+  allowed_caps = gst_caps_normalize (templ);
+  gst_caps_unref (templ);
 
   for (i = 0; i < gst_caps_get_size (allowed_caps); ++i) {
     GstStructure *new_structure;
@@ -59,12 +62,14 @@ video_crop_get_test_caps (GstElement * videocrop)
     gst_structure_remove_field (new_structure, "height");
     gst_caps_append_structure (single_caps, new_structure);
 
+    GST_DEBUG ("have caps %" GST_PTR_FORMAT, single_caps);
     /* should be fixed without width/height */
     fail_unless (gst_caps_is_fixed (single_caps));
 
     list = g_list_prepend (list, single_caps);
   }
 
+  gst_caps_unref (allowed_caps);
   gst_object_unref (srcpad);
 
   return list;
@@ -80,8 +85,8 @@ GST_START_TEST (test_unit_sizes)
   fail_unless (videocrop != NULL, "Failed to create videocrop element");
   vcrop_klass = GST_BASE_TRANSFORM_GET_CLASS (videocrop);
 
-  csp = gst_element_factory_make ("ffmpegcolorspace", "csp");
-  fail_unless (csp != NULL, "Failed to create ffmpegcolorspace element");
+  csp = gst_element_factory_make ("videoconvert", "csp");
+  fail_unless (csp != NULL, "Failed to create videoconvert element");
   csp_klass = GST_BASE_TRANSFORM_GET_CLASS (csp);
 
   caps_list = video_crop_get_test_caps (videocrop);
@@ -120,10 +125,10 @@ GST_START_TEST (test_unit_sizes)
       caps_str = gst_caps_to_string (caps);
       GST_INFO ("Testing unit size for %s", caps_str);
 
-      /* skip if ffmpegcolorspace doesn't support these caps
+      /* skip if videoconvert doesn't support these caps
        * (only works with gst-plugins-base 0.10.9.1 or later) */
       if (!csp_klass->get_unit_size ((GstBaseTransform *) csp, caps, &csp_size)) {
-        GST_INFO ("ffmpegcolorspace does not support format %s", caps_str);
+        GST_INFO ("videoconvert does not support format %s", caps_str);
         g_free (caps_str);
         continue;
       }
@@ -132,7 +137,7 @@ GST_START_TEST (test_unit_sizes)
               caps, &vc_size));
 
       fail_unless (vc_size == csp_size,
-          "videocrop and ffmpegcolorspace return different unit sizes for "
+          "videocrop and videoconvert return different unit sizes for "
           "caps %s: vc_size=%d, csp_size=%d", caps_str, vc_size, csp_size);
 
       g_free (caps_str);
@@ -251,10 +256,12 @@ check_1x1_buffer (GstBuffer * buf, GstCaps * caps)
   GstVideoInfo info;
   GstVideoFrame frame;
   /* the exact values we check for come from videotestsrc */
-  static const guint yuv_values[] = { 81, 90, 240, 0 };
-  static const guint rgb_values[] = { 0xff, 0, 0, 0 };
+  static const guint yuv_values[] = { 81, 90, 240, 255 };
+  static const guint rgb_values[] = { 0xff, 0, 0, 255 };
+  static const guint gray_values[] = { 63, 63, 63, 255 };
   const guint *values;
   guint i;
+  const GstVideoFormatInfo *finfo;
 
   fail_unless (buf != NULL);
   fail_unless (caps != NULL);
@@ -262,15 +269,52 @@ check_1x1_buffer (GstBuffer * buf, GstCaps * caps)
   fail_unless (gst_video_info_from_caps (&info, caps));
   fail_unless (gst_video_frame_map (&frame, &info, buf, GST_MAP_READ));
 
-  if (GST_VIDEO_INFO_IS_YUV (&info))
+  finfo = info.finfo;
+
+
+  if (GST_VIDEO_INFO_FORMAT (&info) == GST_VIDEO_FORMAT_Y800)
+    values = gray_values;
+  else if (GST_VIDEO_INFO_IS_YUV (&info))
     values = yuv_values;
+  else if (GST_VIDEO_INFO_IS_GRAY (&info))
+    values = gray_values;
   else
     values = rgb_values;
 
+  GST_MEMDUMP ("buffer", GST_VIDEO_FRAME_PLANE_DATA (&frame, 0), 8);
+
   for (i = 0; i < GST_VIDEO_FRAME_N_COMPONENTS (&frame); i++) {
     guint8 *data = GST_VIDEO_FRAME_COMP_DATA (&frame, i);
 
-    fail_unless_equals_int (data[0], values[i]);
+    GST_DEBUG ("W: %d", GST_VIDEO_FORMAT_INFO_W_SUB (finfo, i));
+    GST_DEBUG ("H: %d", GST_VIDEO_FORMAT_INFO_H_SUB (finfo, i));
+
+    if (GST_VIDEO_FORMAT_INFO_W_SUB (finfo,
+            i) >= GST_VIDEO_FRAME_WIDTH (&frame))
+      continue;
+    if (GST_VIDEO_FORMAT_INFO_H_SUB (finfo,
+            i) >= GST_VIDEO_FRAME_HEIGHT (&frame))
+      continue;
+
+    if (GST_VIDEO_FORMAT_INFO_BITS (finfo) == 8) {
+      fail_unless_equals_int (data[0], values[i]);
+    } else if (GST_VIDEO_FORMAT_INFO_BITS (finfo) == 16) {
+      guint16 pixels, val;
+      gint depth;
+
+      if (GST_VIDEO_FORMAT_INFO_IS_LE (finfo))
+        pixels = GST_READ_UINT16_LE (data);
+      else
+        pixels = GST_READ_UINT16_BE (data);
+
+      depth = GST_VIDEO_FORMAT_INFO_DEPTH (finfo, i);
+      val = pixels >> GST_VIDEO_FORMAT_INFO_SHIFT (finfo, i);
+      val = val & ((1 << depth) - 1);
+
+      GST_DEBUG ("val %08x %d : %d", pixels, i, val);
+      fail_unless_equals_int (val, values[i] >> (8 - depth));
+    } else {
+    }
   }
 
   /*
@@ -297,12 +341,6 @@ GST_START_TEST (test_crop_to_1x1)
     s = gst_caps_get_structure (caps, 0);
     fail_unless (s != NULL);
 
-    if (g_strcmp0 (gst_structure_get_name (s), "video/x-raw-gray") == 0) {
-      /* videotestsrc does not support this format */
-      gst_caps_unref (caps);
-      continue;
-    }
-
     GST_INFO ("testing format: %" GST_PTR_FORMAT, caps);
 
     gst_structure_set (s, "width", G_TYPE_INT, 160,
@@ -489,7 +527,7 @@ GST_START_TEST (test_caps_transform)
   klass = GST_BASE_TRANSFORM_GET_CLASS (ctx.crop);
   fail_unless (klass != NULL);
 
-  caps = gst_caps_new_simple ("video/x-raw-yuv",
+  caps = gst_caps_new_simple ("video/x-raw",
       "format", G_TYPE_STRING, "I420",
       "framerate", GST_TYPE_FRACTION, 1, 1,
       "width", G_TYPE_INT, 200, "height", G_TYPE_INT, 100, NULL);