summaryrefslogtreecommitdiff
path: root/tests/check/elements/x264enc.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2010-02-16 14:08:12 +0000
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2010-02-16 14:10:38 +0000
commit09d493f21d540a66c23913e75e5a338e04dde219 (patch)
tree1057e397b85027ab6889ebacf9f2bb6b0f5920b9 /tests/check/elements/x264enc.c
parent35dd89951d8bb1c094da65480e4197efdfb4e93c (diff)
x264enc: add caps check to x264enc unit test
Add some minimal caps checking to x264enc unit test. See #610089.
Diffstat (limited to 'tests/check/elements/x264enc.c')
-rw-r--r--tests/check/elements/x264enc.c46
1 files changed, 43 insertions, 3 deletions
diff --git a/tests/check/elements/x264enc.c b/tests/check/elements/x264enc.c
index 721f6e90..60d46e03 100644
--- a/tests/check/elements/x264enc.c
+++ b/tests/check/elements/x264enc.c
@@ -51,8 +51,8 @@ static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
GST_STATIC_CAPS (VIDEO_CAPS_STRING));
-GstElement *
-setup_x264enc ()
+static GstElement *
+setup_x264enc (void)
{
GstElement *x264enc;
@@ -66,7 +66,7 @@ setup_x264enc ()
return x264enc;
}
-void
+static void
cleanup_x264enc (GstElement * x264enc)
{
GST_DEBUG ("cleanup_x264enc");
@@ -79,6 +79,44 @@ cleanup_x264enc (GstElement * x264enc)
gst_check_teardown_element (x264enc);
}
+static void
+check_caps (GstCaps * caps)
+{
+ GstStructure *s;
+ const GValue *sf, *avcc;
+ const gchar *stream_format;
+
+ fail_unless (caps != NULL);
+
+ GST_INFO ("caps %" GST_PTR_FORMAT, caps);
+ s = gst_caps_get_structure (caps, 0);
+ fail_unless (s != NULL);
+ fail_if (!gst_structure_has_name (s, "video/x-h264"));
+ sf = gst_structure_get_value (s, "stream-format");
+ fail_unless (sf != NULL);
+ fail_unless (G_VALUE_HOLDS_STRING (sf));
+ stream_format = g_value_get_string (sf);
+ fail_unless (stream_format != NULL);
+ if (strcmp (stream_format, "avc-sample") == 0) {
+ const guint8 *data;
+ GstBuffer *buf;
+
+ avcc = gst_structure_get_value (s, "codec_data");
+ fail_unless (avcc != NULL);
+ fail_unless (GST_VALUE_HOLDS_BUFFER (avcc));
+ buf = gst_value_get_buffer (avcc);
+ fail_unless (buf != NULL);
+ data = GST_BUFFER_DATA (buf);
+ fail_unless_equals_int (data[0], 1);
+ /* should be either baseline, main profile or extended profile */
+ fail_unless (data[1] == 0x42 || data[1] == 0x4D || data[1] == 0x58);
+ } else if (strcmp (stream_format, "byte-stream") == 0) {
+ fail_if (gst_structure_get_value (s, "codec_data") != NULL);
+ } else {
+ fail_if (TRUE, "unexpected stream-format in caps: %s", stream_format);
+ }
+}
+
GST_START_TEST (test_video_pad)
{
GstElement *x264enc;
@@ -120,6 +158,8 @@ GST_START_TEST (test_video_pad)
guint8 *data = GST_BUFFER_DATA (outbuffer);
gint size = GST_BUFFER_SIZE (outbuffer);
+ check_caps (GST_BUFFER_CAPS (outbuffer));
+
npos = 0;
j = 0;
/* loop through NALs */