h265bitwriter: Correct the all API to byte aligned.
[platform/upstream/gstreamer.git] / subprojects / gst-plugins-bad / tests / check / libs / h265bitwriter.c
1 /* GStreamer
2  *  Copyright (C) 2022 Intel Corporation
3  *     Author: He Junyan <junyan.he@intel.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the0
17  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20
21 #include <gst/check/gstcheck.h>
22 #include <gst/codecparsers/gsth265bitwriter.h>
23
24 #define DEFAULT_SCALING_LIST0  \
25   { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 }
26 #define SCALING_LIST0_4x4_0  \
27   { 7, 8, 12, 25, 16, 22, 17, 17, 16, 18, 26, 26, 26, 26, 26, 26 }
28 #define SCALING_LIST0_4x4_1  \
29   { 9, 8, 12, 25, 16, 22, 27, 17, 16, 38, 36, 26, 36, 26, 36, 26 }
30
31 #define DEFAULT_SCALING_LIST1  \
32   { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 16,    \
33     17, 16, 17, 18, 17, 18, 18, 17, 18, 21, 19, 20,    \
34     21, 20, 19, 21, 24, 22, 22, 24, 24, 22, 22, 24,    \
35     25, 25, 27, 30, 27, 25, 25, 29, 31, 35, 35, 31,    \
36     29, 36, 41, 44, 41, 36, 47, 54, 54, 47, 65, 70,    \
37     65, 88, 88, 115 }
38 #define DEFAULT_SCALING_LIST2  \
39   { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17,    \
40     17, 17, 17, 18, 18, 18, 18, 18, 18, 20, 20, 20,    \
41     20, 20, 20, 20, 24, 24, 24, 24, 24, 24, 24, 24,    \
42     25, 25, 25, 25, 25, 25, 25, 28, 28, 28, 28, 28,    \
43     28, 33, 33, 33, 33, 33, 41, 41, 41, 41, 54, 54,    \
44     54, 71, 71, 91 }
45 #define SCALING_LIST_16x16_0  \
46   { 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17,    \
47     17, 17, 17, 18, 18, 18, 18, 18, 18, 20, 20, 20,    \
48     21, 20, 20, 20, 24, 24, 27, 24, 24, 24, 24, 25,    \
49     25, 25, 25, 25, 25, 25, 23, 28, 28, 28, 28, 28,    \
50     28, 33, 33, 33, 33, 33, 21, 21, 51, 51, 54, 54,    \
51     54, 88, 71, 81 }
52 #define SCALING_LIST_16x16_1  \
53   { 10, 10, 16, 16, 16, 16, 16, 16, 16, 16, 17, 12,    \
54     17, 16, 17, 18, 17, 18, 18, 17, 18, 21, 19, 20,    \
55     21, 22, 39, 21, 24, 22, 22, 14, 14, 18, 22, 32,    \
56     25, 25, 27, 30, 27, 21, 25, 29, 31, 35, 35, 31,    \
57     29, 36, 41, 64, 41, 56, 43, 54, 54, 47, 65, 70,    \
58     65, 88, 105, 115 }
59
60 /* *INDENT-OFF* */
61 static const GstH265VPS vps = {
62   .id = 1,
63   .base_layer_internal_flag = 1,
64   .base_layer_available_flag = 1,
65   .max_layers_minus1 = 0,
66   .max_sub_layers_minus1 = 0,
67   .temporal_id_nesting_flag = 1,
68
69   .profile_tier_level = {
70     .profile_space = 0,
71     .tier_flag = 0,
72     .profile_idc = 4,
73     .profile_compatibility_flag = { 0, 0, 0, 0, 1, },
74
75     .progressive_source_flag = 1,
76     .interlaced_source_flag = 0,
77     .non_packed_constraint_flag = 1,
78     .frame_only_constraint_flag = 1,
79
80     .max_12bit_constraint_flag = 1,
81     .max_10bit_constraint_flag = 1,
82     .max_8bit_constraint_flag = 0,
83     .max_422chroma_constraint_flag = 1,
84     .max_420chroma_constraint_flag = 0,
85     .max_monochrome_constraint_flag = 0,
86     .intra_constraint_flag = 0,
87     .one_picture_only_constraint_flag = 0,
88     .lower_bit_rate_constraint_flag = 1,
89
90     .level_idc = 123,
91
92     .sub_layer_profile_present_flag = { 0, },
93     .sub_layer_level_present_flag = { 0, },
94   },
95
96   .sub_layer_ordering_info_present_flag = 1,
97   .max_dec_pic_buffering_minus1 = { 5, },
98   .max_num_reorder_pics = { 2, },
99   .max_latency_increase_plus1 = { 0, },
100
101   .max_layer_id = 0,
102   .num_layer_sets_minus1 = 0,
103
104   .timing_info_present_flag = 1,
105   .num_units_in_tick = 1001,
106   .time_scale = 60000,
107   .poc_proportional_to_timing_flag = 1,
108   .num_ticks_poc_diff_one_minus1 = 0,
109
110   .num_hrd_parameters = 1,
111   .hrd_layer_set_idx = 0,
112   .cprms_present_flag = 1,
113   .hrd_params = {
114     .nal_hrd_parameters_present_flag = 0,
115     .vcl_hrd_parameters_present_flag = 1,
116     .sub_pic_hrd_params_present_flag = 0,
117
118     .bit_rate_scale = 0,
119     .cpb_size_scale = 0,
120     .cpb_size_du_scale = 0,
121
122     .initial_cpb_removal_delay_length_minus1 = 23,
123     .au_cpb_removal_delay_length_minus1 = 21,
124     .dpb_output_delay_length_minus1 = 23,
125
126     .fixed_pic_rate_general_flag = { 1, },
127     .fixed_pic_rate_within_cvs_flag = { 1, },
128
129     .elemental_duration_in_tc_minus1 = { 0, },
130     .low_delay_hrd_flag = { 0, },
131     .cpb_cnt_minus1 = { 0, },
132
133     .sublayer_hrd_params = {
134       { .bit_rate_value_minus1 = { 0, },
135         .cpb_size_value_minus1 = { 0, },
136         .cpb_size_du_value_minus1 = { 0, },
137         .bit_rate_du_value_minus1 = { 0, },
138         .cbr_flag = { 1, },
139       },
140     }
141   },
142
143   .vps_extension = 0,
144 };
145
146 static const GstH265SPS sps = {
147   .id = 2,
148   .max_sub_layers_minus1 = 0,
149   .temporal_id_nesting_flag = 1,
150
151   .profile_tier_level = {
152     .profile_space = 0,
153     .tier_flag = 0,
154     .profile_idc = 4,
155     .profile_compatibility_flag = { 0, 0, 0, 0, 1, },
156
157     .progressive_source_flag = 1,
158     .interlaced_source_flag = 0,
159     .non_packed_constraint_flag = 1,
160     .frame_only_constraint_flag = 1,
161
162     .max_12bit_constraint_flag = 1,
163     .max_10bit_constraint_flag = 1,
164     .max_8bit_constraint_flag = 0,
165     .max_422chroma_constraint_flag = 1,
166     .max_420chroma_constraint_flag = 0,
167     .max_monochrome_constraint_flag = 0,
168     .intra_constraint_flag = 0,
169     .one_picture_only_constraint_flag = 0,
170     .lower_bit_rate_constraint_flag = 1,
171
172     .level_idc = 123,
173
174     .sub_layer_profile_present_flag = { 0, },
175     .sub_layer_level_present_flag = { 0, },
176   },
177
178   .chroma_format_idc = 2,
179   .pic_width_in_luma_samples = 192,
180   .pic_height_in_luma_samples = 256,
181   .conformance_window_flag = 1,
182   .conf_win_left_offset = 0,
183   .conf_win_right_offset = 8,
184   .conf_win_top_offset = 0,
185   .conf_win_bottom_offset = 56,
186   .bit_depth_luma_minus8 = 0,
187   .bit_depth_chroma_minus8 = 0,
188   .log2_max_pic_order_cnt_lsb_minus4 = 4,
189
190   .sub_layer_ordering_info_present_flag = 1,
191   .max_dec_pic_buffering_minus1 = { 5, },
192   .max_num_reorder_pics = { 2, },
193   .max_latency_increase_plus1 = { 0, },
194
195   .log2_min_luma_coding_block_size_minus3 = 2,
196   .log2_diff_max_min_luma_coding_block_size = 1,
197   .log2_min_transform_block_size_minus2 = 0,
198   .log2_diff_max_min_transform_block_size = 3,
199   .max_transform_hierarchy_depth_inter = 3,
200   .max_transform_hierarchy_depth_intra = 3,
201
202   .scaling_list_enabled_flag = 1,
203   .scaling_list_data_present_flag = 1,
204
205   /* Set it manually. */
206   .scaling_list = {
207     .scaling_list_dc_coef_minus8_16x16 = { 8, 15, 9, 12, 18, 8 },
208     .scaling_list_dc_coef_minus8_32x32 = { 8, 6 },
209
210     .scaling_lists_4x4 = {
211       SCALING_LIST0_4x4_0,
212       DEFAULT_SCALING_LIST0,
213       SCALING_LIST0_4x4_1,
214       DEFAULT_SCALING_LIST0,
215       SCALING_LIST0_4x4_0,
216       SCALING_LIST0_4x4_1
217     },
218     .scaling_lists_8x8 = {
219       DEFAULT_SCALING_LIST1,
220       SCALING_LIST_16x16_0,
221       SCALING_LIST_16x16_0,
222       DEFAULT_SCALING_LIST2,
223       SCALING_LIST_16x16_1,
224       SCALING_LIST_16x16_0
225     },
226     .scaling_lists_16x16 = {
227       DEFAULT_SCALING_LIST1,
228       SCALING_LIST_16x16_0,
229       DEFAULT_SCALING_LIST1,
230       DEFAULT_SCALING_LIST2,
231       SCALING_LIST_16x16_1,
232       DEFAULT_SCALING_LIST2
233     },
234     .scaling_lists_32x32 = {
235       DEFAULT_SCALING_LIST1,
236       DEFAULT_SCALING_LIST2
237     }
238   },
239
240   .amp_enabled_flag = 1,
241   .sample_adaptive_offset_enabled_flag = 1,
242   .pcm_enabled_flag = 1,
243   .pcm_sample_bit_depth_luma_minus1 = 7,
244   .pcm_sample_bit_depth_chroma_minus1 = 7,
245   .log2_min_pcm_luma_coding_block_size_minus3 = 2,
246   .log2_diff_max_min_pcm_luma_coding_block_size = 0,
247   .pcm_loop_filter_disabled_flag = 0,
248
249   .num_short_term_ref_pic_sets = 3,
250   .short_term_ref_pic_set = {
251     {
252       .inter_ref_pic_set_prediction_flag = 0,
253       .NumDeltaPocs = 1,
254
255       .NumNegativePics = 0,
256       .DeltaPocS0 = { 0, },
257       .UsedByCurrPicS0 = { 0, },
258
259       .NumPositivePics = 1,
260       .DeltaPocS1 = { 3, },
261       .UsedByCurrPicS1 = { 1, },
262     },
263     {
264       .inter_ref_pic_set_prediction_flag = 0,
265       .NumDeltaPocs = 3,
266
267       .NumNegativePics = 2,
268       .DeltaPocS0 = { -1, -3, },
269       .UsedByCurrPicS0 = { 1, 1, },
270
271       .NumPositivePics = 1,
272       .DeltaPocS1 = { 2, },
273       .UsedByCurrPicS1 = { 1, },
274     },
275     {
276       .inter_ref_pic_set_prediction_flag = 0,
277       .NumDeltaPocs = 5,
278
279       .NumNegativePics = 3,
280       .DeltaPocS0 = { -1, -2, -4, },
281       .UsedByCurrPicS0 = { 1, 0, 1, },
282
283       .NumPositivePics = 2,
284       .DeltaPocS1 = { 2, 7, },
285       .UsedByCurrPicS1 = { 0, 1, },
286     },
287   },
288
289   .long_term_ref_pics_present_flag = 0,
290
291   .temporal_mvp_enabled_flag = 1,
292   .strong_intra_smoothing_enabled_flag = 0,
293
294   .vui_parameters_present_flag = 1,
295   .vui_params = {
296     .aspect_ratio_info_present_flag = 0,
297
298     .overscan_info_present_flag = 1,
299     .overscan_appropriate_flag = 0,
300     .video_signal_type_present_flag = 1,
301     .video_format = 5,
302     .video_full_range_flag = 0,
303     .colour_description_present_flag = 0,
304
305     .chroma_loc_info_present_flag = 1,
306     .chroma_sample_loc_type_top_field = 0,
307     .chroma_sample_loc_type_bottom_field = 0,
308
309     .neutral_chroma_indication_flag = 0,
310     .field_seq_flag = 0,
311     .frame_field_info_present_flag = 0,
312     .default_display_window_flag = 1,
313     .def_disp_win_left_offset = 0,
314     .def_disp_win_right_offset = 0,
315     .def_disp_win_top_offset = 0,
316     .def_disp_win_bottom_offset = 56,
317
318     .timing_info_present_flag = 1,
319     .num_units_in_tick = 1,
320     .time_scale = 60,
321
322     .poc_proportional_to_timing_flag = 0,
323
324     .hrd_parameters_present_flag = 1,
325     .hrd_params = {
326       .nal_hrd_parameters_present_flag = 0,
327       .vcl_hrd_parameters_present_flag = 1,
328       .sub_pic_hrd_params_present_flag = 0,
329
330       .bit_rate_scale = 0,
331       .cpb_size_scale = 0,
332
333       .initial_cpb_removal_delay_length_minus1 = 31,
334       .au_cpb_removal_delay_length_minus1 = 23,
335       .dpb_output_delay_length_minus1 = 23,
336
337       .fixed_pic_rate_general_flag = { 1, },
338       .fixed_pic_rate_within_cvs_flag = { 1, },
339       .elemental_duration_in_tc_minus1 = { 0, },
340       .cpb_cnt_minus1 = { 0, },
341
342       .sublayer_hrd_params = {
343         {
344           .bit_rate_value_minus1 = { 108353, },
345           .cpb_size_value_minus1 = { 1602517, },
346           .cbr_flag = { 1, },
347         },
348       }
349     },
350
351     .bitstream_restriction_flag = 1,
352     .tiles_fixed_structure_flag = 0,
353     .motion_vectors_over_pic_boundaries_flag = 1,
354     .restricted_ref_pic_lists_flag = 0,
355     .min_spatial_segmentation_idc = 0,
356     .max_bytes_per_pic_denom = 0,
357     .max_bits_per_min_cu_denom = 0,
358     .log2_max_mv_length_horizontal = 15,
359     .log2_max_mv_length_vertical = 15,
360   },
361
362   .sps_extension_flag = 1,
363   .sps_range_extension_flag = 1,
364   .sps_multilayer_extension_flag = 0,
365   .sps_3d_extension_flag = 0,
366   .sps_scc_extension_flag = 0,
367
368   .sps_extension_params = {
369     .transform_skip_rotation_enabled_flag = 0,
370     .transform_skip_context_enabled_flag = 0,
371     .implicit_rdpcm_enabled_flag = 0,
372     .explicit_rdpcm_enabled_flag = 0,
373     .extended_precision_processing_flag = 0,
374     .intra_smoothing_disabled_flag = 0,
375     .high_precision_offsets_enabled_flag = 0,
376     .persistent_rice_adaptation_enabled_flag = 0,
377     .cabac_bypass_alignment_enabled_flag = 0,
378   },
379
380   .vps = (GstH265VPS *) &vps,
381 };
382
383 static const GstH265PPS pps = {
384   .id = 1,
385   .dependent_slice_segments_enabled_flag = 1,
386   .output_flag_present_flag = 0,
387   .num_extra_slice_header_bits = 0,
388   .sign_data_hiding_enabled_flag = 1,
389   .cabac_init_present_flag = 0,
390   .num_ref_idx_l0_default_active_minus1 = 9,
391   .num_ref_idx_l1_default_active_minus1 = 4,
392   .init_qp_minus26 = -13,
393   .constrained_intra_pred_flag = 0,
394   .transform_skip_enabled_flag = 1,
395   .cu_qp_delta_enabled_flag = 1,
396   .diff_cu_qp_delta_depth = 0,
397   .cb_qp_offset = 4,
398   .cr_qp_offset = 5,
399   .slice_chroma_qp_offsets_present_flag = 0,
400   .weighted_pred_flag = 1,
401   .weighted_bipred_flag = 0,
402   .transquant_bypass_enabled_flag = 0,
403   .tiles_enabled_flag = 1,
404   .entropy_coding_sync_enabled_flag = 0,
405   .num_tile_columns_minus1 = 1,
406   .num_tile_rows_minus1 = 2,
407   .uniform_spacing_flag = 0,
408   .column_width_minus1 = { 2, },
409   .row_height_minus1 = { 1, 0 },
410   .loop_filter_across_tiles_enabled_flag = 1,
411   .loop_filter_across_slices_enabled_flag = 1,
412   .deblocking_filter_control_present_flag = 1,
413   .deblocking_filter_override_enabled_flag = 1,
414   .deblocking_filter_disabled_flag = 0,
415   .beta_offset_div2 = 3,
416   .tc_offset_div2 = 6,
417
418   .scaling_list_data_present_flag = 1,
419   .scaling_list = {
420     .scaling_list_dc_coef_minus8_16x16 = { 8, 8, 7, 15, 12, 8 },
421     .scaling_list_dc_coef_minus8_32x32 = { 8, 6 },
422
423     .scaling_lists_4x4 = {
424       DEFAULT_SCALING_LIST0,
425       SCALING_LIST0_4x4_0,
426       SCALING_LIST0_4x4_1,
427       SCALING_LIST0_4x4_1,
428       SCALING_LIST0_4x4_0,
429       DEFAULT_SCALING_LIST0,
430     },
431     .scaling_lists_8x8 = {
432       DEFAULT_SCALING_LIST1,
433       SCALING_LIST_16x16_0,
434       SCALING_LIST_16x16_0,
435       SCALING_LIST_16x16_1,
436       DEFAULT_SCALING_LIST2,
437       SCALING_LIST_16x16_0
438     },
439     .scaling_lists_16x16 = {
440       SCALING_LIST_16x16_1,
441       DEFAULT_SCALING_LIST1,
442       SCALING_LIST_16x16_0,
443       SCALING_LIST_16x16_1,
444       DEFAULT_SCALING_LIST2,
445       SCALING_LIST_16x16_1,
446     },
447     .scaling_lists_32x32 = {
448       DEFAULT_SCALING_LIST1,
449       SCALING_LIST_16x16_0,
450     }
451   },
452
453   .lists_modification_present_flag = 0,
454   .log2_parallel_merge_level_minus2 = 3,
455   .slice_segment_header_extension_present_flag = 0,
456   .pps_extension_flag = 1,
457   .pps_range_extension_flag = 1,
458   .pps_multilayer_extension_flag = 0,
459   .pps_3d_extension_flag = 0,
460   .pps_scc_extension_flag = 0,
461
462   .pps_extension_params = {
463     .log2_max_transform_skip_block_size_minus2 = 0,
464     .cross_component_prediction_enabled_flag = 0,
465     .chroma_qp_offset_list_enabled_flag = 1,
466     .diff_cu_chroma_qp_offset_depth = 1,
467     .chroma_qp_offset_list_len_minus1 = 5,
468     .cb_qp_offset_list = { -2, -7, -1, 3, 4, 1 },
469     .cr_qp_offset_list = { -2, 6, 5, 6, 8, 9 },
470     .log2_sao_offset_scale_luma = 0,
471     .log2_sao_offset_scale_chroma = 0,
472   },
473
474   .sps = (GstH265SPS *) &sps,
475 };
476
477 static const GstH265SliceHdr slice_hdr = {
478   .first_slice_segment_in_pic_flag = 1,
479   .type = 0,
480   .pic_order_cnt_lsb = 53,
481   .short_term_ref_pic_set_sps_flag = 1,
482   .short_term_ref_pic_set_idx = 2,
483   .temporal_mvp_enabled_flag = 1,
484   .sao_luma_flag = 1,
485   .sao_chroma_flag = 1,
486   .num_ref_idx_active_override_flag = 1,
487   .num_ref_idx_l0_active_minus1 = 3,
488   .num_ref_idx_l1_active_minus1 = 2,
489   .mvd_l1_zero_flag = 0,
490   .collocated_ref_idx = 1,
491   .five_minus_max_num_merge_cand = 1,
492   .qp_delta = 24,
493   .cu_chroma_qp_offset_enabled_flag = 0,
494   .deblocking_filter_override_flag = 1,
495   .deblocking_filter_disabled_flag = 0,
496   .beta_offset_div2 = 5,
497   .tc_offset_div2 = -1,
498   .num_entry_point_offsets = 0,
499
500   .pps = (GstH265PPS *) &pps,
501 };
502 /* *INDENT-ON* */
503
504 GST_START_TEST (test_h265_bitwriter_vps_sps_pps_slice_hdr)
505 {
506   GstH265ParserResult res;
507   gboolean ret;
508   GstH265NalUnit nalu;
509   GstH265Parser *const parser = gst_h265_parser_new ();
510   GstH265VPS vps_parsed;
511   GstH265SPS sps_parsed;
512   GstH265PPS pps_parsed;
513   GstH265SliceHdr slice_parsed;
514   guint8 header_data[2048] = { 0, };
515   guint8 header_nal[2048] = { 0, };
516   guint size;
517   guint32 nal_size;
518   guint i, j;
519
520   size = sizeof (header_data);
521   ret = gst_h265_bit_writer_vps (&vps, TRUE, header_data, &size);
522   fail_if (ret != GST_H265_BIT_WRITER_OK);
523
524   nal_size = sizeof (header_nal);
525   ret = gst_h265_bit_writer_convert_to_nal (4, FALSE, TRUE, FALSE,
526       header_data, size * 8, header_nal, &nal_size);
527   fail_if (ret != GST_H265_BIT_WRITER_OK);
528   fail_if (nal_size < size);
529
530   /* Parse it again */
531   res = gst_h265_parser_identify_nalu (parser, header_nal, 0,
532       sizeof (header_nal), &nalu);
533   assert_equals_int (res, GST_H265_PARSER_NO_NAL_END);
534
535   res = gst_h265_parser_parse_vps (parser, &nalu, &vps_parsed);
536   assert_equals_int (res, GST_H265_PARSER_OK);
537
538   /* We can not do simply memcmp, the parser may set some default
539      value for the fields which are not used for writing. */
540 #define CHECK_FIELD(FIELD)  fail_if(vps_parsed.FIELD != vps.FIELD)
541   CHECK_FIELD (id);
542   CHECK_FIELD (base_layer_internal_flag);
543   CHECK_FIELD (base_layer_available_flag);
544   CHECK_FIELD (max_layers_minus1);
545   CHECK_FIELD (max_sub_layers_minus1);
546   CHECK_FIELD (temporal_id_nesting_flag);
547   CHECK_FIELD (profile_tier_level.profile_space);
548   CHECK_FIELD (profile_tier_level.tier_flag);
549   CHECK_FIELD (profile_tier_level.profile_idc);
550   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[0]);
551   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[1]);
552   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[2]);
553   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[3]);
554   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[4]);
555   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[5]);
556   CHECK_FIELD (profile_tier_level.progressive_source_flag);
557   CHECK_FIELD (profile_tier_level.interlaced_source_flag);
558   CHECK_FIELD (profile_tier_level.non_packed_constraint_flag);
559   CHECK_FIELD (profile_tier_level.frame_only_constraint_flag);
560   CHECK_FIELD (profile_tier_level.max_12bit_constraint_flag);
561   CHECK_FIELD (profile_tier_level.max_10bit_constraint_flag);
562   CHECK_FIELD (profile_tier_level.max_8bit_constraint_flag);
563   CHECK_FIELD (profile_tier_level.max_422chroma_constraint_flag);
564   CHECK_FIELD (profile_tier_level.max_420chroma_constraint_flag);
565   CHECK_FIELD (profile_tier_level.max_monochrome_constraint_flag);
566   CHECK_FIELD (profile_tier_level.intra_constraint_flag);
567   CHECK_FIELD (profile_tier_level.one_picture_only_constraint_flag);
568   CHECK_FIELD (profile_tier_level.lower_bit_rate_constraint_flag);
569   CHECK_FIELD (profile_tier_level.level_idc);
570   CHECK_FIELD (sub_layer_ordering_info_present_flag);
571   CHECK_FIELD (max_dec_pic_buffering_minus1[0]);
572   CHECK_FIELD (max_num_reorder_pics[0]);
573   CHECK_FIELD (max_latency_increase_plus1[0]);
574   CHECK_FIELD (max_layer_id);
575   CHECK_FIELD (num_layer_sets_minus1);
576   CHECK_FIELD (timing_info_present_flag);
577   CHECK_FIELD (num_units_in_tick);
578   CHECK_FIELD (time_scale);
579   CHECK_FIELD (poc_proportional_to_timing_flag);
580   CHECK_FIELD (num_ticks_poc_diff_one_minus1);
581   CHECK_FIELD (num_hrd_parameters);
582   CHECK_FIELD (hrd_layer_set_idx);
583   CHECK_FIELD (cprms_present_flag);
584   CHECK_FIELD (hrd_params.nal_hrd_parameters_present_flag);
585   CHECK_FIELD (hrd_params.vcl_hrd_parameters_present_flag);
586   CHECK_FIELD (hrd_params.sub_pic_hrd_params_present_flag);
587   CHECK_FIELD (hrd_params.bit_rate_scale);
588   CHECK_FIELD (hrd_params.cpb_size_scale);
589   CHECK_FIELD (hrd_params.cpb_size_du_scale);
590   CHECK_FIELD (hrd_params.initial_cpb_removal_delay_length_minus1);
591   CHECK_FIELD (hrd_params.au_cpb_removal_delay_length_minus1);
592   CHECK_FIELD (hrd_params.dpb_output_delay_length_minus1);
593   CHECK_FIELD (hrd_params.fixed_pic_rate_general_flag[0]);
594   CHECK_FIELD (hrd_params.fixed_pic_rate_within_cvs_flag[0]);
595   CHECK_FIELD (hrd_params.elemental_duration_in_tc_minus1[0]);
596   CHECK_FIELD (hrd_params.low_delay_hrd_flag[0]);
597   CHECK_FIELD (hrd_params.cpb_cnt_minus1[0]);
598   CHECK_FIELD (hrd_params.sublayer_hrd_params[0].bit_rate_value_minus1[0]);
599   CHECK_FIELD (hrd_params.sublayer_hrd_params[0].cpb_size_value_minus1[0]);
600   CHECK_FIELD (hrd_params.sublayer_hrd_params[0].cpb_size_du_value_minus1[0]);
601   CHECK_FIELD (hrd_params.sublayer_hrd_params[0].bit_rate_du_value_minus1[0]);
602   CHECK_FIELD (hrd_params.sublayer_hrd_params[0].cbr_flag[0]);
603   CHECK_FIELD (vps_extension);
604 #undef CHECK_FIELD
605
606   memset (header_data, 0, sizeof (header_data));
607   memset (header_nal, 0, sizeof (header_nal));
608
609   size = sizeof (header_data);
610   ret = gst_h265_bit_writer_sps (&sps, TRUE, header_data, &size);
611   fail_if (ret != GST_H265_BIT_WRITER_OK);
612
613   nal_size = sizeof (header_nal);
614   ret = gst_h265_bit_writer_convert_to_nal (4, FALSE, TRUE, FALSE,
615       header_data, size * 8, header_nal, &nal_size);
616   fail_if (ret != GST_H265_BIT_WRITER_OK);
617   fail_if (nal_size < size);
618
619   /* Parse it again */
620   res = gst_h265_parser_identify_nalu (parser, header_nal, 0,
621       sizeof (header_nal), &nalu);
622   assert_equals_int (res, GST_H265_PARSER_NO_NAL_END);
623
624   res = gst_h265_parser_parse_sps (parser, &nalu, &sps_parsed, TRUE);
625   assert_equals_int (res, GST_H265_PARSER_OK);
626
627 #define CHECK_FIELD(FIELD)  fail_if(sps_parsed.FIELD != sps.FIELD)
628   CHECK_FIELD (id);
629   CHECK_FIELD (max_sub_layers_minus1);
630   CHECK_FIELD (temporal_id_nesting_flag);
631   CHECK_FIELD (profile_tier_level.profile_space);
632   CHECK_FIELD (profile_tier_level.tier_flag);
633   CHECK_FIELD (profile_tier_level.profile_idc);
634   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[0]);
635   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[1]);
636   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[2]);
637   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[3]);
638   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[4]);
639   CHECK_FIELD (profile_tier_level.profile_compatibility_flag[5]);
640   CHECK_FIELD (profile_tier_level.progressive_source_flag);
641   CHECK_FIELD (profile_tier_level.interlaced_source_flag);
642   CHECK_FIELD (profile_tier_level.non_packed_constraint_flag);
643   CHECK_FIELD (profile_tier_level.frame_only_constraint_flag);
644   CHECK_FIELD (profile_tier_level.max_12bit_constraint_flag);
645   CHECK_FIELD (profile_tier_level.max_10bit_constraint_flag);
646   CHECK_FIELD (profile_tier_level.max_8bit_constraint_flag);
647   CHECK_FIELD (profile_tier_level.max_422chroma_constraint_flag);
648   CHECK_FIELD (profile_tier_level.max_420chroma_constraint_flag);
649   CHECK_FIELD (profile_tier_level.max_monochrome_constraint_flag);
650   CHECK_FIELD (profile_tier_level.intra_constraint_flag);
651   CHECK_FIELD (profile_tier_level.one_picture_only_constraint_flag);
652   CHECK_FIELD (profile_tier_level.lower_bit_rate_constraint_flag);
653   CHECK_FIELD (profile_tier_level.level_idc);
654   CHECK_FIELD (chroma_format_idc);
655   CHECK_FIELD (pic_width_in_luma_samples);
656   CHECK_FIELD (pic_height_in_luma_samples);
657   CHECK_FIELD (conformance_window_flag);
658   CHECK_FIELD (conf_win_left_offset);
659   CHECK_FIELD (conf_win_right_offset);
660   CHECK_FIELD (conf_win_top_offset);
661   CHECK_FIELD (conf_win_bottom_offset);
662   CHECK_FIELD (bit_depth_luma_minus8);
663   CHECK_FIELD (bit_depth_chroma_minus8);
664   CHECK_FIELD (log2_max_pic_order_cnt_lsb_minus4);
665   CHECK_FIELD (sub_layer_ordering_info_present_flag);
666   CHECK_FIELD (max_dec_pic_buffering_minus1[0]);
667   CHECK_FIELD (max_num_reorder_pics[0]);
668   CHECK_FIELD (max_latency_increase_plus1[0]);
669   CHECK_FIELD (log2_min_luma_coding_block_size_minus3);
670   CHECK_FIELD (log2_diff_max_min_luma_coding_block_size);
671   CHECK_FIELD (log2_min_transform_block_size_minus2);
672   CHECK_FIELD (log2_diff_max_min_transform_block_size);
673   CHECK_FIELD (max_transform_hierarchy_depth_inter);
674   CHECK_FIELD (max_transform_hierarchy_depth_intra);
675   CHECK_FIELD (scaling_list_enabled_flag);
676   CHECK_FIELD (scaling_list_data_present_flag);
677
678   for (i = 0; i < 6; i++)
679     CHECK_FIELD (scaling_list.scaling_list_dc_coef_minus8_16x16[i]);
680   for (i = 0; i < 2; i++)
681     CHECK_FIELD (scaling_list.scaling_list_dc_coef_minus8_32x32[i]);
682   for (i = 0; i < 6; i++) {
683     for (j = 0; j < 16; j++)
684       CHECK_FIELD (scaling_list.scaling_lists_4x4[i][j]);
685   }
686   for (i = 0; i < 6; i++) {
687     for (j = 0; j < 64; j++)
688       CHECK_FIELD (scaling_list.scaling_lists_8x8[i][j]);
689   }
690   for (i = 0; i < 6; i++) {
691     for (j = 0; j < 64; j++)
692       CHECK_FIELD (scaling_list.scaling_lists_16x16[i][j]);
693   }
694   for (i = 0; i < 2; i++) {
695     for (j = 0; j < 64; j++)
696       CHECK_FIELD (scaling_list.scaling_lists_32x32[i][j]);
697   }
698
699   CHECK_FIELD (amp_enabled_flag);
700   CHECK_FIELD (sample_adaptive_offset_enabled_flag);
701   CHECK_FIELD (pcm_enabled_flag);
702   CHECK_FIELD (pcm_sample_bit_depth_luma_minus1);
703   CHECK_FIELD (pcm_sample_bit_depth_chroma_minus1);
704   CHECK_FIELD (log2_min_pcm_luma_coding_block_size_minus3);
705   CHECK_FIELD (log2_diff_max_min_pcm_luma_coding_block_size);
706   CHECK_FIELD (pcm_loop_filter_disabled_flag);
707   CHECK_FIELD (num_short_term_ref_pic_sets);
708
709   for (i = 0; i < 3; i++) {
710     CHECK_FIELD (short_term_ref_pic_set[i].inter_ref_pic_set_prediction_flag);
711     CHECK_FIELD (short_term_ref_pic_set[i].NumDeltaPocs);
712     CHECK_FIELD (short_term_ref_pic_set[i].NumNegativePics);
713     for (j = 0; j < sps_parsed.short_term_ref_pic_set[i].NumNegativePics; j++) {
714       CHECK_FIELD (short_term_ref_pic_set[i].DeltaPocS0[j]);
715       CHECK_FIELD (short_term_ref_pic_set[i].UsedByCurrPicS0[j]);
716     }
717     CHECK_FIELD (short_term_ref_pic_set[i].NumPositivePics);
718     for (j = 0; j < sps_parsed.short_term_ref_pic_set[i].NumPositivePics; j++) {
719       CHECK_FIELD (short_term_ref_pic_set[i].DeltaPocS1[j]);
720       CHECK_FIELD (short_term_ref_pic_set[i].UsedByCurrPicS1[j]);
721     }
722   }
723
724   CHECK_FIELD (long_term_ref_pics_present_flag);
725   CHECK_FIELD (temporal_mvp_enabled_flag);
726   CHECK_FIELD (strong_intra_smoothing_enabled_flag);
727   CHECK_FIELD (vui_parameters_present_flag);
728   CHECK_FIELD (vui_params.aspect_ratio_info_present_flag);
729   CHECK_FIELD (vui_params.overscan_info_present_flag);
730   CHECK_FIELD (vui_params.overscan_appropriate_flag);
731   CHECK_FIELD (vui_params.video_signal_type_present_flag);
732   CHECK_FIELD (vui_params.video_format);
733   CHECK_FIELD (vui_params.video_full_range_flag);
734   CHECK_FIELD (vui_params.colour_description_present_flag);
735   CHECK_FIELD (vui_params.chroma_loc_info_present_flag);
736   CHECK_FIELD (vui_params.chroma_sample_loc_type_top_field);
737   CHECK_FIELD (vui_params.chroma_sample_loc_type_bottom_field);
738   CHECK_FIELD (vui_params.neutral_chroma_indication_flag);
739   CHECK_FIELD (vui_params.field_seq_flag);
740   CHECK_FIELD (vui_params.frame_field_info_present_flag);
741   CHECK_FIELD (vui_params.default_display_window_flag);
742   CHECK_FIELD (vui_params.def_disp_win_left_offset);
743   CHECK_FIELD (vui_params.def_disp_win_right_offset);
744   CHECK_FIELD (vui_params.def_disp_win_top_offset);
745   CHECK_FIELD (vui_params.def_disp_win_bottom_offset);
746   CHECK_FIELD (vui_params.timing_info_present_flag);
747   CHECK_FIELD (vui_params.num_units_in_tick);
748   CHECK_FIELD (vui_params.time_scale);
749   CHECK_FIELD (vui_params.poc_proportional_to_timing_flag);
750   CHECK_FIELD (vui_params.hrd_parameters_present_flag);
751   CHECK_FIELD (vui_params.hrd_params.nal_hrd_parameters_present_flag);
752   CHECK_FIELD (vui_params.hrd_params.vcl_hrd_parameters_present_flag);
753   CHECK_FIELD (vui_params.hrd_params.sub_pic_hrd_params_present_flag);
754   CHECK_FIELD (vui_params.hrd_params.bit_rate_scale);
755   CHECK_FIELD (vui_params.hrd_params.cpb_size_scale);
756   CHECK_FIELD (vui_params.hrd_params.cpb_size_du_scale);
757   CHECK_FIELD (vui_params.hrd_params.initial_cpb_removal_delay_length_minus1);
758   CHECK_FIELD (vui_params.hrd_params.au_cpb_removal_delay_length_minus1);
759   CHECK_FIELD (vui_params.hrd_params.dpb_output_delay_length_minus1);
760   CHECK_FIELD (vui_params.hrd_params.fixed_pic_rate_general_flag[0]);
761   CHECK_FIELD (vui_params.hrd_params.fixed_pic_rate_within_cvs_flag[0]);
762   CHECK_FIELD (vui_params.hrd_params.elemental_duration_in_tc_minus1[0]);
763   CHECK_FIELD (vui_params.hrd_params.low_delay_hrd_flag[0]);
764   CHECK_FIELD (vui_params.hrd_params.cpb_cnt_minus1[0]);
765   CHECK_FIELD
766       (vui_params.hrd_params.sublayer_hrd_params[0].bit_rate_value_minus1[0]);
767   CHECK_FIELD
768       (vui_params.hrd_params.sublayer_hrd_params[0].cpb_size_value_minus1[0]);
769   CHECK_FIELD (vui_params.hrd_params.sublayer_hrd_params[0].
770       cpb_size_du_value_minus1[0]);
771   CHECK_FIELD (vui_params.hrd_params.sublayer_hrd_params[0].
772       bit_rate_du_value_minus1[0]);
773   CHECK_FIELD (vui_params.hrd_params.sublayer_hrd_params[0].cbr_flag[0]);
774   CHECK_FIELD (vui_params.bitstream_restriction_flag);
775   CHECK_FIELD (vui_params.tiles_fixed_structure_flag);
776   CHECK_FIELD (vui_params.motion_vectors_over_pic_boundaries_flag);
777   CHECK_FIELD (vui_params.restricted_ref_pic_lists_flag);
778   CHECK_FIELD (vui_params.min_spatial_segmentation_idc);
779   CHECK_FIELD (vui_params.max_bytes_per_pic_denom);
780   CHECK_FIELD (vui_params.max_bits_per_min_cu_denom);
781   CHECK_FIELD (vui_params.log2_max_mv_length_horizontal);
782   CHECK_FIELD (vui_params.log2_max_mv_length_vertical);
783   CHECK_FIELD (sps_extension_flag);
784   CHECK_FIELD (sps_range_extension_flag);
785   CHECK_FIELD (sps_multilayer_extension_flag);
786   CHECK_FIELD (sps_3d_extension_flag);
787   CHECK_FIELD (sps_scc_extension_flag);
788   CHECK_FIELD (sps_extension_params.transform_skip_rotation_enabled_flag);
789   CHECK_FIELD (sps_extension_params.transform_skip_context_enabled_flag);
790   CHECK_FIELD (sps_extension_params.implicit_rdpcm_enabled_flag);
791   CHECK_FIELD (sps_extension_params.explicit_rdpcm_enabled_flag);
792   CHECK_FIELD (sps_extension_params.extended_precision_processing_flag);
793   CHECK_FIELD (sps_extension_params.intra_smoothing_disabled_flag);
794   CHECK_FIELD (sps_extension_params.high_precision_offsets_enabled_flag);
795   CHECK_FIELD (sps_extension_params.persistent_rice_adaptation_enabled_flag);
796   CHECK_FIELD (sps_extension_params.cabac_bypass_alignment_enabled_flag);
797 #undef CHECK_FIELD
798
799   memset (header_data, 0, sizeof (header_data));
800   memset (header_nal, 0, sizeof (header_nal));
801
802   size = sizeof (header_data);
803   ret = gst_h265_bit_writer_pps (&pps, TRUE, header_data, &size);
804   fail_if (ret != GST_H265_BIT_WRITER_OK);
805
806   nal_size = sizeof (header_nal);
807   ret = gst_h265_bit_writer_convert_to_nal (4, FALSE, TRUE, FALSE,
808       header_data, size * 8, header_nal, &nal_size);
809   fail_if (ret != GST_H265_BIT_WRITER_OK);
810   fail_if (nal_size < size);
811
812   /* Parse it again */
813   res = gst_h265_parser_identify_nalu (parser, header_nal, 0,
814       sizeof (header_nal), &nalu);
815   assert_equals_int (res, GST_H265_PARSER_NO_NAL_END);
816
817   res = gst_h265_parser_parse_pps (parser, &nalu, &pps_parsed);
818   assert_equals_int (res, GST_H265_PARSER_OK);
819
820 #define CHECK_FIELD(FIELD)  fail_if(pps_parsed.FIELD != pps.FIELD)
821   CHECK_FIELD (id);
822   CHECK_FIELD (dependent_slice_segments_enabled_flag);
823   CHECK_FIELD (output_flag_present_flag);
824   CHECK_FIELD (num_extra_slice_header_bits);
825   CHECK_FIELD (sign_data_hiding_enabled_flag);
826   CHECK_FIELD (cabac_init_present_flag);
827   CHECK_FIELD (num_ref_idx_l0_default_active_minus1);
828   CHECK_FIELD (num_ref_idx_l1_default_active_minus1);
829   CHECK_FIELD (init_qp_minus26);
830   CHECK_FIELD (constrained_intra_pred_flag);
831   CHECK_FIELD (transform_skip_enabled_flag);
832   CHECK_FIELD (cu_qp_delta_enabled_flag);
833   CHECK_FIELD (diff_cu_qp_delta_depth);
834   CHECK_FIELD (cb_qp_offset);
835   CHECK_FIELD (cr_qp_offset);
836   CHECK_FIELD (slice_chroma_qp_offsets_present_flag);
837   CHECK_FIELD (weighted_pred_flag);
838   CHECK_FIELD (weighted_bipred_flag);
839   CHECK_FIELD (transquant_bypass_enabled_flag);
840   CHECK_FIELD (tiles_enabled_flag);
841   CHECK_FIELD (entropy_coding_sync_enabled_flag);
842   CHECK_FIELD (num_tile_columns_minus1);
843   CHECK_FIELD (num_tile_rows_minus1);
844   CHECK_FIELD (uniform_spacing_flag);
845   CHECK_FIELD (column_width_minus1[0]);
846   CHECK_FIELD (row_height_minus1[0]);
847   CHECK_FIELD (row_height_minus1[1]);
848   CHECK_FIELD (loop_filter_across_tiles_enabled_flag);
849   CHECK_FIELD (loop_filter_across_slices_enabled_flag);
850   CHECK_FIELD (deblocking_filter_control_present_flag);
851   CHECK_FIELD (deblocking_filter_override_enabled_flag);
852   CHECK_FIELD (deblocking_filter_disabled_flag);
853   CHECK_FIELD (beta_offset_div2);
854   CHECK_FIELD (tc_offset_div2);
855   CHECK_FIELD (scaling_list_data_present_flag);
856
857   for (i = 0; i < 6; i++)
858     CHECK_FIELD (scaling_list.scaling_list_dc_coef_minus8_16x16[i]);
859   for (i = 0; i < 2; i++)
860     CHECK_FIELD (scaling_list.scaling_list_dc_coef_minus8_32x32[i]);
861   for (i = 0; i < 6; i++) {
862     for (j = 0; j < 16; j++)
863       CHECK_FIELD (scaling_list.scaling_lists_4x4[i][j]);
864   }
865   for (i = 0; i < 6; i++) {
866     for (j = 0; j < 64; j++)
867       CHECK_FIELD (scaling_list.scaling_lists_8x8[i][j]);
868   }
869   for (i = 0; i < 6; i++) {
870     for (j = 0; j < 64; j++)
871       CHECK_FIELD (scaling_list.scaling_lists_16x16[i][j]);
872   }
873   for (i = 0; i < 2; i++) {
874     for (j = 0; j < 64; j++)
875       CHECK_FIELD (scaling_list.scaling_lists_32x32[i][j]);
876   }
877
878   CHECK_FIELD (lists_modification_present_flag);
879   CHECK_FIELD (log2_parallel_merge_level_minus2);
880   CHECK_FIELD (slice_segment_header_extension_present_flag);
881   CHECK_FIELD (pps_extension_flag);
882   CHECK_FIELD (pps_range_extension_flag);
883   CHECK_FIELD (pps_multilayer_extension_flag);
884   CHECK_FIELD (pps_3d_extension_flag);
885   CHECK_FIELD (pps_scc_extension_flag);
886   CHECK_FIELD (pps_extension_params.log2_max_transform_skip_block_size_minus2);
887   CHECK_FIELD (pps_extension_params.cross_component_prediction_enabled_flag);
888   CHECK_FIELD (pps_extension_params.chroma_qp_offset_list_enabled_flag);
889   CHECK_FIELD (pps_extension_params.diff_cu_chroma_qp_offset_depth);
890   CHECK_FIELD (pps_extension_params.chroma_qp_offset_list_len_minus1);
891   for (i = 0; i < 6; i++)
892     CHECK_FIELD (pps_extension_params.cb_qp_offset_list[i]);
893   for (i = 0; i < 6; i++)
894     CHECK_FIELD (pps_extension_params.cr_qp_offset_list[i]);
895   CHECK_FIELD (pps_extension_params.log2_sao_offset_scale_luma);
896   CHECK_FIELD (pps_extension_params.log2_sao_offset_scale_chroma);
897 #undef CHECK_FIELD
898
899   memset (header_data, 0, sizeof (header_data));
900   memset (header_nal, 0, sizeof (header_nal));
901
902   size = sizeof (header_data);
903   ret = gst_h265_bit_writer_slice_hdr (&slice_hdr, TRUE,
904       GST_H265_NAL_SLICE_TRAIL_N, header_data, &size);
905   fail_if (ret != GST_H265_BIT_WRITER_OK);
906
907   nal_size = sizeof (header_nal);
908   ret = gst_h265_bit_writer_convert_to_nal (4, FALSE, TRUE, FALSE,
909       header_data, size * 8, header_nal, &nal_size);
910   fail_if (ret != GST_H265_BIT_WRITER_OK);
911   fail_if (nal_size < size);
912
913   /* Parse it again */
914   res = gst_h265_parser_identify_nalu (parser, header_nal, 0,
915       sizeof (header_nal), &nalu);
916   assert_equals_int (res, GST_H265_PARSER_NO_NAL_END);
917
918   res = gst_h265_parser_parse_slice_hdr (parser, &nalu, &slice_parsed);
919   assert_equals_int (res, GST_H265_PARSER_OK);
920
921 #define CHECK_FIELD(FIELD)  fail_if(slice_parsed.FIELD != slice_hdr.FIELD)
922   CHECK_FIELD (first_slice_segment_in_pic_flag);
923   CHECK_FIELD (type);
924   CHECK_FIELD (pic_order_cnt_lsb);
925   CHECK_FIELD (short_term_ref_pic_set_sps_flag);
926   CHECK_FIELD (short_term_ref_pic_set_idx);
927   CHECK_FIELD (temporal_mvp_enabled_flag);
928   CHECK_FIELD (sao_luma_flag);
929   CHECK_FIELD (sao_chroma_flag);
930   CHECK_FIELD (num_ref_idx_active_override_flag);
931   CHECK_FIELD (num_ref_idx_l0_active_minus1);
932   CHECK_FIELD (num_ref_idx_l1_active_minus1);
933   CHECK_FIELD (mvd_l1_zero_flag);
934   CHECK_FIELD (collocated_ref_idx);
935   CHECK_FIELD (five_minus_max_num_merge_cand);
936   CHECK_FIELD (qp_delta);
937   CHECK_FIELD (deblocking_filter_override_flag);
938   CHECK_FIELD (cu_chroma_qp_offset_enabled_flag);
939   CHECK_FIELD (deblocking_filter_override_flag);
940   CHECK_FIELD (beta_offset_div2);
941   CHECK_FIELD (tc_offset_div2);
942   CHECK_FIELD (num_entry_point_offsets);
943 #undef CHECK_FIELD
944
945   gst_h265_parser_free (parser);
946 }
947
948 GST_END_TEST;
949
950 static Suite *
951 h265bitwriter_suite (void)
952 {
953   Suite *s = suite_create ("H265 Parser library");
954
955   TCase *tc_chain = tcase_create ("general");
956
957   suite_add_tcase (s, tc_chain);
958   tcase_add_test (tc_chain, test_h265_bitwriter_vps_sps_pps_slice_hdr);
959
960   return s;
961 }
962
963 GST_CHECK_MAIN (h265bitwriter);