Lines Matching refs:gb
119 int ff_hevc_decode_short_term_rps(GetBitContext *gb, AVCodecContext *avctx,
129 rps_predict = get_bits1(gb);
139 unsigned int delta_idx = get_ue_golomb_long(gb) + 1;
151 delta_rps_sign = get_bits1(gb);
152 abs_delta_rps = get_ue_golomb_long(gb) + 1;
161 int used = rps->used[k] = get_bits1(gb);
164 use_delta_flag = get_bits1(gb);
219 rps->num_negative_pics = get_ue_golomb_long(gb);
220 nb_positive_pics = get_ue_golomb_long(gb);
232 delta_poc = get_ue_golomb_long(gb) + 1;
241 rps->used[i] = get_bits1(gb);
245 delta_poc = get_ue_golomb_long(gb) + 1;
254 rps->used[rps->num_negative_pics + i] = get_bits1(gb);
262 static int decode_profile_tier_level(GetBitContext *gb, AVCodecContext *avctx,
267 if (get_bits_left(gb) < 2+1+5 + 32 + 4 + 43 + 1)
270 ptl->profile_space = get_bits(gb, 2);
271 ptl->tier_flag = get_bits1(gb);
272 ptl->profile_idc = get_bits(gb, 5);
285 ptl->profile_compatibility_flag[i] = get_bits1(gb);
290 ptl->progressive_source_flag = get_bits1(gb);
291 ptl->interlaced_source_flag = get_bits1(gb);
292 ptl->non_packed_constraint_flag = get_bits1(gb);
293 ptl->frame_only_constraint_flag = get_bits1(gb);
302 ptl->max_12bit_constraint_flag = get_bits1(gb);
303 ptl->max_10bit_constraint_flag = get_bits1(gb);
304 ptl->max_8bit_constraint_flag = get_bits1(gb);
305 ptl->max_422chroma_constraint_flag = get_bits1(gb);
306 ptl->max_420chroma_constraint_flag = get_bits1(gb);
307 ptl->max_monochrome_constraint_flag = get_bits1(gb);
308 ptl->intra_constraint_flag = get_bits1(gb);
309 ptl->one_picture_only_constraint_flag = get_bits1(gb);
310 ptl->lower_bit_rate_constraint_flag = get_bits1(gb);
313 ptl->max_14bit_constraint_flag = get_bits1(gb);
314 skip_bits_long(gb, 33); // XXX_reserved_zero_33bits[0..32]
316 skip_bits_long(gb, 34); // XXX_reserved_zero_34bits[0..33]
319 skip_bits(gb, 7);
320 ptl->one_picture_only_constraint_flag = get_bits1(gb);
321 skip_bits_long(gb, 35); // XXX_reserved_zero_35bits[0..34]
323 skip_bits_long(gb, 43); // XXX_reserved_zero_43bits[0..42]
328 ptl->inbld_flag = get_bits1(gb);
330 skip_bits1(gb);
336 static int parse_ptl(GetBitContext *gb, AVCodecContext *avctx,
340 if (decode_profile_tier_level(gb, avctx, &ptl->general_ptl) < 0 ||
341 get_bits_left(gb) < 8 + (8*2 * (max_num_sub_layers - 1 > 0))) {
346 ptl->general_ptl.level_idc = get_bits(gb, 8);
349 ptl->sub_layer_profile_present_flag[i] = get_bits1(gb);
350 ptl->sub_layer_level_present_flag[i] = get_bits1(gb);
355 skip_bits(gb, 2); // reserved_zero_2bits[i]
358 decode_profile_tier_level(gb, avctx, &ptl->sub_layer_ptl[i]) < 0) {
364 if (get_bits_left(gb) < 8) {
369 ptl->sub_layer_ptl[i].level_idc = get_bits(gb, 8);
376 static void decode_sublayer_hrd(GetBitContext *gb, unsigned int nb_cpb,
382 get_ue_golomb_long(gb); // bit_rate_value_minus1
383 get_ue_golomb_long(gb); // cpb_size_value_minus1
386 get_ue_golomb_long(gb); // cpb_size_du_value_minus1
387 get_ue_golomb_long(gb); // bit_rate_du_value_minus1
389 skip_bits1(gb); // cbr_flag
393 static int decode_hrd(GetBitContext *gb, int common_inf_present,
401 nal_params_present = get_bits1(gb);
402 vcl_params_present = get_bits1(gb);
405 subpic_params_present = get_bits1(gb);
408 skip_bits(gb, 8); // tick_divisor_minus2
409 skip_bits(gb, 5); // du_cpb_removal_delay_increment_length_minus1
410 skip_bits(gb, 1); // sub_pic_cpb_params_in_pic_timing_sei_flag
411 skip_bits(gb, 5); // dpb_output_delay_du_length_minus1
414 skip_bits(gb, 4); // bit_rate_scale
415 skip_bits(gb, 4); // cpb_size_scale
418 skip_bits(gb, 4); // cpb_size_du_scale
420 skip_bits(gb, 5); // initial_cpb_removal_delay_length_minus1
421 skip_bits(gb, 5); // au_cpb_removal_delay_length_minus1
422 skip_bits(gb, 5); // dpb_output_delay_length_minus1
429 int fixed_rate = get_bits1(gb);
432 fixed_rate = get_bits1(gb);
435 get_ue_golomb_long(gb); // elemental_duration_in_tc_minus1
437 low_delay = get_bits1(gb);
440 nb_cpb = get_ue_golomb_long(gb) + 1;
448 decode_sublayer_hrd(gb, nb_cpb, subpic_params_present);
450 decode_sublayer_hrd(gb, nb_cpb, subpic_params_present);
455 int ff_hevc_decode_nal_vps(GetBitContext *gb, AVCodecContext *avctx,
470 nal_size = gb->buffer_end - gb->buffer;
479 memcpy(vps->data, gb->buffer, vps->data_size);
481 vps_id = get_bits(gb, 4);
483 if (get_bits(gb, 2) != 3) { // vps_reserved_three_2bits
488 vps->vps_max_layers = get_bits(gb, 6) + 1;
489 vps->vps_max_sub_layers = get_bits(gb, 3) + 1;
490 vps->vps_temporal_id_nesting_flag = get_bits1(gb);
492 if (get_bits(gb, 16) != 0xffff) { // vps_reserved_ffff_16bits
503 if (parse_ptl(gb, avctx, &vps->ptl, vps->vps_max_sub_layers) < 0)
506 vps->vps_sub_layer_ordering_info_present_flag = get_bits1(gb);
510 vps->vps_max_dec_pic_buffering[i] = get_ue_golomb_long(gb) + 1;
511 vps->vps_num_reorder_pics[i] = get_ue_golomb_long(gb);
512 vps->vps_max_latency_increase[i] = get_ue_golomb_long(gb) - 1;
527 vps->vps_max_layer_id = get_bits(gb, 6);
528 vps->vps_num_layer_sets = get_ue_golomb_long(gb) + 1;
530 (vps->vps_num_layer_sets - 1LL) * (vps->vps_max_layer_id + 1LL) > get_bits_left(gb)) {
537 skip_bits(gb, 1); // layer_id_included_flag[i][j]
539 vps->vps_timing_info_present_flag = get_bits1(gb);
541 vps->vps_num_units_in_tick = get_bits_long(gb, 32);
542 vps->vps_time_scale = get_bits_long(gb, 32);
543 vps->vps_poc_proportional_to_timing_flag = get_bits1(gb);
545 vps->vps_num_ticks_poc_diff_one = get_ue_golomb_long(gb) + 1;
546 vps->vps_num_hrd_parameters = get_ue_golomb_long(gb);
555 get_ue_golomb_long(gb); // hrd_layer_set_idx
557 common_inf_present = get_bits1(gb);
558 decode_hrd(gb, common_inf_present, vps->vps_max_sub_layers);
561 get_bits1(gb); /* vps_extension_flag */
563 if (get_bits_left(gb) < 0) {
565 "Overread VPS by %d bits\n", -get_bits_left(gb));
585 static void decode_vui(GetBitContext *gb, AVCodecContext *avctx,
594 sar_present = get_bits1(gb);
596 uint8_t sar_idx = get_bits(gb, 8);
600 vui->sar.num = get_bits(gb, 16);
601 vui->sar.den = get_bits(gb, 16);
607 vui->overscan_info_present_flag = get_bits1(gb);
609 vui->overscan_appropriate_flag = get_bits1(gb);
611 vui->video_signal_type_present_flag = get_bits1(gb);
613 vui->video_format = get_bits(gb, 3);
614 vui->video_full_range_flag = get_bits1(gb);
615 vui->colour_description_present_flag = get_bits1(gb);
619 vui->colour_primaries = get_bits(gb, 8);
620 vui->transfer_characteristic = get_bits(gb, 8);
621 vui->matrix_coeffs = get_bits(gb, 8);
646 vui->chroma_loc_info_present_flag = get_bits1(gb);
648 vui->chroma_sample_loc_type_top_field = get_ue_golomb_long(gb);
649 vui->chroma_sample_loc_type_bottom_field = get_ue_golomb_long(gb);
652 vui->neutra_chroma_indication_flag = get_bits1(gb);
653 vui->field_seq_flag = get_bits1(gb);
654 vui->frame_field_info_present_flag = get_bits1(gb);
657 memcpy(&backup, gb, sizeof(backup));
659 if (get_bits_left(gb) >= 68 && show_bits(gb, 21) == 0x100000) {
663 vui->default_display_window_flag = get_bits1(gb);
668 vui->def_disp_win.left_offset = get_ue_golomb_long(gb) * horiz_mult;
669 vui->def_disp_win.right_offset = get_ue_golomb_long(gb) * horiz_mult;
670 vui->def_disp_win.top_offset = get_ue_golomb_long(gb) * vert_mult;
671 vui->def_disp_win.bottom_offset = get_ue_golomb_long(gb) * vert_mult;
691 vui->vui_timing_info_present_flag = get_bits1(gb);
694 if( get_bits_left(gb) < 66 && !alt) {
700 memcpy(gb, &backup, sizeof(backup));
704 vui->vui_num_units_in_tick = get_bits_long(gb, 32);
705 vui->vui_time_scale = get_bits_long(gb, 32);
710 vui->vui_poc_proportional_to_timing_flag = get_bits1(gb);
712 vui->vui_num_ticks_poc_diff_one_minus1 = get_ue_golomb_long(gb);
713 vui->vui_hrd_parameters_present_flag = get_bits1(gb);
715 decode_hrd(gb, 1, sps->max_sub_layers);
718 vui->bitstream_restriction_flag = get_bits1(gb);
720 if (get_bits_left(gb) < 8 && !alt) {
725 memcpy(gb, &backup, sizeof(backup));
729 vui->tiles_fixed_structure_flag = get_bits1(gb);
730 vui->motion_vectors_over_pic_boundaries_flag = get_bits1(gb);
731 vui->restricted_ref_pic_lists_flag = get_bits1(gb);
732 vui->min_spatial_segmentation_idc = get_ue_golomb_long(gb);
733 vui->max_bytes_per_pic_denom = get_ue_golomb_long(gb);
734 vui->max_bits_per_min_cu_denom = get_ue_golomb_long(gb);
735 vui->log2_max_mv_length_horizontal = get_ue_golomb_long(gb);
736 vui->log2_max_mv_length_vertical = get_ue_golomb_long(gb);
739 if (get_bits_left(gb) < 1 && !alt) {
744 memcpy(gb, &backup, sizeof(backup));
780 static int scaling_list_data(GetBitContext *gb, AVCodecContext *avctx, ScalingList *sl, HEVCSPS *sps)
789 scaling_list_pred_mode_flag = get_bits1(gb);
791 unsigned int delta = get_ue_golomb_long(gb);
816 int scaling_list_coeff_minus8 = get_se_golomb(gb);
832 scaling_list_delta_coef = get_se_golomb(gb);
905 int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id,
916 sps->vps_id = get_bits(gb, 4);
924 sps->max_sub_layers = get_bits(gb, 3) + 1;
931 sps->temporal_id_nesting_flag = get_bits(gb, 1);
933 if ((ret = parse_ptl(gb, avctx, &sps->ptl, sps->max_sub_layers)) < 0)
936 *sps_id = get_ue_golomb_long(gb);
942 sps->chroma_format_idc = get_ue_golomb_long(gb);
949 sps->separate_colour_plane_flag = get_bits1(gb);
954 sps->width = get_ue_golomb_long(gb);
955 sps->height = get_ue_golomb_long(gb);
960 if (get_bits1(gb)) { // pic_conformance_flag
963 sps->pic_conf_win.left_offset = get_ue_golomb_long(gb) * horiz_mult;
964 sps->pic_conf_win.right_offset = get_ue_golomb_long(gb) * horiz_mult;
965 sps->pic_conf_win.top_offset = get_ue_golomb_long(gb) * vert_mult;
966 sps->pic_conf_win.bottom_offset = get_ue_golomb_long(gb) * vert_mult;
985 sps->bit_depth = get_ue_golomb_long(gb) + 8;
986 bit_depth_chroma = get_ue_golomb_long(gb) + 8;
1000 sps->log2_max_poc_lsb = get_ue_golomb_long(gb) + 4;
1007 sublayer_ordering_info = get_bits1(gb);
1010 sps->temporal_layer[i].max_dec_pic_buffering = get_ue_golomb_long(gb) + 1;
1011 sps->temporal_layer[i].num_reorder_pics = get_ue_golomb_long(gb);
1012 sps->temporal_layer[i].max_latency_increase = get_ue_golomb_long(gb) - 1;
1037 sps->log2_min_cb_size = get_ue_golomb_long(gb) + 3;
1038 sps->log2_diff_max_min_coding_block_size = get_ue_golomb_long(gb);
1039 sps->log2_min_tb_size = get_ue_golomb_long(gb) + 2;
1040 log2_diff_max_min_transform_block_size = get_ue_golomb_long(gb);
1064 sps->max_transform_hierarchy_depth_inter = get_ue_golomb_long(gb);
1065 sps->max_transform_hierarchy_depth_intra = get_ue_golomb_long(gb);
1067 sps->scaling_list_enable_flag = get_bits1(gb);
1071 if (get_bits1(gb)) {
1072 ret = scaling_list_data(gb, avctx, &sps->scaling_list, sps);
1078 sps->amp_enabled_flag = get_bits1(gb);
1079 sps->sao_enabled = get_bits1(gb);
1081 sps->pcm_enabled_flag = get_bits1(gb);
1083 sps->pcm.bit_depth = get_bits(gb, 4) + 1;
1084 sps->pcm.bit_depth_chroma = get_bits(gb, 4) + 1;
1085 sps->pcm.log2_min_pcm_cb_size = get_ue_golomb_long(gb) + 3;
1087 get_ue_golomb_long(gb);
1095 sps->pcm.loop_filter_disable_flag = get_bits1(gb);
1098 sps->nb_st_rps = get_ue_golomb_long(gb);
1105 if ((ret = ff_hevc_decode_short_term_rps(gb, avctx, &sps->st_rps[i],
1110 sps->long_term_ref_pics_present_flag = get_bits1(gb);
1112 sps->num_long_term_ref_pics_sps = get_ue_golomb_long(gb);
1119 sps->lt_ref_pic_poc_lsb_sps[i] = get_bits(gb, sps->log2_max_poc_lsb);
1120 sps->used_by_curr_pic_lt_sps_flag[i] = get_bits1(gb);
1124 sps->sps_temporal_mvp_enabled_flag = get_bits1(gb);
1125 sps->sps_strong_intra_smoothing_enable_flag = get_bits1(gb);
1127 vui_present = get_bits1(gb);
1129 decode_vui(gb, avctx, apply_defdispwin, sps);
1131 if (get_bits1(gb)) { // sps_extension_flag
1132 sps->sps_range_extension_flag = get_bits1(gb);
1133 skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7);
1135 sps->transform_skip_rotation_enabled_flag = get_bits1(gb);
1136 sps->transform_skip_context_enabled_flag = get_bits1(gb);
1137 sps->implicit_rdpcm_enabled_flag = get_bits1(gb);
1139 sps->explicit_rdpcm_enabled_flag = get_bits1(gb);
1141 sps->extended_precision_processing_flag = get_bits1(gb);
1146 sps->intra_smoothing_disabled_flag = get_bits1(gb);
1147 sps->high_precision_offsets_enabled_flag = get_bits1(gb);
1152 sps->persistent_rice_adaptation_enabled_flag = get_bits1(gb);
1154 sps->cabac_bypass_alignment_enabled_flag = get_bits1(gb);
1238 if (get_bits_left(gb) < 0) {
1240 "Overread SPS by %d bits\n", -get_bits_left(gb));
1247 int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx,
1262 nal_size = gb->buffer_end - gb->buffer;
1271 memcpy(sps->data, gb->buffer, sps->data_size);
1273 ret = ff_hevc_parse_sps(sps, gb, &sps_id,
1323 static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx,
1328 pps->log2_max_transform_skip_block_size = get_ue_golomb_long(gb) + 2;
1330 pps->cross_component_prediction_enabled_flag = get_bits1(gb);
1331 pps->chroma_qp_offset_list_enabled_flag = get_bits1(gb);
1333 pps->diff_cu_chroma_qp_offset_depth = get_ue_golomb_long(gb);
1334 pps->chroma_qp_offset_list_len_minus1 = get_ue_golomb_long(gb);
1341 pps->cb_qp_offset_list[i] = get_se_golomb_long(gb);
1346 pps->cr_qp_offset_list[i] = get_se_golomb_long(gb);
1353 pps->log2_sao_offset_scale_luma = get_ue_golomb_long(gb);
1354 pps->log2_sao_offset_scale_chroma = get_ue_golomb_long(gb);
1364 static inline int setup_pps(AVCodecContext *avctx, GetBitContext *gb,
1496 int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx,
1520 nal_size = gb->buffer_end - gb->buffer;
1529 memcpy(pps->data, gb->buffer, pps->data_size);
1542 pps_id = get_ue_golomb_long(gb);
1548 pps->sps_id = get_ue_golomb_long(gb);
1561 pps->dependent_slice_segments_enabled_flag = get_bits1(gb);
1562 pps->output_flag_present_flag = get_bits1(gb);
1563 pps->num_extra_slice_header_bits = get_bits(gb, 3);
1565 pps->sign_data_hiding_flag = get_bits1(gb);
1567 pps->cabac_init_present_flag = get_bits1(gb);
1569 pps->num_ref_idx_l0_default_active = get_ue_golomb_long(gb) + 1;
1570 pps->num_ref_idx_l1_default_active = get_ue_golomb_long(gb) + 1;
1572 pps->pic_init_qp_minus26 = get_se_golomb(gb);
1574 pps->constrained_intra_pred_flag = get_bits1(gb);
1575 pps->transform_skip_enabled_flag = get_bits1(gb);
1577 pps->cu_qp_delta_enabled_flag = get_bits1(gb);
1580 pps->diff_cu_qp_delta_depth = get_ue_golomb_long(gb);
1590 pps->cb_qp_offset = get_se_golomb(gb);
1597 pps->cr_qp_offset = get_se_golomb(gb);
1604 pps->pic_slice_level_chroma_qp_offsets_present_flag = get_bits1(gb);
1606 pps->weighted_pred_flag = get_bits1(gb);
1607 pps->weighted_bipred_flag = get_bits1(gb);
1609 pps->transquant_bypass_enable_flag = get_bits1(gb);
1610 pps->tiles_enabled_flag = get_bits1(gb);
1611 pps->entropy_coding_sync_enabled_flag = get_bits1(gb);
1614 int num_tile_columns_minus1 = get_ue_golomb(gb);
1615 int num_tile_rows_minus1 = get_ue_golomb(gb);
1641 pps->uniform_spacing_flag = get_bits1(gb);
1645 pps->column_width[i] = get_ue_golomb_long(gb) + 1;
1657 pps->row_height[i] = get_ue_golomb_long(gb) + 1;
1667 pps->loop_filter_across_tiles_enabled_flag = get_bits1(gb);
1670 pps->seq_loop_filter_across_slices_enabled_flag = get_bits1(gb);
1672 pps->deblocking_filter_control_present_flag = get_bits1(gb);
1674 pps->deblocking_filter_override_enabled_flag = get_bits1(gb);
1675 pps->disable_dbf = get_bits1(gb);
1677 int beta_offset_div2 = get_se_golomb(gb);
1678 int tc_offset_div2 = get_se_golomb(gb) ;
1696 pps->scaling_list_data_present_flag = get_bits1(gb);
1699 ret = scaling_list_data(gb, avctx, &pps->scaling_list, sps);
1703 pps->lists_modification_present_flag = get_bits1(gb);
1704 log2_parallel_merge_level_minus2 = get_ue_golomb_long(gb);
1713 pps->slice_header_extension_present_flag = get_bits1(gb);
1715 if (get_bits1(gb)) { // pps_extension_present_flag
1716 pps->pps_range_extensions_flag = get_bits1(gb);
1717 skip_bits(gb, 7); // pps_extension_7bits
1719 if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0)
1724 ret = setup_pps(avctx, gb, pps, sps);
1728 if (get_bits_left(gb) < 0) {
1730 "Overread PPS by %d bits\n", -get_bits_left(gb));