Lines Matching refs:bs
184 bitstream_start(bitstream *bs) in bitstream_start() argument
186 bs->max_size_in_dword = BITSTREAM_ALLOCATE_STEPPING; in bitstream_start()
187 bs->buffer = calloc(bs->max_size_in_dword * sizeof(int), 1); in bitstream_start()
188 bs->bit_offset = 0; in bitstream_start()
192 bitstream_end(bitstream *bs) in bitstream_end() argument
194 int pos = (bs->bit_offset >> 5); in bitstream_end()
195 int bit_offset = (bs->bit_offset & 0x1f); in bitstream_end()
199 bs->buffer[pos] = va_swap32((bs->buffer[pos] << bit_left)); in bitstream_end()
204 bitstream_put_ui(bitstream *bs, unsigned int val, int size_in_bits) in bitstream_put_ui() argument
206 int pos = (bs->bit_offset >> 5); in bitstream_put_ui()
207 int bit_offset = (bs->bit_offset & 0x1f); in bitstream_put_ui()
213 bs->bit_offset += size_in_bits; in bitstream_put_ui()
216 bs->buffer[pos] = (bs->buffer[pos] << size_in_bits | val); in bitstream_put_ui()
219 bs->buffer[pos] = (bs->buffer[pos] << bit_left) | (val >> size_in_bits); in bitstream_put_ui()
220 bs->buffer[pos] = va_swap32(bs->buffer[pos]); in bitstream_put_ui()
222 if (pos + 1 == bs->max_size_in_dword) { in bitstream_put_ui()
223 bs->max_size_in_dword += BITSTREAM_ALLOCATE_STEPPING; in bitstream_put_ui()
224 bs->buffer = realloc(bs->buffer, bs->max_size_in_dword * sizeof(unsigned int)); in bitstream_put_ui()
227 bs->buffer[pos + 1] = val; in bitstream_put_ui()
232 bitstream_put_ue(bitstream *bs, unsigned int val) in bitstream_put_ue() argument
242 bitstream_put_ui(bs, 0, size_in_bits - 1); // leading zero in bitstream_put_ue()
243 bitstream_put_ui(bs, val, size_in_bits); in bitstream_put_ue()
247 bitstream_put_se(bitstream *bs, int val) in bitstream_put_se() argument
256 bitstream_put_ue(bs, new_val); in bitstream_put_se()
260 bitstream_byte_aligning(bitstream *bs, int bit) in bitstream_byte_aligning() argument
262 int bit_offset = (bs->bit_offset & 0x7); in bitstream_byte_aligning()
276 bitstream_put_ui(bs, new_val, bit_left); in bitstream_byte_aligning()
280 rbsp_trailing_bits(bitstream *bs) in rbsp_trailing_bits() argument
282 bitstream_put_ui(bs, 1, 1); in rbsp_trailing_bits()
283 bitstream_byte_aligning(bs, 0); in rbsp_trailing_bits()
286 static void nal_start_code_prefix(bitstream *bs) in nal_start_code_prefix() argument
288 bitstream_put_ui(bs, 0x00000001, 32); in nal_start_code_prefix()
291 static void nal_header(bitstream *bs, int nal_ref_idc, int nal_unit_type) in nal_header() argument
293 bitstream_put_ui(bs, 0, 1); /* forbidden_zero_bit: 0 */ in nal_header()
294 bitstream_put_ui(bs, nal_ref_idc, 2); in nal_header()
295 bitstream_put_ui(bs, nal_unit_type, 5); in nal_header()
298 static void sps_rbsp(bitstream *bs) in sps_rbsp() argument
307 bitstream_put_ui(bs, profile_idc, 8); /* profile_idc */ in sps_rbsp()
308 …bitstream_put_ui(bs, !!(constraint_set_flag & 1), 1); /* constraint_set0_f… in sps_rbsp()
309 …bitstream_put_ui(bs, !!(constraint_set_flag & 2), 1); /* constraint_set1_f… in sps_rbsp()
310 …bitstream_put_ui(bs, !!(constraint_set_flag & 4), 1); /* constraint_set2_f… in sps_rbsp()
311 …bitstream_put_ui(bs, !!(constraint_set_flag & 8), 1); /* constraint_set3_f… in sps_rbsp()
312 bitstream_put_ui(bs, 0, 4); /* reserved_zero_4bits */ in sps_rbsp()
313 bitstream_put_ui(bs, seq_param.level_idc, 8); /* level_idc */ in sps_rbsp()
314 bitstream_put_ue(bs, seq_param.seq_parameter_set_id); /* seq_parameter_set_id */ in sps_rbsp()
317 bitstream_put_ue(bs, 1); /* chroma_format_idc = 1, 4:2:0 */ in sps_rbsp()
318 bitstream_put_ue(bs, 0); /* bit_depth_luma_minus8 */ in sps_rbsp()
319 bitstream_put_ue(bs, 0); /* bit_depth_chroma_minus8 */ in sps_rbsp()
320 bitstream_put_ui(bs, 0, 1); /* qpprime_y_zero_transform_bypass_flag */ in sps_rbsp()
321 bitstream_put_ui(bs, 0, 1); /* seq_scaling_matrix_present_flag */ in sps_rbsp()
324 …bitstream_put_ue(bs, seq_param.seq_fields.bits.log2_max_frame_num_minus4); /* log2_max_frame_num_m… in sps_rbsp()
325 …bitstream_put_ue(bs, seq_param.seq_fields.bits.pic_order_cnt_type); /* pic_order_cnt_type */ in sps_rbsp()
328 …bitstream_put_ue(bs, seq_param.seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4); /* log2_max… in sps_rbsp()
333 bitstream_put_ue(bs, seq_param.max_num_ref_frames); /* num_ref_frames */ in sps_rbsp()
334 …bitstream_put_ui(bs, 0, 1); /* gaps_in_frame_num_value_allowed_fla… in sps_rbsp()
336 bitstream_put_ue(bs, seq_param.picture_width_in_mbs - 1); /* pic_width_in_mbs_minus1 */ in sps_rbsp()
337 bitstream_put_ue(bs, seq_param.picture_height_in_mbs - 1); /* pic_height_in_map_units_minus1 */ in sps_rbsp()
338 …bitstream_put_ui(bs, seq_param.seq_fields.bits.frame_mbs_only_flag, 1); /* frame_mbs_only_flag … in sps_rbsp()
344 …bitstream_put_ui(bs, seq_param.seq_fields.bits.direct_8x8_inference_flag, 1); /* direct_8x8_i… in sps_rbsp()
345 bitstream_put_ui(bs, seq_param.frame_cropping_flag, 1); /* frame_cropping_flag */ in sps_rbsp()
348 bitstream_put_ue(bs, seq_param.frame_crop_left_offset); /* frame_crop_left_offset */ in sps_rbsp()
349 bitstream_put_ue(bs, seq_param.frame_crop_right_offset); /* frame_crop_right_offset */ in sps_rbsp()
350 bitstream_put_ue(bs, seq_param.frame_crop_top_offset); /* frame_crop_top_offset */ in sps_rbsp()
351 … bitstream_put_ue(bs, seq_param.frame_crop_bottom_offset); /* frame_crop_bottom_offset */ in sps_rbsp()
356 bitstream_put_ui(bs, 0, 1); /* vui_parameters_present_flag */ in sps_rbsp()
358 bitstream_put_ui(bs, 1, 1); /* vui_parameters_present_flag */ in sps_rbsp()
359 bitstream_put_ui(bs, 0, 1); /* aspect_ratio_info_present_flag */ in sps_rbsp()
360 bitstream_put_ui(bs, 0, 1); /* overscan_info_present_flag */ in sps_rbsp()
361 bitstream_put_ui(bs, 0, 1); /* video_signal_type_present_flag */ in sps_rbsp()
362 bitstream_put_ui(bs, 0, 1); /* chroma_loc_info_present_flag */ in sps_rbsp()
363 bitstream_put_ui(bs, 1, 1); /* timing_info_present_flag */ in sps_rbsp()
365 bitstream_put_ui(bs, 15, 32); in sps_rbsp()
366 bitstream_put_ui(bs, 900, 32); in sps_rbsp()
367 bitstream_put_ui(bs, 1, 1); in sps_rbsp()
369 bitstream_put_ui(bs, 1, 1); /* nal_hrd_parameters_present_flag */ in sps_rbsp()
372 bitstream_put_ue(bs, 0); /* cpb_cnt_minus1 */ in sps_rbsp()
373 bitstream_put_ui(bs, 4, 4); /* bit_rate_scale */ in sps_rbsp()
374 bitstream_put_ui(bs, 6, 4); /* cpb_size_scale */ in sps_rbsp()
376 bitstream_put_ue(bs, frame_bitrate - 1); /* bit_rate_value_minus1[0] */ in sps_rbsp()
377 bitstream_put_ue(bs, frame_bitrate*8 - 1); /* cpb_size_value_minus1[0] */ in sps_rbsp()
378 bitstream_put_ui(bs, 1, 1); /* cbr_flag[0] */ in sps_rbsp()
380 bitstream_put_ui(bs, 23, 5); /* initial_cpb_removal_delay_length_minus1 */ in sps_rbsp()
381 bitstream_put_ui(bs, 23, 5); /* cpb_removal_delay_length_minus1 */ in sps_rbsp()
382 bitstream_put_ui(bs, 23, 5); /* dpb_output_delay_length_minus1 */ in sps_rbsp()
383 bitstream_put_ui(bs, 23, 5); /* time_offset_length */ in sps_rbsp()
385 bitstream_put_ui(bs, 0, 1); /* vcl_hrd_parameters_present_flag */ in sps_rbsp()
386 bitstream_put_ui(bs, 0, 1); /* low_delay_hrd_flag */ in sps_rbsp()
388 bitstream_put_ui(bs, 0, 1); /* pic_struct_present_flag */ in sps_rbsp()
389 bitstream_put_ui(bs, 0, 1); /* bitstream_restriction_flag */ in sps_rbsp()
392 rbsp_trailing_bits(bs); /* rbsp_trailing_bits */ in sps_rbsp()
396 static void pps_rbsp(bitstream *bs) in pps_rbsp() argument
398 bitstream_put_ue(bs, pic_param.pic_parameter_set_id); /* pic_parameter_set_id */ in pps_rbsp()
399 bitstream_put_ue(bs, pic_param.seq_parameter_set_id); /* seq_parameter_set_id */ in pps_rbsp()
401 …bitstream_put_ui(bs, pic_param.pic_fields.bits.entropy_coding_mode_flag, 1); /* entropy_coding_mo… in pps_rbsp()
403 bitstream_put_ui(bs, 0, 1); /* pic_order_present_flag: 0 */ in pps_rbsp()
405 bitstream_put_ue(bs, 0); /* num_slice_groups_minus1 */ in pps_rbsp()
407 …bitstream_put_ue(bs, pic_param.num_ref_idx_l0_active_minus1); /* num_ref_idx_l0_active_minus1… in pps_rbsp()
408 …bitstream_put_ue(bs, pic_param.num_ref_idx_l1_active_minus1); /* num_ref_idx_l1_active_minus1… in pps_rbsp()
410 …bitstream_put_ui(bs, pic_param.pic_fields.bits.weighted_pred_flag, 1); /* weighted_pred_flag: … in pps_rbsp()
411 …bitstream_put_ui(bs, pic_param.pic_fields.bits.weighted_bipred_idc, 2); /* weighted_bipred_idc: 0 … in pps_rbsp()
413 bitstream_put_se(bs, pic_param.pic_init_qp - 26); /* pic_init_qp_minus26 */ in pps_rbsp()
414 bitstream_put_se(bs, 0); /* pic_init_qs_minus26 */ in pps_rbsp()
415 bitstream_put_se(bs, 0); /* chroma_qp_index_offset */ in pps_rbsp()
417 …bitstream_put_ui(bs, pic_param.pic_fields.bits.deblocking_filter_control_present_flag, 1); /* debl… in pps_rbsp()
418 bitstream_put_ui(bs, 0, 1); /* constrained_intra_pred_flag */ in pps_rbsp()
419 bitstream_put_ui(bs, 0, 1); /* redundant_pic_cnt_present_flag */ in pps_rbsp()
422 …bitstream_put_ui(bs, pic_param.pic_fields.bits.transform_8x8_mode_flag, 1); /*transform_8x8_mod… in pps_rbsp()
423 bitstream_put_ui(bs, 0, 1); /* pic_scaling_matrix_present_flag */ in pps_rbsp()
424 …bitstream_put_se(bs, pic_param.second_chroma_qp_index_offset ); /*second_chroma_qp_index_offset… in pps_rbsp()
426 rbsp_trailing_bits(bs); in pps_rbsp()
433 bitstream bs; in build_packed_pic_buffer() local
435 bitstream_start(&bs); in build_packed_pic_buffer()
436 nal_start_code_prefix(&bs); in build_packed_pic_buffer()
437 nal_header(&bs, NAL_REF_IDC_HIGH, NAL_PPS); in build_packed_pic_buffer()
438 pps_rbsp(&bs); in build_packed_pic_buffer()
439 bitstream_end(&bs); in build_packed_pic_buffer()
441 *header_buffer = (unsigned char *)bs.buffer; in build_packed_pic_buffer()
442 return bs.bit_offset; in build_packed_pic_buffer()
448 bitstream bs; in build_packed_seq_buffer() local
450 bitstream_start(&bs); in build_packed_seq_buffer()
451 nal_start_code_prefix(&bs); in build_packed_seq_buffer()
452 nal_header(&bs, NAL_REF_IDC_HIGH, NAL_SPS); in build_packed_seq_buffer()
453 sps_rbsp(&bs); in build_packed_seq_buffer()
454 bitstream_end(&bs); in build_packed_seq_buffer()
456 *header_buffer = (unsigned char *)bs.buffer; in build_packed_seq_buffer()
457 return bs.bit_offset; in build_packed_seq_buffer()