libxcoder  5.2.0
ni_decode_utils.h
Go to the documentation of this file.
1 /*******************************************************************************
2  *
3  * Copyright (C) 2022 NETINT Technologies
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy
6  * of this software and associated documentation files (the "Software"), to deal
7  * in the Software without restriction, including without limitation the rights
8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9  * copies of the Software, and to permit persons to whom the Software is
10  * furnished to do so, subject to the following conditions:
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18  * SOFTWARE.
19  *
20  ******************************************************************************/
21 
22 /*!*****************************************************************************
23  * \file decode_utils.h
24  *
25  * \brief Video decoding utility functions shared by Libxcoder API examples
26  ******************************************************************************/
27 
28 #pragma once
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 #include "ni_device_api.h"
35 #include "ni_av_codec.h"
36 #include "ni_bitstream.h"
37 #include "ni_generic_utils.h"
38 #include "ni_filter_utils.h"
39 
40 typedef struct dec_send_param
41 {
49 
50 typedef struct dec_recv_param
51 {
66 
70 typedef struct _ni_h264_sps_t
71 {
72  int width;
73  int height;
74 
75  unsigned int sps_id;
77  int level_idc;
81  int poc_type;
89  int mb_width;
90  int mb_height;
93  int mb_aff;
95  int crop;
96 
97  unsigned int crop_left;
98  unsigned int crop_right;
99  unsigned int crop_top;
100  unsigned int crop_bottom;
111  uint32_t time_scale;
118  uint8_t scaling_matrix4[6][16];
119  uint8_t scaling_matrix8[6][64];
124  int cpb_cnt;
132  uint8_t data[4096];
133  size_t data_size;
134 } ni_h264_sps_t;
135 
136 typedef struct _ni_h265_window_t
137 {
138  unsigned int left_offset;
139  unsigned int right_offset;
140  unsigned int top_offset;
141  unsigned int bottom_offset;
143 
144 typedef struct VUI
145 {
147 
150 
157  uint8_t matrix_coeffs;
158 
163 
166 
169 
172  uint32_t vui_time_scale;
176 
186 } VUI;
187 
188 typedef struct PTLCommon
189 {
190  uint8_t profile_space;
191  uint8_t tier_flag;
192  uint8_t profile_idc;
208  uint8_t inbld_flag;
209  uint8_t level_idc;
210 } PTLCommon;
211 
212 typedef struct PTL
213 {
216 
219 } PTL;
220 
221 typedef struct ScalingList
222 {
223  /* This is a little wasteful, since sizeID 0 only needs 8 coeffs,
224  * and size ID 3 only has 2 arrays, not 6. */
225  uint8_t sl[4][6][64];
226  uint8_t sl_dc[2][6];
227 } ScalingList;
228 
229 typedef struct ShortTermRPS
230 {
231  unsigned int num_negative_pics;
234  int32_t delta_poc[32];
235  uint8_t used[32];
236 } ShortTermRPS;
237 
241 typedef struct _ni_h265_sps_t
242 {
243  unsigned vps_id;
246 
249 
253  int pix_fmt;
254 
255  unsigned int log2_max_poc_lsb;
257 
259  struct
260  {
266 
269 
272 
273  unsigned int nb_st_rps;
275 
277  uint8_t sao_enabled;
278 
283 
284  struct
285  {
286  uint8_t bit_depth;
288  unsigned int log2_min_pcm_cb_size;
289  unsigned int log2_max_pcm_cb_size;
291  } pcm;
294 
295  unsigned int log2_min_cb_size;
297  unsigned int log2_min_tb_size;
298  unsigned int log2_max_trafo_size;
299  unsigned int log2_ctb_size;
300  unsigned int log2_min_pu_size;
301 
304 
315 
317  int width;
318  int height;
321  int ctb_size;
328  int tb_mask;
329 
330  int hshift[3];
331  int vshift[3];
332 
334 
335  uint8_t data[4096];
337 } ni_h265_sps_t;
338 
339 typedef struct _ni_vp9_header_info
340 {
341  int profile;
342  uint16_t header_length;
343  uint16_t width;
344  uint16_t height;
345  struct
346  {
347  uint32_t den;
348  uint32_t num;
349  } timebase;
350  uint32_t total_frames;
352 
353 typedef enum _ni_nalu_type
354 {
374 
375 typedef enum _ni_hevc_nalu_type
376 {
400 
401 uint64_t find_h264_next_nalu(ni_demo_context_t *p_ctx, uint8_t *p_dst, int *nal_type);
404 int h264_parse_scaling_list(ni_bitstream_reader_t *br, uint8_t *factors, int size,
405  const uint8_t *jvt_list, const uint8_t *fallback_list);
407  uint8_t (*scaling_matrix4)[16], uint8_t (*scaling_matrix8)[64]);
408 int h264_parse_sps(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps);
409 int h264_parse_sei(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps,
410  int *sei_type, int *is_interlaced);
412 int parse_h264_slice_header(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps,
413  int32_t *frame_num, unsigned int *first_mb_in_slice);
414 
415 uint64_t find_h265_next_nalu(ni_demo_context_t *p_ctx, uint8_t *p_dst, int *nal_type);
416 void h265_decode_sublayer_hrd(ni_bitstream_reader_t *br, unsigned int nb_cpb,
417  int subpic_params_present);
419 int h265_parse_ptl(ni_bitstream_reader_t *br, PTL *ptl, int max_num_sub_layers);
420 int h265_decode_hrd(ni_bitstream_reader_t *br, int common_inf_present, int max_sublayers);
424  const ni_h265_sps_t *sps, int is_slice_header);
425 int h265_decode_vui(ni_bitstream_reader_t *br, int apply_defdispwin, ni_h265_sps_t *sps);
426 int h265_parse_sps(ni_h265_sps_t *sps, uint8_t *buf, int size_bytes);
428 
429 uint64_t find_vp9_next_packet(ni_demo_context_t *p_ctx, uint8_t *p_dst, ni_vp9_header_info_t *vp9_info);
430 int vp9_parse_header(ni_vp9_header_info_t *vp9_info, uint8_t *buf, int size_bytes);
432 
434  ni_session_data_io_t *p_in_data,
435  int input_video_width, int input_video_height,
436  void *stream_info);
438  ni_session_data_io_t *p_out_data,
439  int output_video_width, int output_video_height,
440  FILE *p_file, int write_to_file,
441  int * p_rx_size);
442 int decoder_open_session(ni_session_context_t *p_dec_ctx, int iXcoderGUID,
443  ni_xcoder_params_t *p_dec_params);
445 
446 void *decoder_send_thread(void *args);
447 void *decoder_receive_thread(void *args);
448 
449 #ifdef __cplusplus
450 }
451 #endif
_ni_h265_sps_t::min_pu_width
int min_pu_width
Definition: ni_decode_utils.h:326
PTLCommon::progressive_source_flag
uint8_t progressive_source_flag
Definition: ni_decode_utils.h:194
_ni_h265_sps_t::pixel_shift
int pixel_shift
Definition: ni_decode_utils.h:252
_ni_h265_sps_t::st_rps
ShortTermRPS st_rps[HEVC_MAX_SHORT_TERM_REF_PIC_SETS]
Definition: ni_decode_utils.h:274
h265_decode_short_term_rps
int h265_decode_short_term_rps(ni_bitstream_reader_t *br, ShortTermRPS *rps, const ni_h265_sps_t *sps, int is_slice_header)
Definition: ni_decode_utils.c:1277
PTL::sub_layer_profile_present_flag
uint8_t sub_layer_profile_present_flag[HEVC_MAX_SUB_LAYERS]
Definition: ni_decode_utils.h:217
dec_recv_param::frame_list
ni_test_frame_list_t * frame_list
Definition: ni_decode_utils.h:62
_ni_h265_sps_t::temporal_id_nesting_flag
uint8_t temporal_id_nesting_flag
Definition: ni_decode_utils.h:265
dec_recv_param::scale_params
ni_scale_params_t * scale_params
Definition: ni_decode_utils.h:63
H264_NAL_SPS
@ H264_NAL_SPS
Definition: ni_decode_utils.h:362
VUI::vui_poc_proportional_to_timing_flag
int vui_poc_proportional_to_timing_flag
Definition: ni_decode_utils.h:173
dec_recv_param::p_sca_ctx
ni_session_context_t * p_sca_ctx
Definition: ni_decode_utils.h:54
_ni_h265_sps_t::transform_skip_rotation_enabled_flag
int transform_skip_rotation_enabled_flag
Definition: ni_decode_utils.h:306
_ni_h265_sps_t::data
uint8_t data[4096]
Definition: ni_decode_utils.h:335
_ni_h264_sps_t::color_trc
ni_color_transfer_characteristic_t color_trc
Definition: ni_decode_utils.h:107
_ni_h265_sps_t::bit_depth_chroma
int bit_depth_chroma
Definition: ni_decode_utils.h:251
ni_bitstream.h
Utility definitions to operate on bits in a bitstream.
VUI::vui_hrd_parameters_present_flag
int vui_hrd_parameters_present_flag
Definition: ni_decode_utils.h:175
VUI::colour_primaries
uint8_t colour_primaries
Definition: ni_decode_utils.h:155
_ni_h264_sps_t::time_offset_length
int time_offset_length
Definition: ni_decode_utils.h:123
_ni_h264_sps_t::log2_max_poc_lsb
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4
Definition: ni_decode_utils.h:82
find_h265_next_nalu
uint64_t find_h265_next_nalu(ni_demo_context_t *p_ctx, uint8_t *p_dst, int *nal_type)
Definition: ni_decode_utils.c:883
H264_NAL_IDR_SLICE
@ H264_NAL_IDR_SLICE
Definition: ni_decode_utils.h:360
PTLCommon::profile_idc
uint8_t profile_idc
Definition: ni_decode_utils.h:192
probe_vp9_stream_info
int probe_vp9_stream_info(ni_demo_context_t *p_ctx, ni_vp9_header_info_t *vp9_info)
Definition: ni_decode_utils.c:2180
VUI::motion_vectors_over_pic_boundaries_flag
int motion_vectors_over_pic_boundaries_flag
Definition: ni_decode_utils.h:179
probe_h265_stream_info
int probe_h265_stream_info(ni_demo_context_t *p_ctx, ni_h265_sps_t *sps)
Definition: ni_decode_utils.c:1994
decoder_send_data
int decoder_send_data(ni_demo_context_t *p_ctx, ni_session_context_t *p_dec_ctx, ni_session_data_io_t *p_in_data, int input_video_width, int input_video_height, void *stream_info)
Send decoder input data.
Definition: ni_decode_utils.c:2228
_ni_vp9_header_info::den
uint32_t den
Definition: ni_decode_utils.h:347
PTLCommon::interlaced_source_flag
uint8_t interlaced_source_flag
Definition: ni_decode_utils.h:195
_ni_h265_sps_t::min_cb_width
int min_cb_width
Definition: ni_decode_utils.h:322
HEVC_NAL_SEI_SUFFIX
@ HEVC_NAL_SEI_SUFFIX
Definition: ni_decode_utils.h:398
_ni_h264_sps_t::offset_for_ref_frame
short offset_for_ref_frame[256]
Definition: ni_decode_utils.h:113
dec_send_param::input_width
int input_width
Definition: ni_decode_utils.h:44
VUI::chroma_loc_info_present_flag
int chroma_loc_info_present_flag
Definition: ni_decode_utils.h:159
H264_NAL_FILLER_DATA
@ H264_NAL_FILLER_DATA
Definition: ni_decode_utils.h:367
HEVC_NAL_TSA_R
@ HEVC_NAL_TSA_R
Definition: ni_decode_utils.h:380
ni_nalu_type_t
enum _ni_nalu_type ni_nalu_type_t
_ni_h264_sps_t::vcl_hrd_parameters_present_flag
int vcl_hrd_parameters_present_flag
Definition: ni_decode_utils.h:121
PTLCommon::max_420chroma_constraint_flag
uint8_t max_420chroma_constraint_flag
Definition: ni_decode_utils.h:202
VUI::chroma_sample_loc_type_top_field
int chroma_sample_loc_type_top_field
Definition: ni_decode_utils.h:160
_ni_h264_sps_t::crop_bottom
unsigned int crop_bottom
frame_cropping_rect_bottom_offset
Definition: ni_decode_utils.h:100
HEVC_NAL_EOB_NUT
@ HEVC_NAL_EOB_NUT
Definition: ni_decode_utils.h:395
_ni_h264_sps_t::cpb_removal_delay_length
int cpb_removal_delay_length
cpb_removal_delay_length_minus1 + 1
Definition: ni_decode_utils.h:126
_ni_h264_sps_t::offset_for_top_to_bottom_field
int offset_for_top_to_bottom_field
Definition: ni_decode_utils.h:85
_ni_h264_sps_t::vui_parameters_present_flag
int vui_parameters_present_flag
Definition: ni_decode_utils.h:101
VUI::video_signal_type_present_flag
int video_signal_type_present_flag
Definition: ni_decode_utils.h:151
HEVC_NAL_RADL_N
@ HEVC_NAL_RADL_N
Definition: ni_decode_utils.h:383
H264_NAL_DPS
@ H264_NAL_DPS
Definition: ni_decode_utils.h:371
ni_generic_utils.h
VUI::log2_max_mv_length_vertical
int log2_max_mv_length_vertical
Definition: ni_decode_utils.h:185
PTLCommon
struct PTLCommon PTLCommon
H264_NAL_UNSPECIFIED
@ H264_NAL_UNSPECIFIED
Definition: ni_decode_utils.h:355
PTLCommon::profile_space
uint8_t profile_space
Definition: ni_decode_utils.h:190
_ni_h265_sps_t::ctb_height
int ctb_height
Definition: ni_decode_utils.h:320
H264_NAL_AUD
@ H264_NAL_AUD
Definition: ni_decode_utils.h:364
VUI
struct VUI VUI
VUI::chroma_sample_loc_type_bottom_field
int chroma_sample_loc_type_bottom_field
Definition: ni_decode_utils.h:161
h265_decode_profile_tier_level
int h265_decode_profile_tier_level(ni_bitstream_reader_t *br, PTLCommon *ptl)
Definition: ni_decode_utils.c:971
_ni_h265_sps_t::intra_smoothing_disabled_flag
int intra_smoothing_disabled_flag
Definition: ni_decode_utils.h:311
H264_NAL_PPS
@ H264_NAL_PPS
Definition: ni_decode_utils.h:363
HEVC_NAL_VPS
@ HEVC_NAL_VPS
Definition: ni_decode_utils.h:390
_ni_h265_sps_t::long_term_ref_pics_present_flag
uint8_t long_term_ref_pics_present_flag
Definition: ni_decode_utils.h:279
HEVC_MAX_SUB_LAYERS
#define HEVC_MAX_SUB_LAYERS
Definition: ni_generic_utils.h:69
dec_recv_param::xcoderGUID
int xcoderGUID
Definition: ni_decode_utils.h:59
PTLCommon::max_422chroma_constraint_flag
uint8_t max_422chroma_constraint_flag
Definition: ni_decode_utils.h:201
ni_color_space_t
enum _ni_color_space ni_color_space_t
_ni_h264_sps_t::log2_max_frame_num
int log2_max_frame_num
log2_max_frame_num_minus4 + 4
Definition: ni_decode_utils.h:80
H264_NAL_DPA
@ H264_NAL_DPA
Definition: ni_decode_utils.h:357
_ni_h265_sps_t::min_cb_height
int min_cb_height
Definition: ni_decode_utils.h:323
HEVC_NAL_SPS
@ HEVC_NAL_SPS
Definition: ni_decode_utils.h:391
_ni_h265_sps_t::max_latency_increase
int max_latency_increase
Definition: ni_decode_utils.h:263
_ni_h265_window_t::bottom_offset
unsigned int bottom_offset
Definition: ni_decode_utils.h:141
PTLCommon::inbld_flag
uint8_t inbld_flag
Definition: ni_decode_utils.h:208
ni_h265_window_t
struct _ni_h265_window_t ni_h265_window_t
ni_av_codec.h
Audio/video related utility definitions.
h264_parse_sps
int h264_parse_sps(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps)
Definition: ni_decode_utils.c:420
PTL::general_ptl
PTLCommon general_ptl
Definition: ni_decode_utils.h:214
decoder_send_thread
void * decoder_send_thread(void *args)
Definition: ni_decode_utils.c:2626
_ni_h265_window_t::left_offset
unsigned int left_offset
Definition: ni_decode_utils.h:138
_ni_h264_sps_t::gaps_in_frame_num_allowed_flag
int gaps_in_frame_num_allowed_flag
Definition: ni_decode_utils.h:88
_ni_h265_sps_t::loop_filter_disable_flag
uint8_t loop_filter_disable_flag
Definition: ni_decode_utils.h:290
dec_send_param::frame_list
ni_test_frame_list_t * frame_list
Definition: ni_decode_utils.h:47
VUI::default_display_window_flag
int default_display_window_flag
Definition: ni_decode_utils.h:167
probe_h264_stream_info
int probe_h264_stream_info(ni_demo_context_t *p_ctx, ni_h264_sps_t *sps)
Definition: ni_decode_utils.c:715
VUI::frame_field_info_present_flag
int frame_field_info_present_flag
Definition: ni_decode_utils.h:165
H264_NAL_SPS_EXT
@ H264_NAL_SPS_EXT
Definition: ni_decode_utils.h:368
_ni_h265_sps_t::min_pu_height
int min_pu_height
Definition: ni_decode_utils.h:327
_ni_h265_sps_t::implicit_rdpcm_enabled_flag
int implicit_rdpcm_enabled_flag
Definition: ni_decode_utils.h:308
ni_vp9_header_info_t
struct _ni_vp9_header_info ni_vp9_header_info_t
h264_parse_scaling_list
int h264_parse_scaling_list(ni_bitstream_reader_t *br, uint8_t *factors, int size, const uint8_t *jvt_list, const uint8_t *fallback_list)
Definition: ni_decode_utils.c:338
_ni_h265_sps_t::log2_diff_max_min_coding_block_size
unsigned int log2_diff_max_min_coding_block_size
Definition: ni_decode_utils.h:296
HEVC_NAL_TRAIL_N
@ HEVC_NAL_TRAIL_N
Definition: ni_decode_utils.h:377
_ni_h264_sps_t::crop_top
unsigned int crop_top
frame_cropping_rect_top_offset
Definition: ni_decode_utils.h:99
_ni_h264_sps_t::scaling_matrix8
uint8_t scaling_matrix8[6][64]
Definition: ni_decode_utils.h:119
VUI::overscan_appropriate_flag
int overscan_appropriate_flag
Definition: ni_decode_utils.h:149
_ni_h264_sps_t::fixed_frame_rate_flag
int fixed_frame_rate_flag
Definition: ni_decode_utils.h:112
_ni_h264_sps_t::colour_description_present_flag
int colour_description_present_flag
Definition: ni_decode_utils.h:105
_ni_h265_sps_t::sps_strong_intra_smoothing_enable_flag
uint8_t sps_strong_intra_smoothing_enable_flag
Definition: ni_decode_utils.h:293
_ni_h265_sps_t::amp_enabled_flag
uint8_t amp_enabled_flag
Definition: ni_decode_utils.h:276
dec_send_param::p_stream_info
void * p_stream_info
Definition: ni_decode_utils.h:46
VUI::video_format
int video_format
Definition: ni_decode_utils.h:152
PTL::sub_layer_level_present_flag
uint8_t sub_layer_level_present_flag[HEVC_MAX_SUB_LAYERS]
Definition: ni_decode_utils.h:218
_ni_h265_sps_t::width
int width
Definition: ni_decode_utils.h:317
h265_scaling_list_data
int h265_scaling_list_data(ni_bitstream_reader_t *br, ScalingList *sl, ni_h265_sps_t *sps)
Definition: ni_decode_utils.c:1190
_ni_h265_sps_t::pix_fmt
int pix_fmt
Definition: ni_decode_utils.h:253
_ni_h265_sps_t::tb_mask
int tb_mask
Definition: ni_decode_utils.h:328
find_vp9_next_packet
uint64_t find_vp9_next_packet(ni_demo_context_t *p_ctx, uint8_t *p_dst, ni_vp9_header_info_t *vp9_info)
Definition: ni_decode_utils.c:2074
dec_recv_param::p_fmt_ctx
ni_session_context_t * p_fmt_ctx
Definition: ni_decode_utils.h:58
ScalingList
struct ScalingList ScalingList
dec_recv_param::input_width
int input_width
Definition: ni_decode_utils.h:60
_ni_test_frame_list
Definition: ni_generic_utils.h:102
_ni_h265_sps_t::max_dec_pic_buffering
int max_dec_pic_buffering
Definition: ni_decode_utils.h:261
_ni_h264_sps_t::data_size
size_t data_size
Definition: ni_decode_utils.h:133
H264_NAL_AUXILIARY_SLICE
@ H264_NAL_AUXILIARY_SLICE
Definition: ni_decode_utils.h:372
_ni_h264_sps_t::crop
int crop
frame_cropping_flag
Definition: ni_decode_utils.h:95
_ni_h264_sps_t::initial_cpb_removal_delay_length
int initial_cpb_removal_delay_length
initial_cpb_removal_delay_length_minus1 + 1
Definition: ni_decode_utils.h:125
_ni_h264_sps_t::dpb_output_delay_length
int dpb_output_delay_length
dpb_output_delay_length_minus1 + 1
Definition: ni_decode_utils.h:127
ShortTermRPS::delta_poc
int32_t delta_poc[32]
Definition: ni_decode_utils.h:234
HEVC_NAL_AUD
@ HEVC_NAL_AUD
Definition: ni_decode_utils.h:393
HEVC_NAL_IDR_W_RADL
@ HEVC_NAL_IDR_W_RADL
Definition: ni_decode_utils.h:387
VUI::video_full_range_flag
int video_full_range_flag
Definition: ni_decode_utils.h:153
_ni_h265_sps_t::max_transform_hierarchy_depth_intra
int max_transform_hierarchy_depth_intra
Definition: ni_decode_utils.h:303
h265_set_default_scaling_list_data
void h265_set_default_scaling_list_data(ScalingList *sl)
Definition: ni_decode_utils.c:1159
dec_recv_param_t
struct dec_recv_param dec_recv_param_t
_ni_rational
Definition: ni_device_api.h:598
_ni_demo_context
Definition: ni_generic_utils.h:109
_ni_vp9_header_info
Definition: ni_decode_utils.h:339
h265_decode_sublayer_hrd
void h265_decode_sublayer_hrd(ni_bitstream_reader_t *br, unsigned int nb_cpb, int subpic_params_present)
Definition: ni_decode_utils.c:952
VUI::vui_timing_info_present_flag
int vui_timing_info_present_flag
Definition: ni_decode_utils.h:170
_ni_h264_sps_t::direct_8x8_inference_flag
int direct_8x8_inference_flag
Definition: ni_decode_utils.h:94
ScalingList::sl
uint8_t sl[4][6][64]
Definition: ni_decode_utils.h:225
_ni_h264_sps_t::full_range
int full_range
Definition: ni_decode_utils.h:104
_ni_h265_sps_t::min_tb_height
int min_tb_height
Definition: ni_decode_utils.h:325
_ni_vp9_header_info::header_length
uint16_t header_length
Definition: ni_decode_utils.h:342
_ni_h265_sps_t::cabac_bypass_alignment_enabled_flag
int cabac_bypass_alignment_enabled_flag
coded frame dimension in various units
Definition: ni_decode_utils.h:314
ni_color_primaries_t
enum _ni_color_primaries ni_color_primaries_t
_ni_vp9_header_info::timebase
struct _ni_vp9_header_info::@3 timebase
VUI::vui_num_units_in_tick
uint32_t vui_num_units_in_tick
Definition: ni_decode_utils.h:171
ni_filter_utils.h
_ni_h264_sps_t
Definition: ni_decode_utils.h:70
h265_decode_hrd
int h265_decode_hrd(ni_bitstream_reader_t *br, int common_inf_present, int max_sublayers)
Definition: ni_decode_utils.c:1087
_ni_hevc_nalu_type
_ni_hevc_nalu_type
Definition: ni_decode_utils.h:375
_ni_h264_sps_t::time_scale
uint32_t time_scale
Definition: ni_decode_utils.h:111
_ni_h265_sps_t::high_precision_offsets_enabled_flag
int high_precision_offsets_enabled_flag
Definition: ni_decode_utils.h:312
HEVC_NAL_PPS
@ HEVC_NAL_PPS
Definition: ni_decode_utils.h:392
VUI::min_spatial_segmentation_idc
int min_spatial_segmentation_idc
Definition: ni_decode_utils.h:181
_ni_vp9_header_info::num
uint32_t num
Definition: ni_decode_utils.h:348
ShortTermRPS::rps_idx_num_delta_pocs
int rps_idx_num_delta_pocs
Definition: ni_decode_utils.h:233
vp9_parse_header
int vp9_parse_header(ni_vp9_header_info_t *vp9_info, uint8_t *buf, int size_bytes)
Definition: ni_decode_utils.c:2117
_ni_h264_sps_t::mb_height
int mb_height
Definition: ni_decode_utils.h:91
_ni_h265_sps_t::height
int height
Definition: ni_decode_utils.h:318
dec_recv_param::p_ovly_ctx
ni_session_context_t * p_ovly_ctx
Definition: ni_decode_utils.h:57
_ni_h265_sps_t::pic_conf_win
ni_h265_window_t pic_conf_win
Definition: ni_decode_utils.h:248
_ni_h265_sps_t::log2_min_pcm_cb_size
unsigned int log2_min_pcm_cb_size
Definition: ni_decode_utils.h:288
h265_decode_vui
int h265_decode_vui(ni_bitstream_reader_t *br, int apply_defdispwin, ni_h265_sps_t *sps)
Definition: ni_decode_utils.c:1440
VUI::colour_description_present_flag
int colour_description_present_flag
Definition: ni_decode_utils.h:154
PTL
struct PTL PTL
_ni_h265_sps_t::num_reorder_pics
int num_reorder_pics
Definition: ni_decode_utils.h:262
_ni_h264_sps_t::bit_depth_chroma
int bit_depth_chroma
bit_depth_chroma_minus8 + 8
Definition: ni_decode_utils.h:129
_ni_h265_sps_t::output_window
ni_h265_window_t output_window
Definition: ni_decode_utils.h:247
PTLCommon::tier_flag
uint8_t tier_flag
Definition: ni_decode_utils.h:191
_ni_h265_window_t::right_offset
unsigned int right_offset
Definition: ni_decode_utils.h:139
VUI::field_seq_flag
int field_seq_flag
Definition: ni_decode_utils.h:164
_ni_h265_sps_t::min_tb_width
int min_tb_width
Definition: ni_decode_utils.h:324
_ni_session_data_io
Definition: ni_device_api.h:2866
_ni_h265_sps_t
Definition: ni_decode_utils.h:241
dec_recv_param::drawbox_params
ni_drawbox_params_t * drawbox_params
Definition: ni_decode_utils.h:64
_ni_h264_sps_t::num_units_in_tick
uint32_t num_units_in_tick
Definition: ni_decode_utils.h:110
PTLCommon::one_picture_only_constraint_flag
uint8_t one_picture_only_constraint_flag
Definition: ni_decode_utils.h:205
PTLCommon::frame_only_constraint_flag
uint8_t frame_only_constraint_flag
Definition: ni_decode_utils.h:197
_ni_h265_sps_t::bit_depth
int bit_depth
Definition: ni_decode_utils.h:250
VUI::max_bits_per_min_cu_denom
int max_bits_per_min_cu_denom
Definition: ni_decode_utils.h:183
H264_NAL_END_STREAM
@ H264_NAL_END_STREAM
Definition: ni_decode_utils.h:366
h264_parse_sei
int h264_parse_sei(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps, int *sei_type, int *is_interlaced)
Definition: ni_decode_utils.c:623
_ni_h264_sps_t::width
int width
Definition: ni_decode_utils.h:72
_ni_h264_sps_t::scaling_matrix_present
int scaling_matrix_present
Definition: ni_decode_utils.h:117
h264_parse_hrd
int h264_parse_hrd(ni_bitstream_reader_t *br, ni_h264_sps_t *sps)
Definition: ni_decode_utils.c:174
ShortTermRPS
Definition: ni_decode_utils.h:229
PTLCommon::max_monochrome_constraint_flag
uint8_t max_monochrome_constraint_flag
Definition: ni_decode_utils.h:203
VUI::matrix_coeffs
uint8_t matrix_coeffs
Definition: ni_decode_utils.h:157
_ni_h264_sps_t::bit_depth_luma
int bit_depth_luma
bit_depth_luma_minus8 + 8
Definition: ni_decode_utils.h:128
dec_send_param
Definition: ni_decode_utils.h:40
VUI::restricted_ref_pic_lists_flag
int restricted_ref_pic_lists_flag
Definition: ni_decode_utils.h:180
_ni_h265_sps_t::sao_enabled
uint8_t sao_enabled
Definition: ni_decode_utils.h:277
_ni_vp9_header_info::profile
int profile
Definition: ni_decode_utils.h:341
ShortTermRPS::used
uint8_t used[32]
Definition: ni_decode_utils.h:235
_ni_h264_sps_t::bitstream_restriction_flag
int bitstream_restriction_flag
Definition: ni_decode_utils.h:114
_ni_h264_sps_t::residual_color_transform_flag
int residual_color_transform_flag
residual_colour_transform_flag
Definition: ni_decode_utils.h:130
VUI::def_disp_win
ni_h265_window_t def_disp_win
Definition: ni_decode_utils.h:168
dec_recv_param::input_height
int input_height
Definition: ni_decode_utils.h:61
PTLCommon::max_12bit_constraint_flag
uint8_t max_12bit_constraint_flag
Definition: ni_decode_utils.h:198
_ni_h265_sps_t::log2_max_pcm_cb_size
unsigned int log2_max_pcm_cb_size
Definition: ni_decode_utils.h:289
_ni_h265_sps_t::bit_depth_chroma
uint8_t bit_depth_chroma
Definition: ni_decode_utils.h:287
_ni_h265_window_t::top_offset
unsigned int top_offset
Definition: ni_decode_utils.h:140
_ni_h265_sps_t::lt_ref_pic_poc_lsb_sps
uint16_t lt_ref_pic_poc_lsb_sps[HEVC_MAX_LONG_TERM_REF_PICS]
Definition: ni_decode_utils.h:280
ScalingList::sl_dc
uint8_t sl_dc[2][6]
Definition: ni_decode_utils.h:226
_ni_nalu_type
_ni_nalu_type
Definition: ni_decode_utils.h:353
HEVC_NAL_RASL_R
@ HEVC_NAL_RASL_R
Definition: ni_decode_utils.h:386
_ni_h265_sps_t::transform_skip_context_enabled_flag
int transform_skip_context_enabled_flag
Definition: ni_decode_utils.h:307
H264_NAL_DPC
@ H264_NAL_DPC
Definition: ni_decode_utils.h:359
dec_send_param::input_height
int input_height
Definition: ni_decode_utils.h:45
_ni_h265_sps_t::separate_colour_plane_flag
uint8_t separate_colour_plane_flag
Definition: ni_decode_utils.h:245
_ni_h265_sps_t::extended_precision_processing_flag
int extended_precision_processing_flag
Definition: ni_decode_utils.h:310
_ni_h265_sps_t::log2_min_tb_size
unsigned int log2_min_tb_size
Definition: ni_decode_utils.h:297
_ni_h265_sps_t::max_sub_layers
int max_sub_layers
Definition: ni_decode_utils.h:258
_ni_h264_sps_t::timing_info_present_flag
int timing_info_present_flag
Definition: ni_decode_utils.h:109
HEVC_NAL_FD_NUT
@ HEVC_NAL_FD_NUT
Definition: ni_decode_utils.h:396
HEVC_NAL_CRA_NUT
@ HEVC_NAL_CRA_NUT
Definition: ni_decode_utils.h:389
_ni_vp9_header_info::height
uint16_t height
Definition: ni_decode_utils.h:344
H264_NAL_SEI
@ H264_NAL_SEI
Definition: ni_decode_utils.h:361
_ni_h264_sps_t::color_primaries
ni_color_primaries_t color_primaries
Definition: ni_decode_utils.h:106
H264_NAL_PREFIX
@ H264_NAL_PREFIX
Definition: ni_decode_utils.h:369
_ni_vp9_header_info::width
uint16_t width
Definition: ni_decode_utils.h:343
parse_h264_slice_header
int parse_h264_slice_header(uint8_t *buf, int size_bytes, ni_h264_sps_t *sps, int32_t *frame_num, unsigned int *first_mb_in_slice)
Definition: ni_decode_utils.c:831
PTLCommon::max_14bit_constraint_flag
uint8_t max_14bit_constraint_flag
Definition: ni_decode_utils.h:207
VUI::vui_num_ticks_poc_diff_one_minus1
int vui_num_ticks_poc_diff_one_minus1
Definition: ni_decode_utils.h:174
_ni_scale_params
Definition: ni_filter_utils.h:33
_ni_session_context
Definition: ni_device_api.h:1408
_ni_h265_sps_t::bit_depth
uint8_t bit_depth
Definition: ni_decode_utils.h:286
VUI::max_bytes_per_pic_denom
int max_bytes_per_pic_denom
Definition: ni_decode_utils.h:182
h264_parse_scaling_matrices
int h264_parse_scaling_matrices(ni_bitstream_reader_t *br, const ni_h264_sps_t *sps, uint8_t(*scaling_matrix4)[16], uint8_t(*scaling_matrix8)[64])
Definition: ni_decode_utils.c:374
_ni_h264_sps_t::transform_bypass
int transform_bypass
qpprime_y_zero_transform_bypass_flag
Definition: ni_decode_utils.h:79
VUI::sar
ni_rational_t sar
Definition: ni_decode_utils.h:146
_ni_h265_sps_t::pcm_enabled_flag
int pcm_enabled_flag
Definition: ni_decode_utils.h:256
_ni_h264_sps_t::crop_left
unsigned int crop_left
frame_cropping_rect_left_offset
Definition: ni_decode_utils.h:97
ni_h264_sps_t
struct _ni_h264_sps_t ni_h264_sps_t
_ni_h265_sps_t::vps_id
unsigned vps_id
Definition: ni_decode_utils.h:243
HEVC_NAL_TSA_N
@ HEVC_NAL_TSA_N
Definition: ni_decode_utils.h:379
_ni_xcoder_params
Definition: ni_device_api.h:2713
VUI::tiles_fixed_structure_flag
int tiles_fixed_structure_flag
Definition: ni_decode_utils.h:178
_ni_h264_sps_t::sps_id
unsigned int sps_id
Definition: ni_decode_utils.h:75
PTLCommon::max_10bit_constraint_flag
uint8_t max_10bit_constraint_flag
Definition: ni_decode_utils.h:199
decoder_stat_report_and_close
void decoder_stat_report_and_close(ni_demo_context_t *p_ctx, ni_session_context_t *p_dec_ctx)
Definition: ni_decode_utils.c:2612
PTL
Definition: ni_decode_utils.h:212
VUI::log2_max_mv_length_horizontal
int log2_max_mv_length_horizontal
Definition: ni_decode_utils.h:184
_ni_h265_sps_t::explicit_rdpcm_enabled_flag
int explicit_rdpcm_enabled_flag
Definition: ni_decode_utils.h:309
ShortTermRPS
struct ShortTermRPS ShortTermRPS
dec_send_param::p_ctx
ni_demo_context_t * p_ctx
Definition: ni_decode_utils.h:42
_ni_h265_sps_t::qp_bd_offset
int qp_bd_offset
Definition: ni_decode_utils.h:333
ni_hevc_nalu_type
enum _ni_hevc_nalu_type ni_hevc_nalu_type
H264_NAL_END_SEQUENCE
@ H264_NAL_END_SEQUENCE
Definition: ni_decode_utils.h:365
HEVC_NAL_RASL_N
@ HEVC_NAL_RASL_N
Definition: ni_decode_utils.h:385
_ni_h264_sps_t::profile_idc
int profile_idc
Definition: ni_decode_utils.h:76
HEVC_NAL_IDR_N_LP
@ HEVC_NAL_IDR_N_LP
Definition: ni_decode_utils.h:388
PTL::sub_layer_ptl
PTLCommon sub_layer_ptl[HEVC_MAX_SUB_LAYERS]
Definition: ni_decode_utils.h:215
h264_parse_vui
int h264_parse_vui(ni_bitstream_reader_t *br, ni_h264_sps_t *sps)
Definition: ni_decode_utils.c:203
PTLCommon::non_packed_constraint_flag
uint8_t non_packed_constraint_flag
Definition: ni_decode_utils.h:196
HEVC_NAL_TRAIL_R
@ HEVC_NAL_TRAIL_R
Definition: ni_decode_utils.h:378
decoder_receive_data
int decoder_receive_data(ni_demo_context_t *p_ctx, ni_session_context_t *p_dec_ctx, ni_session_data_io_t *p_out_data, int output_video_width, int output_video_height, FILE *p_file, int write_to_file, int *p_rx_size)
Receive decoded output data from decoder.
Definition: ni_decode_utils.c:2416
VUI::overscan_info_present_flag
int overscan_info_present_flag
Definition: ni_decode_utils.h:148
_ni_h264_sps_t::mb_aff
int mb_aff
mb_adaptive_frame_field_flag
Definition: ni_decode_utils.h:93
_ni_h264_sps_t::data
uint8_t data[4096]
Definition: ni_decode_utils.h:132
HEVC_NAL_STSA_R
@ HEVC_NAL_STSA_R
Definition: ni_decode_utils.h:382
_ni_h265_sps_t::hshift
int hshift[3]
Definition: ni_decode_utils.h:330
h265_parse_ptl
int h265_parse_ptl(ni_bitstream_reader_t *br, PTL *ptl, int max_num_sub_layers)
Definition: ni_decode_utils.c:1041
_ni_h265_sps_t::log2_min_cb_size
unsigned int log2_min_cb_size
Definition: ni_decode_utils.h:295
_ni_h265_sps_t::log2_min_pu_size
unsigned int log2_min_pu_size
Definition: ni_decode_utils.h:300
_ni_h265_sps_t::sps_range_extension_flag
int sps_range_extension_flag
Definition: ni_decode_utils.h:305
PTLCommon
Definition: ni_decode_utils.h:188
VUI::bitstream_restriction_flag
int bitstream_restriction_flag
Definition: ni_decode_utils.h:177
_ni_h264_sps_t::scaling_matrix4
uint8_t scaling_matrix4[6][16]
Definition: ni_decode_utils.h:118
_ni_h265_sps_t::log2_ctb_size
unsigned int log2_ctb_size
Definition: ni_decode_utils.h:299
_ni_h264_sps_t::delta_pic_order_always_zero_flag
int delta_pic_order_always_zero_flag
Definition: ni_decode_utils.h:83
HEVC_MAX_SHORT_TERM_REF_PIC_SETS
#define HEVC_MAX_SHORT_TERM_REF_PIC_SETS
Definition: ni_generic_utils.h:70
_ni_h265_sps_t::num_long_term_ref_pics_sps
uint8_t num_long_term_ref_pics_sps
Definition: ni_decode_utils.h:282
_ni_h265_sps_t::ctb_width
int ctb_width
Definition: ni_decode_utils.h:319
VUI::neutra_chroma_indication_flag
int neutra_chroma_indication_flag
Definition: ni_decode_utils.h:162
_ni_h264_sps_t::nal_hrd_parameters_present_flag
int nal_hrd_parameters_present_flag
Definition: ni_decode_utils.h:120
ShortTermRPS::num_negative_pics
unsigned int num_negative_pics
Definition: ni_decode_utils.h:231
ScalingList
Definition: ni_decode_utils.h:221
ni_color_transfer_characteristic_t
enum _ni_color_transfer_characteristic ni_color_transfer_characteristic_t
_ni_h265_sps_t::vshift
int vshift[3]
Definition: ni_decode_utils.h:331
ni_device_api.h
Public definitions for operating NETINT video processing devices for video processing.
_ni_h265_sps_t::used_by_curr_pic_lt_sps_flag
uint8_t used_by_curr_pic_lt_sps_flag[HEVC_MAX_LONG_TERM_REF_PICS]
Definition: ni_decode_utils.h:281
_ni_h264_sps_t::level_idc
int level_idc
Definition: ni_decode_utils.h:77
_ni_h264_sps_t::video_signal_type_present_flag
int video_signal_type_present_flag
Definition: ni_decode_utils.h:103
HEVC_NAL_STSA_N
@ HEVC_NAL_STSA_N
Definition: ni_decode_utils.h:381
_ni_vp9_header_info::total_frames
uint32_t total_frames
Definition: ni_decode_utils.h:350
PTLCommon::level_idc
uint8_t level_idc
Definition: ni_decode_utils.h:209
decoder_receive_thread
void * decoder_receive_thread(void *args)
Definition: ni_decode_utils.c:2678
dec_send_param_t
struct dec_send_param dec_send_param_t
_ni_h264_sps_t::poc_type
int poc_type
pic_order_cnt_type
Definition: ni_decode_utils.h:81
dec_recv_param::p_ctx
ni_demo_context_t * p_ctx
Definition: ni_decode_utils.h:52
_ni_h264_sps_t::offset_for_non_ref_pic
int offset_for_non_ref_pic
Definition: ni_decode_utils.h:84
_ni_h265_sps_t::persistent_rice_adaptation_enabled_flag
int persistent_rice_adaptation_enabled_flag
Definition: ni_decode_utils.h:313
h265_parse_sps
int h265_parse_sps(ni_h265_sps_t *sps, uint8_t *buf, int size_bytes)
Definition: ni_decode_utils.c:1611
PTLCommon::intra_constraint_flag
uint8_t intra_constraint_flag
Definition: ni_decode_utils.h:204
_ni_h265_sps_t::ctb_size
int ctb_size
Definition: ni_decode_utils.h:321
_ni_h265_sps_t::nb_st_rps
unsigned int nb_st_rps
Definition: ni_decode_utils.h:273
_ni_h265_sps_t::pcm
struct _ni_h265_sps_t::@2 pcm
_ni_h265_sps_t::log2_max_poc_lsb
unsigned int log2_max_poc_lsb
Definition: ni_decode_utils.h:255
dec_recv_param::p_pad_ctx
ni_session_context_t * p_pad_ctx
Definition: ni_decode_utils.h:56
_ni_h264_sps_t::crop_right
unsigned int crop_right
frame_cropping_rect_right_offset
Definition: ni_decode_utils.h:98
_ni_h265_sps_t::log2_max_trafo_size
unsigned int log2_max_trafo_size
Definition: ni_decode_utils.h:298
dec_recv_param::p_dec_ctx
ni_session_context_t * p_dec_ctx
Definition: ni_decode_utils.h:53
_ni_h264_sps_t::chroma_format_idc
int chroma_format_idc
Definition: ni_decode_utils.h:78
_ni_h265_sps_t::chroma_format_idc
int chroma_format_idc
Definition: ni_decode_utils.h:244
find_h264_next_nalu
uint64_t find_h264_next_nalu(ni_demo_context_t *p_ctx, uint8_t *p_dst, int *nal_type)
Definition: ni_decode_utils.c:104
_ni_h265_sps_t::data_size
int data_size
Definition: ni_decode_utils.h:336
dec_send_param::p_dec_ctx
ni_session_context_t * p_dec_ctx
Definition: ni_decode_utils.h:43
dec_recv_param::p_crop_ctx
ni_session_context_t * p_crop_ctx
Definition: ni_decode_utils.h:55
_ni_h264_sps_t::max_dec_frame_buffering
unsigned int max_dec_frame_buffering
Definition: ni_decode_utils.h:116
_ni_h264_sps_t::frame_mbs_only_flag
int frame_mbs_only_flag
Definition: ni_decode_utils.h:92
HEVC_NAL_RADL_R
@ HEVC_NAL_RADL_R
Definition: ni_decode_utils.h:384
_ni_h264_sps_t::cpb_cnt
int cpb_cnt
See H.264 E.1.2.
Definition: ni_decode_utils.h:124
VUI::vui_time_scale
uint32_t vui_time_scale
Definition: ni_decode_utils.h:172
dec_recv_param
Definition: ni_decode_utils.h:50
_ni_bitstream_reader_t
Definition: ni_bitstream.h:119
_ni_h264_sps_t::height
int height
Definition: ni_decode_utils.h:73
_ni_h264_sps_t::pic_struct_present_flag
int pic_struct_present_flag
Definition: ni_decode_utils.h:122
_ni_h265_sps_t::ptl
PTL ptl
Definition: ni_decode_utils.h:268
H264_NAL_SLICE
@ H264_NAL_SLICE
Definition: ni_decode_utils.h:356
ShortTermRPS::num_delta_pocs
int num_delta_pocs
Definition: ni_decode_utils.h:232
_ni_h265_sps_t::scaling_list
ScalingList scaling_list
Definition: ni_decode_utils.h:271
_ni_h264_sps_t::sar
ni_rational_t sar
Definition: ni_decode_utils.h:102
ni_h265_sps_t
struct _ni_h265_sps_t ni_h265_sps_t
_ni_h264_sps_t::mb_width
int mb_width
(pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag)
Definition: ni_decode_utils.h:89
_ni_h265_sps_t::vui
VUI vui
Definition: ni_decode_utils.h:267
VUI
Definition: ni_decode_utils.h:144
HEVC_NAL_SEI_PREFIX
@ HEVC_NAL_SEI_PREFIX
Definition: ni_decode_utils.h:397
decoder_open_session
int decoder_open_session(ni_session_context_t *p_dec_ctx, int iXcoderGUID, ni_xcoder_params_t *p_dec_params)
decoder session open
Definition: ni_decode_utils.c:2575
PTLCommon::profile_compatibility_flag
uint8_t profile_compatibility_flag[32]
Definition: ni_decode_utils.h:193
H264_NAL_DPB
@ H264_NAL_DPB
Definition: ni_decode_utils.h:358
_ni_h265_sps_t::sps_temporal_mvp_enabled_flag
uint8_t sps_temporal_mvp_enabled_flag
Definition: ni_decode_utils.h:292
PTLCommon::lower_bit_rate_constraint_flag
uint8_t lower_bit_rate_constraint_flag
Definition: ni_decode_utils.h:206
_ni_h264_sps_t::ref_frame_count
int ref_frame_count
num_ref_frames
Definition: ni_decode_utils.h:87
HEVC_NAL_EOS_NUT
@ HEVC_NAL_EOS_NUT
Definition: ni_decode_utils.h:394
_ni_drawbox_params
Definition: ni_filter_utils.h:41
_ni_h264_sps_t::colorspace
ni_color_space_t colorspace
Definition: ni_decode_utils.h:108
_ni_h264_sps_t::poc_cycle_length
int poc_cycle_length
num_ref_frames_in_pic_order_cnt_cycle
Definition: ni_decode_utils.h:86
_ni_h265_sps_t::scaling_list_enable_flag
uint8_t scaling_list_enable_flag
Definition: ni_decode_utils.h:270
PTLCommon::max_8bit_constraint_flag
uint8_t max_8bit_constraint_flag
Definition: ni_decode_utils.h:200
_ni_h265_sps_t::temporal_layer
struct _ni_h265_sps_t::@1 temporal_layer[HEVC_MAX_SUB_LAYERS]
_ni_h264_sps_t::constraint_set_flags
int constraint_set_flags
constraint_set[0-3]_flag
Definition: ni_decode_utils.h:131
H264_NAL_SUB_SPS
@ H264_NAL_SUB_SPS
Definition: ni_decode_utils.h:370
VUI::transfer_characteristic
uint8_t transfer_characteristic
Definition: ni_decode_utils.h:156
_ni_h265_sps_t::max_transform_hierarchy_depth_inter
int max_transform_hierarchy_depth_inter
Definition: ni_decode_utils.h:302
_ni_h265_window_t
Definition: ni_decode_utils.h:136
_ni_h264_sps_t::num_reorder_frames
int num_reorder_frames
Definition: ni_decode_utils.h:115
HEVC_MAX_LONG_TERM_REF_PICS
#define HEVC_MAX_LONG_TERM_REF_PICS
Definition: ni_generic_utils.h:71