test: h264/h265: Constify all test buffers

This ensure that no test modify other tests data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
This commit is contained in:
Nicolas Dufresne 2020-05-07 12:02:40 -04:00
parent 269ab891c5
commit fd423c8468
4 changed files with 50 additions and 48 deletions

View file

@ -842,12 +842,13 @@ static guint8 h264_idr_slice_2[] = {
}; };
static inline GstBuffer * static inline GstBuffer *
wrap_buffer (guint8 * buf, gsize size, GstClockTime pts, GstBufferFlags flags) wrap_buffer (const guint8 * buf, gsize size, GstClockTime pts,
GstBufferFlags flags)
{ {
GstBuffer *buffer; GstBuffer *buffer;
buffer = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, buffer = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
buf, size, 0, size, NULL, NULL); (gpointer) buf, size, 0, size, NULL, NULL);
GST_BUFFER_PTS (buffer) = pts; GST_BUFFER_PTS (buffer) = pts;
GST_BUFFER_FLAGS (buffer) |= flags; GST_BUFFER_FLAGS (buffer) |= flags;
@ -859,7 +860,7 @@ composite_buffer (GstClockTime pts, GstBufferFlags flags, gint count, ...)
{ {
va_list vl; va_list vl;
gint i; gint i;
guint8 *data; const guint8 *data;
gsize size; gsize size;
GstBuffer *buffer; GstBuffer *buffer;

View file

@ -50,24 +50,24 @@ GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
* *
*/ */
static guint8 h265_vps[] = { static const guint8 h265_vps[] = {
0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x60, 0x00,
0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0x95, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0x95,
0x98, 0x09 0x98, 0x09
}; };
static guint8 h265_sps[] = { static const guint8 h265_sps[] = {
0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00,
0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0xa0, 0x88, 0x45, 0x96, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0xa0, 0x88, 0x45, 0x96,
0x56, 0x6a, 0xbc, 0xaf, 0xff, 0x00, 0x01, 0x00, 0x01, 0x6a, 0x0c, 0x02, 0x0c, 0x56, 0x6a, 0xbc, 0xaf, 0xff, 0x00, 0x01, 0x00, 0x01, 0x6a, 0x0c, 0x02, 0x0c,
0x08, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x40 0x08, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x03, 0x00, 0xf0, 0x40
}; };
static guint8 h265_pps[] = { static const guint8 h265_pps[] = {
0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc1, 0x73, 0xd0, 0x89 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc1, 0x73, 0xd0, 0x89
}; };
static guint8 h265_idr[] = { static const guint8 h265_idr[] = {
0x00, 0x00, 0x00, 0x01, 0x26, 0x01, 0xaf, 0x06, 0xb8, 0xcf, 0xbc, 0x65, 0x85, 0x00, 0x00, 0x00, 0x01, 0x26, 0x01, 0xaf, 0x06, 0xb8, 0xcf, 0xbc, 0x65, 0x85,
0x3b, 0x49, 0xff, 0xd0, 0x2c, 0xff, 0x3b, 0x61, 0x6d, 0x1b, 0xae, 0xf1, 0xf4, 0x3b, 0x49, 0xff, 0xd0, 0x2c, 0xff, 0x3b, 0x61, 0x6d, 0x1b, 0xae, 0xf1, 0xf4,
0x96, 0x15, 0xef, 0x3e, 0xc6, 0x67, 0x3c, 0x0a, 0xd0, 0x6a, 0xb9, 0xfb, 0xf8, 0x96, 0x15, 0xef, 0x3e, 0xc6, 0x67, 0x3c, 0x0a, 0xd0, 0x6a, 0xb9, 0xfb, 0xf8,
@ -95,12 +95,12 @@ static guint8 h265_idr[] = {
}; };
/* Content light level information SEI message */ /* Content light level information SEI message */
static guint8 h265_sei_clli[] = { static const guint8 h265_sei_clli[] = {
0x00, 0x00, 0x00, 0x01, 0x4e, 0x01, 0x90, 0x04, 0x03, 0xe8, 0x01, 0x90, 0x80 0x00, 0x00, 0x00, 0x01, 0x4e, 0x01, 0x90, 0x04, 0x03, 0xe8, 0x01, 0x90, 0x80
}; };
/* Mastering display colour volume information SEI message */ /* Mastering display colour volume information SEI message */
static guint8 h265_sei_mdcv[] = { static const guint8 h265_sei_mdcv[] = {
0x00, 0x00, 0x00, 0x01, 0x4e, 0x01, 0x89, 0x18, 0x33, 0xc2, 0x86, 0xc4, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x4e, 0x01, 0x89, 0x18, 0x33, 0xc2, 0x86, 0xc4, 0x1d,
0x4c, 0x0b, 0xb8, 0x84, 0xd0, 0x3e, 0x80, 0x3d, 0x13, 0x40, 0x42, 0x00, 0x98, 0x4c, 0x0b, 0xb8, 0x84, 0xd0, 0x3e, 0x80, 0x3d, 0x13, 0x40, 0x42, 0x00, 0x98,
0x96, 0x80, 0x00, 0x00, 0x03, 0x00, 0x01, 0x80 0x96, 0x80, 0x00, 0x00, 0x03, 0x00, 0x01, 0x80
@ -114,14 +114,14 @@ static guint8 h265_sei_mdcv[] = {
* ! fakesink dump=1 * ! fakesink dump=1
*/ */
static guint8 h265_128x128_vps[] = { static const guint8 h265_128x128_vps[] = {
0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01,
0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x01, 0x60, 0x00, 0x00, 0x03, 0x00,
0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
0x3f, 0x95, 0x98, 0x09 0x3f, 0x95, 0x98, 0x09
}; };
static guint8 h265_128x128_sps[] = { static const guint8 h265_128x128_sps[] = {
0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01,
0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00,
0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0xa0, 0x10, 0x03, 0x00, 0x00, 0x03, 0x00, 0x3f, 0xa0, 0x10,
@ -131,12 +131,12 @@ static guint8 h265_128x128_sps[] = {
0x08 0x08
}; };
static guint8 h265_128x128_pps[] = { static const guint8 h265_128x128_pps[] = {
0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc1, 0x72, 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc1, 0x72,
0xb4, 0x22, 0x40 0xb4, 0x22, 0x40
}; };
static guint8 h265_128x128_slice_idr_n_lp[] = { static const guint8 h265_128x128_slice_idr_n_lp[] = {
0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0xaf, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0xaf, 0x0e,
0xe0, 0x34, 0x82, 0x15, 0x84, 0xf4, 0x70, 0x4f, 0xe0, 0x34, 0x82, 0x15, 0x84, 0xf4, 0x70, 0x4f,
0xff, 0xed, 0x41, 0x3f, 0xff, 0xe4, 0xcd, 0xc4, 0xff, 0xed, 0x41, 0x3f, 0xff, 0xe4, 0xcd, 0xc4,
@ -151,14 +151,14 @@ static guint8 h265_128x128_slice_idr_n_lp[] = {
* ! fakesink dump=1 * ! fakesink dump=1
*/ */
static guint8 h265_128x128_sliced_vps[] = { static const guint8 h265_128x128_sliced_vps[] = {
0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01,
0xff, 0xff, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00,
0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
0x1e, 0x25, 0x02, 0x40 0x1e, 0x25, 0x02, 0x40
}; };
static guint8 h265_128x128_sliced_sps[] = { static const guint8 h265_128x128_sliced_sps[] = {
0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01,
0x40, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00, 0x40, 0x00, 0x00, 0x03, 0x00, 0x90, 0x00, 0x00,
0x03, 0x00, 0x00, 0x03, 0x00, 0x1e, 0xa0, 0x10, 0x03, 0x00, 0x00, 0x03, 0x00, 0x1e, 0xa0, 0x10,
@ -169,19 +169,19 @@ static guint8 h265_128x128_sliced_sps[] = {
0x01, 0x04 0x01, 0x04
}; };
static guint8 h265_128x128_sliced_pps[] = { static const guint8 h265_128x128_sliced_pps[] = {
0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc0, 0x71, 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0xc0, 0x71,
0x81, 0x8d, 0xb2 0x81, 0x8d, 0xb2
}; };
static guint8 h265_128x128_slice_1_idr_n_lp[] = { static const guint8 h265_128x128_slice_1_idr_n_lp[] = {
0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0xac, 0x46, 0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0xac, 0x46,
0x13, 0xb6, 0x45, 0x43, 0xaf, 0xee, 0x3d, 0x3f, 0x13, 0xb6, 0x45, 0x43, 0xaf, 0xee, 0x3d, 0x3f,
0x76, 0xe5, 0x73, 0x2f, 0xee, 0xd2, 0xeb, 0xbf, 0x76, 0xe5, 0x73, 0x2f, 0xee, 0xd2, 0xeb, 0xbf,
0x80 0x80
}; };
static guint8 h265_128x128_slice_2_idr_n_lp[] = { static const guint8 h265_128x128_slice_2_idr_n_lp[] = {
0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0x30, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x28, 0x01, 0x30, 0xc4,
0x60, 0x13, 0xb6, 0x45, 0x43, 0xaf, 0xee, 0x3d, 0x60, 0x13, 0xb6, 0x45, 0x43, 0xaf, 0xee, 0x3d,
0x3f, 0x76, 0xe5, 0x73, 0x2f, 0xee, 0xd2, 0xeb, 0x3f, 0x76, 0xe5, 0x73, 0x2f, 0xee, 0xd2, 0xeb,
@ -352,12 +352,13 @@ h265parse_suite (void)
/* helper methods for GstHasness based tests */ /* helper methods for GstHasness based tests */
static inline GstBuffer * static inline GstBuffer *
wrap_buffer (guint8 * buf, gsize size, GstClockTime pts, GstBufferFlags flags) wrap_buffer (const guint8 * buf, gsize size, GstClockTime pts,
GstBufferFlags flags)
{ {
GstBuffer *buffer; GstBuffer *buffer;
buffer = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, buffer = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
buf, size, 0, size, NULL, NULL); (gpointer) buf, size, 0, size, NULL, NULL);
GST_BUFFER_PTS (buffer) = pts; GST_BUFFER_PTS (buffer) = pts;
GST_BUFFER_FLAGS (buffer) |= flags; GST_BUFFER_FLAGS (buffer) |= flags;
@ -369,7 +370,7 @@ composite_buffer (GstClockTime pts, GstBufferFlags flags, gint count, ...)
{ {
va_list vl; va_list vl;
gint i; gint i;
guint8 *data; const guint8 *data;
gsize size; gsize size;
GstBuffer *buffer; GstBuffer *buffer;
@ -391,7 +392,7 @@ composite_buffer (GstClockTime pts, GstBufferFlags flags, gint count, ...)
} }
static inline void static inline void
pull_and_check_full (GstHarness * h, guint8 * data, gsize size, pull_and_check_full (GstHarness * h, const guint8 * data, gsize size,
GstClockTime pts, GstBufferFlags flags) GstClockTime pts, GstBufferFlags flags)
{ {
GstBuffer *b = gst_harness_pull (h); GstBuffer *b = gst_harness_pull (h);
@ -426,16 +427,16 @@ pull_and_check_full (GstHarness * h, guint8 * data, gsize size,
} G_STMT_END } G_STMT_END
#define HEADER_DATA \ #define HEADER_DATA \
guint8 * const vps = sliced ? h265_128x128_sliced_vps : h265_128x128_vps; \ const guint8 * const vps = sliced ? h265_128x128_sliced_vps : h265_128x128_vps; \
guint8 * const sps = sliced ? h265_128x128_sliced_sps : h265_128x128_sps; \ const guint8 * const sps = sliced ? h265_128x128_sliced_sps : h265_128x128_sps; \
guint8 * const pps = sliced ? h265_128x128_sliced_pps : h265_128x128_pps; \ const guint8 * const pps = sliced ? h265_128x128_sliced_pps : h265_128x128_pps; \
const gsize vps_size = sliced ? sizeof (h265_128x128_sliced_vps) : sizeof (h265_128x128_vps); \ const gsize vps_size = sliced ? sizeof (h265_128x128_sliced_vps) : sizeof (h265_128x128_vps); \
const gsize sps_size = sliced ? sizeof (h265_128x128_sliced_sps) : sizeof (h265_128x128_sps); \ const gsize sps_size = sliced ? sizeof (h265_128x128_sliced_sps) : sizeof (h265_128x128_sps); \
const gsize pps_size = sliced ? sizeof (h265_128x128_sliced_pps) : sizeof (h265_128x128_pps) const gsize pps_size = sliced ? sizeof (h265_128x128_sliced_pps) : sizeof (h265_128x128_pps)
#define SLICE_DATA \ #define SLICE_DATA \
guint8 * const slice_1 = sliced ? h265_128x128_slice_1_idr_n_lp : h265_128x128_slice_idr_n_lp; \ const guint8 * const slice_1 = sliced ? h265_128x128_slice_1_idr_n_lp : h265_128x128_slice_idr_n_lp; \
guint8 * const slice_2 = sliced ? h265_128x128_slice_2_idr_n_lp : NULL; \ const guint8 * const slice_2 = sliced ? h265_128x128_slice_2_idr_n_lp : NULL; \
const gsize slice_1_size = sliced ? sizeof (h265_128x128_slice_1_idr_n_lp) : sizeof (h265_128x128_slice_idr_n_lp); \ const gsize slice_1_size = sliced ? sizeof (h265_128x128_slice_1_idr_n_lp) : sizeof (h265_128x128_slice_idr_n_lp); \
const gsize slice_2_size = sliced ? sizeof (h265_128x128_slice_2_idr_n_lp) : 0 const gsize slice_2_size = sliced ? sizeof (h265_128x128_slice_2_idr_n_lp) : 0

View file

@ -194,7 +194,7 @@ cleanup_element (GstElement * element)
/* inits a standard test */ /* inits a standard test */
void void
gst_parser_test_init (GstParserTest * ptest, guint8 * data, guint size, gst_parser_test_init (GstParserTest * ptest, const guint8 * data, guint size,
guint num) guint num)
{ {
/* need these */ /* need these */
@ -318,7 +318,7 @@ gst_parser_test_run (GstParserTest * test, GstCaps ** out_caps)
* Test if the parser pushes clean data properly. * Test if the parser pushes clean data properly.
*/ */
void void
gst_parser_test_normal (guint8 * data, guint size) gst_parser_test_normal (const guint8 * data, guint size)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -333,7 +333,7 @@ gst_parser_test_normal (guint8 * data, guint size)
* about stream format. But it should still push the frame forward in EOS. * about stream format. But it should still push the frame forward in EOS.
*/ */
void void
gst_parser_test_drain_single (guint8 * data, guint size) gst_parser_test_drain_single (const guint8 * data, guint size)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -345,8 +345,8 @@ gst_parser_test_drain_single (guint8 * data, guint size)
* Make sure that parser does not drain garbage when EOS occurs. * Make sure that parser does not drain garbage when EOS occurs.
*/ */
void void
gst_parser_test_drain_garbage (guint8 * data, guint size, guint8 * garbage, gst_parser_test_drain_garbage (const guint8 * data, guint size,
guint gsize) guint8 * garbage, guint gsize)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -362,7 +362,7 @@ gst_parser_test_drain_garbage (guint8 * data, guint size, guint8 * garbage,
* separate buffers properly. * separate buffers properly.
*/ */
void void
gst_parser_test_split (guint8 * data, guint size) gst_parser_test_split (const guint8 * data, guint size)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -375,7 +375,7 @@ gst_parser_test_split (guint8 * data, guint size)
* Test if the parser skips garbage between frames properly. * Test if the parser skips garbage between frames properly.
*/ */
void void
gst_parser_test_skip_garbage (guint8 * data, guint size, guint8 * garbage, gst_parser_test_skip_garbage (const guint8 * data, guint size, guint8 * garbage,
guint gsize) guint gsize)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -394,7 +394,7 @@ gst_parser_test_skip_garbage (guint8 * data, guint size, guint8 * garbage,
* Test if the src caps are set according to stream format. * Test if the src caps are set according to stream format.
*/ */
void void
gst_parser_test_output_caps (guint8 * data, guint size, gst_parser_test_output_caps (const guint8 * data, guint size,
const gchar * input_caps, const gchar * output_caps) const gchar * input_caps, const gchar * output_caps)
{ {
GstParserTest ptest; GstParserTest ptest;
@ -419,7 +419,7 @@ gst_parser_test_output_caps (guint8 * data, guint size,
* Test if the src caps are set according to stream format. * Test if the src caps are set according to stream format.
*/ */
GstCaps * GstCaps *
gst_parser_test_get_output_caps (guint8 * data, guint size, gst_parser_test_get_output_caps (const guint8 * data, guint size,
const gchar * input_caps) const gchar * input_caps)
{ {
GstParserTest ptest; GstParserTest ptest;

View file

@ -43,8 +43,8 @@ typedef struct
} buffer_verify_data_s; } buffer_verify_data_s;
typedef struct { typedef struct {
guint8 *data; const guint8 *data;
guint size; guint size;
} datablob; } datablob;
typedef gboolean (*VerifyBuffer) (buffer_verify_data_s * vdata, GstBuffer * buf); typedef gboolean (*VerifyBuffer) (buffer_verify_data_s * vdata, GstBuffer * buf);
@ -84,8 +84,8 @@ typedef struct
/* series of buffers; middle series considered garbage */ /* series of buffers; middle series considered garbage */
struct { struct {
/* data and size */ /* data and size */
guint8 *data; const guint8 *data;
guint size; guint size;
/* num of frames with above data per buffer */ /* num of frames with above data per buffer */
guint fpb; guint fpb;
/* num of buffers */ /* num of buffers */
@ -98,30 +98,30 @@ typedef struct
} GstParserTest; } GstParserTest;
extern extern
void gst_parser_test_init (GstParserTest * ptest, guint8 * data, guint size, guint num); void gst_parser_test_init (GstParserTest * ptest, const guint8 * data, guint size, guint num);
extern extern
void gst_parser_test_run (GstParserTest * test, GstCaps ** out_caps); void gst_parser_test_run (GstParserTest * test, GstCaps ** out_caps);
extern extern
void gst_parser_test_normal (guint8 *data, guint size); void gst_parser_test_normal (const guint8 *data, guint size);
extern extern
void gst_parser_test_drain_single (guint8 *data, guint size); void gst_parser_test_drain_single (const guint8 *data, guint size);
extern extern
void gst_parser_test_drain_garbage (guint8 *data, guint size, guint8 *garbage, guint gsize); void gst_parser_test_drain_garbage (const guint8 *data, guint size, guint8 *garbage, guint gsize);
extern extern
void gst_parser_test_split (guint8 *data, guint size); void gst_parser_test_split (const guint8 *data, guint size);
extern extern
void gst_parser_test_skip_garbage (guint8 *data, guint size, guint8 *garbage, guint gsize); void gst_parser_test_skip_garbage (const guint8 *data, guint size, guint8 *garbage, guint gsize);
extern extern
void gst_parser_test_output_caps (guint8 *data, guint size, const gchar * input_caps, void gst_parser_test_output_caps (const guint8 *data, guint size, const gchar * input_caps,
const gchar * output_caps); const gchar * output_caps);
extern extern
GstCaps *gst_parser_test_get_output_caps (guint8 *data, guint size, const gchar * input_caps); GstCaps *gst_parser_test_get_output_caps (const guint8 *data, guint size, const gchar * input_caps);