summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/check/libs/audiodecoder.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/check/libs/audiodecoder.c b/tests/check/libs/audiodecoder.c
index bfcb333a5..9532d86b2 100644
--- a/tests/check/libs/audiodecoder.c
+++ b/tests/check/libs/audiodecoder.c
@@ -443,6 +443,60 @@ GST_START_TEST (audiodecoder_delayed_negotiation_with_gap_event)
GST_END_TEST;
+
+/* make sure that the segment event is pushed before the gap */
+GST_START_TEST (audiodecoder_first_data_is_gap)
+{
+ GstSegment segment;
+ GList *events_iter;
+
+ setup_audiodecodertester (NULL, NULL);
+
+ gst_pad_set_active (mysrcpad, TRUE);
+ gst_element_set_state (dec, GST_STATE_PLAYING);
+ gst_pad_set_active (mysinkpad, TRUE);
+
+ send_startup_events ();
+
+ /* push a new segment */
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_segment (&segment)));
+
+ /* push a gap */
+ fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_gap (0,
+ GST_SECOND)));
+ events_iter = events;
+ /* make sure the usual events have been received */
+ {
+ GstEvent *sstart = events_iter->data;
+ fail_unless (GST_EVENT_TYPE (sstart) == GST_EVENT_STREAM_START);
+ events_iter = g_list_next (events_iter);
+ }
+ {
+ GstEvent *caps_event = events_iter->data;
+ fail_unless (GST_EVENT_TYPE (caps_event) == GST_EVENT_CAPS);
+ events_iter = g_list_next (events_iter);
+ }
+ {
+ GstEvent *segment_event = events_iter->data;
+ fail_unless (GST_EVENT_TYPE (segment_event) == GST_EVENT_SEGMENT);
+ events_iter = g_list_next (events_iter);
+ }
+
+ /* Make sure the gap was pushed */
+ {
+ GstEvent *gap = events_iter->data;
+ fail_unless (GST_EVENT_TYPE (gap) == GST_EVENT_GAP);
+ events_iter = g_list_next (events_iter);
+ }
+ fail_unless (events_iter == NULL);
+
+ cleanup_audiodecodertest ();
+}
+
+GST_END_TEST;
+
+
static void
_audiodecoder_flush_events (gboolean send_buffers)
{
@@ -899,6 +953,7 @@ gst_audiodecoder_suite (void)
tcase_add_test (tc, audiodecoder_negotiation_with_buffer);
tcase_add_test (tc, audiodecoder_negotiation_with_gap_event);
tcase_add_test (tc, audiodecoder_delayed_negotiation_with_gap_event);
+ tcase_add_test (tc, audiodecoder_first_data_is_gap);
tcase_add_test (tc, audiodecoder_buffer_after_segment);
tcase_add_test (tc, audiodecoder_output_too_many_frames);