summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2017-02-18 20:18:50 +0200
committerSebastian Dröge <sebastian@centricular.com>2017-02-18 20:18:50 +0200
commit63e280df22073f06dc35a5cab03dad5d509eca71 (patch)
tree37d28db4f545f46a08619d64dd306a7af0335bb8 /tests
parent0c902ff24906e8c91b0af449a294e9df0706a3b7 (diff)
downloadgstreamer-plugins-bad-63e280df22073f06dc35a5cab03dad5d509eca71.tar.gz
rawbaseparse: Drop incomplete frames at EOS
See https://bugzilla.gnome.org/show_bug.cgi?id=773666 This would ideally be solved in baseparse but that requires further thought at this point, and in the meantime it would be good to have rawbaseparse not assert on this but handle it gracefully instead.
Diffstat (limited to 'tests')
-rw-r--r--tests/check/elements/rawvideoparse.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/check/elements/rawvideoparse.c b/tests/check/elements/rawvideoparse.c
index 477e7678e..bca199921 100644
--- a/tests/check/elements/rawvideoparse.c
+++ b/tests/check/elements/rawvideoparse.c
@@ -607,6 +607,37 @@ GST_START_TEST (test_change_caps)
GST_END_TEST;
+GST_START_TEST (test_incomplete_last_buffer)
+{
+ GstVideoInfo vinfo;
+ GstCaps *caps;
+
+ /* Start processing with the sink caps config active, using the
+ * default width/height/format and 25 Hz frame rate for the caps.
+ * Push some data, then change caps (25 Hz -> 50 Hz).
+ * Check that the changed caps are handled properly. */
+
+ gst_video_info_set_format (&vinfo, TEST_FRAME_FORMAT, TEST_WIDTH,
+ TEST_HEIGHT);
+ GST_VIDEO_INFO_FPS_N (&vinfo) = 25;
+ GST_VIDEO_INFO_FPS_D (&vinfo) = 1;
+ caps = gst_video_info_to_caps (&vinfo);
+
+ setup_rawvideoparse (TRUE, FALSE, caps, GST_FORMAT_BYTES);
+
+ push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 0,
+ GST_MSECOND * 40, 1, 0, 0, 0);
+ push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 40,
+ GST_MSECOND * 40, 2, 1, 1, 0);
+ push_data_and_check_output (&sinkcaps_ctx, 100, 192, GST_MSECOND * 40,
+ GST_MSECOND * 40, 2, 1, 1, 0);
+ gst_pad_push_event (mysrcpad, gst_event_new_eos ());
+ fail_unless_equals_int (g_list_length (buffers), 2);
+
+ cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
static Suite *
rawvideoparse_suite (void)
@@ -621,6 +652,7 @@ rawvideoparse_suite (void)
tcase_add_test (tc_chain, test_push_with_no_framerate);
tcase_add_test (tc_chain, test_computed_plane_strides);
tcase_add_test (tc_chain, test_change_caps);
+ tcase_add_test (tc_chain, test_incomplete_last_buffer);
return s;
}