mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
tests: baseparse: add test for reverse playback on passthrough
Baseparse stores buffers for reverse playback to push on the next DISCONT, the issue was that it wouldn't ever check for a discont on passthrough mode as it skips all real parsing. This test was create to verify this issue and prevent it from happening again https://bugzilla.gnome.org/show_bug.cgi?id=721941
This commit is contained in:
parent
aad8123ff9
commit
4f9d382a0a
1 changed files with 33 additions and 4 deletions
|
@ -184,15 +184,13 @@ send_startup_events (void)
|
|||
}
|
||||
|
||||
static void
|
||||
run_parser_playback_test (GList * input, gint expected_output)
|
||||
run_parser_playback_test (GList * input, gint expected_output, gdouble rate)
|
||||
{
|
||||
GstBuffer *buffer;
|
||||
guint64 i;
|
||||
GList *iter;
|
||||
GstSegment segment;
|
||||
|
||||
setup_parsertester ();
|
||||
|
||||
gst_pad_set_active (mysrcpad, TRUE);
|
||||
gst_element_set_state (parsetest, GST_STATE_PLAYING);
|
||||
gst_pad_set_active (mysinkpad, TRUE);
|
||||
|
@ -201,6 +199,7 @@ run_parser_playback_test (GList * input, gint expected_output)
|
|||
|
||||
/* push a new segment */
|
||||
gst_segment_init (&segment, GST_FORMAT_TIME);
|
||||
segment.rate = rate;
|
||||
fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
|
||||
|
||||
/* push buffers, the data is actually a number so we can track them */
|
||||
|
@ -249,17 +248,46 @@ GST_START_TEST (parser_playback)
|
|||
gint i;
|
||||
GstBuffer *buffer;
|
||||
|
||||
setup_parsertester ();
|
||||
|
||||
/* push buffers, the data is actually a number so we can track them */
|
||||
for (i = 0; i < 3; i++) {
|
||||
buffer = create_test_buffer (i);
|
||||
input = g_list_append (input, buffer);
|
||||
}
|
||||
|
||||
run_parser_playback_test (input, 3);
|
||||
run_parser_playback_test (input, 3, 1.0);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
|
||||
/* Check https://bugzilla.gnome.org/show_bug.cgi?id=721941 */
|
||||
GST_START_TEST (parser_reverse_playback_on_passthrough)
|
||||
{
|
||||
GList *input = NULL;
|
||||
gint i;
|
||||
GstBuffer *buffer;
|
||||
|
||||
setup_parsertester ();
|
||||
|
||||
gst_base_parse_set_passthrough (GST_BASE_PARSE (parsetest), TRUE);
|
||||
|
||||
/* push buffers, the data is actually a number so we can track them */
|
||||
for (i = 0; i < 6; i++) {
|
||||
buffer = create_test_buffer (i);
|
||||
if (i > 0)
|
||||
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
|
||||
input = g_list_append (input, buffer);
|
||||
}
|
||||
GST_BUFFER_FLAG_SET (g_list_nth (input, 3)->data, GST_BUFFER_FLAG_DISCONT);
|
||||
|
||||
run_parser_playback_test (input, 6, -1.0);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
|
||||
static Suite *
|
||||
gst_baseparse_suite (void)
|
||||
{
|
||||
|
@ -268,6 +296,7 @@ gst_baseparse_suite (void)
|
|||
|
||||
suite_add_tcase (s, tc);
|
||||
tcase_add_test (tc, parser_playback);
|
||||
tcase_add_test (tc, parser_reverse_playback_on_passthrough);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue