diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> | 2020-09-01 15:05:07 +0200 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-09-01 14:01:56 +0000 |
commit | ebe397892be2d6b57c9d9233a0bcfe4ec9350613 (patch) | |
tree | 0baad2f3b0c37e204b91e8277131574ef2688c8b | |
parent | ef8142ef90481598672c6fa6622ea1792f3739e2 (diff) | |
download | gstreamer-plugins-bad-ebe397892be2d6b57c9d9233a0bcfe4ec9350613.tar.gz |
tests: mpegtsmux: Test that we can manipulate pads after stop
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1552>
-rw-r--r-- | tests/check/elements/mpegtsmux.c | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/tests/check/elements/mpegtsmux.c b/tests/check/elements/mpegtsmux.c index d0df51aaa..be537c1da 100644 --- a/tests/check/elements/mpegtsmux.c +++ b/tests/check/elements/mpegtsmux.c @@ -352,7 +352,7 @@ check_tsmux_pad (GstStaticPadTemplate * srctemplate, g_free (padname); } -GST_START_TEST (test_reappearing_pad) +GST_START_TEST (test_reappearing_pad_while_playing) { gchar *padname; GstElement *mux; @@ -388,6 +388,48 @@ GST_START_TEST (test_reappearing_pad) GST_END_TEST; +GST_START_TEST (test_reappearing_pad_while_stopped) +{ + gchar *padname; + GstElement *mux; + GstPad *pad; + + mux = gst_check_setup_element ("mpegtsmux"); + mysrcpad = setup_src_pad (mux, &video_src_template, "sink_%d", &padname); + mysinkpad = gst_check_setup_sink_pad (mux, &sink_template); + gst_pad_set_active (mysrcpad, TRUE); + gst_pad_set_active (mysinkpad, TRUE); + + fail_unless (gst_element_set_state (mux, + GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, + "could not set to playing"); + + check_tsmux_pad_given_muxer (mux, VIDEO_CAPS_STRING, 0xE0, 0x1b, NULL, 1, 1); + + gst_element_set_state (mux, GST_STATE_NULL); + + pad = gst_element_get_static_pad (mux, padname); + gst_pad_set_active (mysrcpad, FALSE); + teardown_src_pad (mux, padname); + gst_element_release_request_pad (mux, pad); + gst_object_unref (pad); + g_free (padname); + + mysrcpad = setup_src_pad (mux, &video_src_template, "sink_%d", &padname); + gst_pad_set_active (mysrcpad, TRUE); + + fail_unless (gst_element_set_state (mux, + GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, + "could not set to playing"); + + check_tsmux_pad_given_muxer (mux, VIDEO_CAPS_STRING, 0xE0, 0x1b, NULL, 1, 1); + + cleanup_tsmux (mux, padname); + g_free (padname); +} + +GST_END_TEST; + GST_START_TEST (test_unused_pad) { gchar *padname; @@ -557,7 +599,8 @@ mpegtsmux_suite (void) tcase_add_test (tc_chain, test_multiple_state_change); tcase_add_test (tc_chain, test_align); tcase_add_test (tc_chain, test_keyframe_flag_propagation); - tcase_add_test (tc_chain, test_reappearing_pad); + tcase_add_test (tc_chain, test_reappearing_pad_while_playing); + tcase_add_test (tc_chain, test_reappearing_pad_while_stopped); tcase_add_test (tc_chain, test_unused_pad); return s; |