mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
tests: h264parser: add test to identify EOSEQ / EOS NALs.
Check that end_of_seq() [EOSEQ] and end_of_stream [EOS] NAL units are correctly parsed and the reported NAL unit size yields 1 byte, i.e. the only NalHeaderBytes in there. https://bugzilla.gnome.org/show_bug.cgi?id=732553 Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
This commit is contained in:
parent
804c0ac27b
commit
1a455c25cd
1 changed files with 62 additions and 0 deletions
|
@ -132,6 +132,18 @@ static guint8 slice_dpa[] = {
|
||||||
0x63, 0x72, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
|
0x63, 0x72, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* IDR slice, EOSEQ, IDR slice */
|
||||||
|
static guint8 slice_eoseq_slice[] = {
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x65, 0x88, 0x84, 0x00,
|
||||||
|
0x10, 0xff, 0xfe, 0xf6, 0xf0, 0xfe, 0x05, 0x36,
|
||||||
|
0x56, 0x04, 0x50, 0x96, 0x7b, 0x3f, 0x53, 0xe1,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x0a,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x65, 0x88, 0x84, 0x00,
|
||||||
|
0x10, 0xff, 0xfe, 0xf6, 0xf0, 0xfe, 0x05, 0x36,
|
||||||
|
0x56, 0x04, 0x50, 0x96, 0x7b, 0x3f, 0x53, 0xe1,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x0b
|
||||||
|
};
|
||||||
|
|
||||||
GST_START_TEST (test_h264_parse_slice_dpa)
|
GST_START_TEST (test_h264_parse_slice_dpa)
|
||||||
{
|
{
|
||||||
GstH264ParserResult res;
|
GstH264ParserResult res;
|
||||||
|
@ -150,6 +162,55 @@ GST_START_TEST (test_h264_parse_slice_dpa)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_h264_parse_slice_eoseq_slice)
|
||||||
|
{
|
||||||
|
GstH264ParserResult res;
|
||||||
|
GstH264NalUnit nalu;
|
||||||
|
GstH264NalParser *const parser = gst_h264_nal_parser_new ();
|
||||||
|
const guint8 *buf = slice_eoseq_slice;
|
||||||
|
guint n, buf_size = sizeof (slice_eoseq_slice);
|
||||||
|
|
||||||
|
res = gst_h264_parser_identify_nalu (parser, buf, 0, buf_size, &nalu);
|
||||||
|
|
||||||
|
assert_equals_int (res, GST_H264_PARSER_OK);
|
||||||
|
assert_equals_int (nalu.type, GST_H264_NAL_SLICE_IDR);
|
||||||
|
assert_equals_int (nalu.size, 20);
|
||||||
|
|
||||||
|
n = nalu.offset + nalu.size;
|
||||||
|
buf += n;
|
||||||
|
buf_size -= n;
|
||||||
|
|
||||||
|
res = gst_h264_parser_identify_nalu (parser, buf, 0, buf_size, &nalu);
|
||||||
|
|
||||||
|
assert_equals_int (res, GST_H264_PARSER_OK);
|
||||||
|
assert_equals_int (nalu.type, GST_H264_NAL_SEQ_END);
|
||||||
|
assert_equals_int (nalu.size, 1);
|
||||||
|
|
||||||
|
n = nalu.offset + nalu.size;
|
||||||
|
buf += n;
|
||||||
|
buf_size -= n;
|
||||||
|
|
||||||
|
res = gst_h264_parser_identify_nalu (parser, buf, 0, buf_size, &nalu);
|
||||||
|
|
||||||
|
assert_equals_int (res, GST_H264_PARSER_OK);
|
||||||
|
assert_equals_int (nalu.type, GST_H264_NAL_SLICE_IDR);
|
||||||
|
assert_equals_int (nalu.size, 20);
|
||||||
|
|
||||||
|
n = nalu.offset + nalu.size;
|
||||||
|
buf += n;
|
||||||
|
buf_size -= n;
|
||||||
|
|
||||||
|
res = gst_h264_parser_identify_nalu (parser, buf, 0, buf_size, &nalu);
|
||||||
|
|
||||||
|
assert_equals_int (res, GST_H264_PARSER_OK);
|
||||||
|
assert_equals_int (nalu.type, GST_H264_NAL_STREAM_END);
|
||||||
|
assert_equals_int (nalu.size, 1);
|
||||||
|
|
||||||
|
gst_h264_nal_parser_free (parser);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
static Suite *
|
static Suite *
|
||||||
h264parser_suite (void)
|
h264parser_suite (void)
|
||||||
{
|
{
|
||||||
|
@ -159,6 +220,7 @@ h264parser_suite (void)
|
||||||
|
|
||||||
suite_add_tcase (s, tc_chain);
|
suite_add_tcase (s, tc_chain);
|
||||||
tcase_add_test (tc_chain, test_h264_parse_slice_dpa);
|
tcase_add_test (tc_chain, test_h264_parse_slice_dpa);
|
||||||
|
tcase_add_test (tc_chain, test_h264_parse_slice_eoseq_slice);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue