h264parse test: Ensure avc3 caps include a codec_data
The avc3 caps without a codec_data are just totally invalid Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
This commit is contained in:
parent
f13c757696
commit
111c0a4186
@ -1548,6 +1548,51 @@ GST_START_TEST (test_parse_sei_userdefinedunregistered)
|
|||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_parse_to_avc3_without_sps)
|
||||||
|
{
|
||||||
|
GstHarness *h;
|
||||||
|
GstBuffer *buf;
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
|
h = gst_harness_new ("h264parse");
|
||||||
|
|
||||||
|
gst_harness_set_caps_str (h,
|
||||||
|
"video/x-h264, stream-format=(string)byte-stream",
|
||||||
|
"video/x-h264, stream-format=(string)avc3, parsed=(boolean)true,"
|
||||||
|
" alignment=(string)au");
|
||||||
|
|
||||||
|
/* Send AUD */
|
||||||
|
buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
|
||||||
|
h264_aud, sizeof (h264_aud), 0, sizeof (h264_aud), NULL, NULL);
|
||||||
|
fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK);
|
||||||
|
|
||||||
|
/* Send an IDR */
|
||||||
|
buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
|
||||||
|
h264_idrframe, sizeof (h264_idrframe), 0, sizeof (h264_idrframe), NULL,
|
||||||
|
NULL);
|
||||||
|
fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK);
|
||||||
|
|
||||||
|
/* Send AUD to trigger the AU completion and pushing */
|
||||||
|
buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
|
||||||
|
h264_aud, sizeof (h264_aud), 0, sizeof (h264_aud), NULL, NULL);
|
||||||
|
fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK);
|
||||||
|
|
||||||
|
/* send EOS */
|
||||||
|
gst_harness_push_event (h, gst_event_new_eos ());
|
||||||
|
|
||||||
|
/* Ensure that caps negotiation failed as an SPS is needed to generate the
|
||||||
|
* codec_data
|
||||||
|
*/
|
||||||
|
fail_if (caps = gst_pad_get_current_caps (h->sinkpad), "caps: %s",
|
||||||
|
gst_caps_to_string (caps));
|
||||||
|
|
||||||
|
/* Ensure no buffer was pushed without caps */
|
||||||
|
fail_unless_equals_int (gst_harness_buffers_received (h), 0)
|
||||||
|
gst_harness_teardown (h);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO:
|
* TODO:
|
||||||
* - Both push- and pull-modes need to be tested
|
* - Both push- and pull-modes need to be tested
|
||||||
@ -1661,6 +1706,7 @@ main (int argc, char **argv)
|
|||||||
tcase_add_test (tc_chain, test_parse_skip_to_4bytes_sc);
|
tcase_add_test (tc_chain, test_parse_skip_to_4bytes_sc);
|
||||||
tcase_add_test (tc_chain, test_parse_aud_insert);
|
tcase_add_test (tc_chain, test_parse_aud_insert);
|
||||||
tcase_add_test (tc_chain, test_parse_sei_userdefinedunregistered);
|
tcase_add_test (tc_chain, test_parse_sei_userdefinedunregistered);
|
||||||
|
tcase_add_test (tc_chain, test_parse_to_avc3_without_sps);
|
||||||
nf += gst_check_run_suite (s, "h264parse", __FILE__);
|
nf += gst_check_run_suite (s, "h264parse", __FILE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user