Revert "[Encode] Add support for VAConfigAttribEncHEVCBlockSizes & VAConfigAttribEncHEVCFeatures Set corresponding parameters in SPS etc. to the values from these 2 attributes, instead of hard-coding. If the attributes are not set, use default values which remains unchanged." This reverts commit f213b44e446355e9f7b344d3054e44e72f52653d.
diff --git a/encode/hevcencode.c b/encode/hevcencode.c index fd42230..3f10658 100644 --- a/encode/hevcencode.c +++ b/encode/hevcencode.c
@@ -367,46 +367,10 @@ uint8_t *slice_segment_header_extension_data_byte; //u(8) }; -struct BlockSizes { - uint32_t log2_max_coding_tree_block_size_minus3; - uint32_t log2_min_coding_tree_block_size_minus3; - uint32_t log2_min_luma_coding_block_size_minus3; - uint32_t log2_max_luma_transform_block_size_minus2; - uint32_t log2_min_luma_transform_block_size_minus2; - uint32_t log2_max_pcm_coding_block_size_minus3; - uint32_t log2_min_pcm_coding_block_size_minus3; - uint32_t max_max_transform_hierarchy_depth_inter; - uint32_t min_max_transform_hierarchy_depth_inter; - uint32_t max_max_transform_hierarchy_depth_intra; - uint32_t min_max_transform_hierarchy_depth_intra; -}; - -struct Features { - uint32_t amp; //sps->amp_enable_flag - uint32_t constrained_intra_pred; - uint32_t cu_qp_delta; // pps->cu_qp_delta_enabled_flag - uint32_t deblocking_filter_disable; - uint32_t dependent_slices; - uint32_t pcm; // sps->pcm_enable_flag - uint32_t sao; //sps->sample_adaptive_offset_enabled_flag - uint32_t scaling_lists; - uint32_t separate_colour_planes; - uint32_t sign_data_hiding; - uint32_t strong_intra_smoothing; - uint32_t temporal_mvp; //sps->sps_temporal_mvp_enabled_flag - uint32_t transform_skip; // pps->transform_skip_enabled_flag - uint32_t transquant_bypass; - uint32_t weighted_prediction; -}; - static struct VideoParamSet vps; static struct SeqParamSet sps; static struct PicParamSet pps; static struct SliceHeader ssh; -static struct BlockSizes block_sizes; -static int use_block_sizes = 0; -static struct Features features; -static int use_features = 0; static VADisplay va_dpy; static VAProfile hevc_profile = ~0; static int real_hevc_profile = 0; @@ -782,7 +746,7 @@ sps->sps_seq_parameter_set_id = id; sps->chroma_format_idc = 1; if (sps->chroma_format_idc == 3) { - sps->separate_colour_plane_flag = use_features ? features.separate_colour_planes : 0; + sps->separate_colour_plane_flag = 0; } frame_width_aligned = ALIGN16(frame_width); frame_height_aligned = ALIGN16(frame_height); @@ -824,21 +788,20 @@ sps->sps_max_num_reorder_pics[i] = ip_period != 0 ? ip_period - 1 : 0; sps->sps_max_latency_increase_plus1[i] = 0; } - sps->log2_min_luma_coding_block_size_minus3 = use_block_sizes ? block_sizes.log2_min_luma_coding_block_size_minus3 : 0; - int log2_max_luma_coding_block_size = use_block_sizes ? block_sizes.log2_max_coding_tree_block_size_minus3 + 3 : log2(LCU_SIZE); + sps->log2_min_luma_coding_block_size_minus3 = 0; + int log2_max_luma_coding_block_size = log2(LCU_SIZE); int log2_min_luma_coding_block_size = sps->log2_min_luma_coding_block_size_minus3 + 3; sps->log2_diff_max_min_luma_coding_block_size = log2_max_luma_coding_block_size - log2_min_luma_coding_block_size; - sps->log2_min_luma_transform_block_size_minus2 = use_block_sizes ? block_sizes.log2_min_luma_transform_block_size_minus2 : 0; - sps->log2_diff_max_min_luma_transform_block_size = use_block_sizes ? (block_sizes.log2_max_luma_transform_block_size_minus2 - - sps->log2_min_luma_transform_block_size_minus2) : 3; - sps->max_transform_hierarchy_depth_inter = use_block_sizes ? block_sizes.max_max_transform_hierarchy_depth_inter : 2; - sps->max_transform_hierarchy_depth_intra = use_block_sizes ? block_sizes.max_max_transform_hierarchy_depth_intra : 2; - sps->scaling_list_enabled_flag = use_features ? features.scaling_lists : 0; - sps->sps_scaling_list_data_present_flag = 0; - sps->amp_enabled_flag = use_features ? features.amp : 1; - sps->sample_adaptive_offset_enabled_flag = use_features ? features.sao : 1; - sps->pcm_enabled_flag = use_features ? features.pcm : 0; + sps->log2_min_luma_transform_block_size_minus2 = 0; + sps->log2_diff_max_min_luma_transform_block_size = 3; + sps->max_transform_hierarchy_depth_inter = 2; + sps->max_transform_hierarchy_depth_intra = 2; + sps->scaling_list_enabled_flag = 0; + //sps->sps_scaling_list_data_present_flag; // ignore since scaling_list_enabled_flag equal to 0 + sps->amp_enabled_flag = 1; + sps->sample_adaptive_offset_enabled_flag = 1; + sps->pcm_enabled_flag = 0; /* ignore below parameters seting since pcm_enabled_flag equal to 0 pcm_sample_bit_depth_luma_minus1; pcm_sample_bit_depth_chroma_minus1; @@ -857,9 +820,9 @@ lt_ref_pic_poc_lsb_sps[kMaxLongTermRefPic]; used_by_curr_pic_lt_sps_flag[kMaxLongTermRefPic]; */ - sps->sps_temporal_mvp_enabled_flag = use_features ? features.temporal_mvp : 1; - sps->strong_intra_smoothing_enabled_flag = use_features ? features.strong_intra_smoothing : 0; - + sps->sps_temporal_mvp_enabled_flag = 1; + sps->strong_intra_smoothing_enabled_flag = 0; + sps->vui_parameters_present_flag = 0; sps->sps_extension_present_flag = 0; /* ignore below parameters seting since sps_extension_present_flag equal to 0 @@ -880,34 +843,34 @@ pps->pps_pic_parameter_set_id = pps_id; pps->pps_seq_parameter_set_id = sps_id; - pps->dependent_slice_segments_enabled_flag = use_features ? features.dependent_slices : 0; + pps->dependent_slice_segments_enabled_flag = 0; pps->output_flag_present_flag = 0; pps->num_extra_slice_header_bits = 0; - pps->sign_data_hiding_enabled_flag = use_features ? features.sign_data_hiding : 0; + pps->sign_data_hiding_enabled_flag = 0; pps->cabac_init_present_flag = 1; pps->num_ref_idx_l0_default_active_minus1 = 0; pps->num_ref_idx_l1_default_active_minus1 = 0; pps->init_qp_minus26 = initial_qp - 26; - pps->constrained_intra_pred_flag = use_features ? features.constrained_intra_pred : 0; - pps->transform_skip_enabled_flag = use_features ? features.transform_skip : 0; - pps->cu_qp_delta_enabled_flag = use_features ? features.cu_qp_delta : 1; + pps->constrained_intra_pred_flag = 0; + pps->transform_skip_enabled_flag = 0; + pps->cu_qp_delta_enabled_flag = 1; if (pps->cu_qp_delta_enabled_flag) pps->diff_cu_qp_delta_depth = 2; pps->pps_cb_qp_offset = 0; pps->pps_cr_qp_offset = 0; pps->pps_slice_chroma_qp_offsets_present_flag = 0; - pps->weighted_pred_flag = use_features ? features.weighted_prediction : 0; + pps->weighted_pred_flag = 0; pps->weighted_bipred_flag = 0; - pps->transquant_bypass_enabled_flag = use_features ? features.transquant_bypass : 0; + pps->transquant_bypass_enabled_flag = 0; pps->entropy_coding_sync_enabled_flag = 0; pps->tiles_enabled_flag = 0; pps->pps_loop_filter_across_slices_enabled_flag = 0; pps->deblocking_filter_control_present_flag = 1; pps->deblocking_filter_override_enabled_flag = 0, - pps->pps_deblocking_filter_disabled_flag = use_features ? features.deblocking_filter_disable : 0, + pps->pps_deblocking_filter_disabled_flag = 0, pps->pps_beta_offset_div2 = 2, pps->pps_tc_offset_div2 = 0, pps->pps_scaling_list_data_present_flag = 0; @@ -930,9 +893,8 @@ slice->pic_order_cnt_lsb = calc_poc((current_frame_display - current_IDR_display) % MaxPicOrderCntLsb); //slice_segment_address (u(v)) - int lcu_size = use_block_sizes ? (1 << (block_sizes.log2_max_coding_tree_block_size_minus3 + 3)) : LCU_SIZE; - slice->picture_height_in_ctus = (frame_height + lcu_size - 1) / lcu_size; - slice->picture_width_in_ctus = (frame_width + lcu_size - 1) / lcu_size; + slice->picture_height_in_ctus = (frame_height + LCU_SIZE - 1) / LCU_SIZE; + slice->picture_width_in_ctus = (frame_width + LCU_SIZE - 1) / LCU_SIZE; slice->slice_segment_address = 0; slice->first_slice_segment_in_pic_flag = ((slice->slice_segment_address == 0) ? 1 : 0); slice->slice_type = current_frame_type == FRAME_P ? (p2b ? SLICE_B : SLICE_P) : @@ -946,7 +908,7 @@ slice->strp.num_positive_pics = 0; slice->slice_sao_luma_flag = 0; slice->slice_sao_chroma_flag = 0; - slice->slice_temporal_mvp_enabled_flag = use_features ? features.temporal_mvp : 1; + slice->slice_temporal_mvp_enabled_flag = 1; slice->num_ref_idx_l0_active_minus1 = pps->num_ref_idx_l0_default_active_minus1; slice->num_ref_idx_l1_active_minus1 = pps->num_ref_idx_l1_default_active_minus1; @@ -1424,7 +1386,7 @@ put_ue(bs, slice_header->num_long_term_pics); } - if (sps->sps_temporal_mvp_enabled_flag) + if (slice_header->slice_temporal_mvp_enabled_flag) put_ui(bs, slice_header->slice_temporal_mvp_enabled_flag, 1); } @@ -2206,52 +2168,6 @@ if (attrib[VAConfigAttribEncMacroblockInfo].value != VA_ATTRIB_NOT_SUPPORTED) { printf("Support VAConfigAttribEncMacroblockInfo\n"); } - if (attrib[VAConfigAttribEncHEVCBlockSizes].value != VA_ATTRIB_NOT_SUPPORTED) { - printf("Support VAConfigAttribEncHEVCBlockSizes\n"); - uint32_t tmp = attrib[VAConfigAttribEncHEVCBlockSizes].value; - VAConfigAttribValEncHEVCBlockSizes bs = { .value = tmp }; - block_sizes.log2_max_coding_tree_block_size_minus3 = bs.bits.log2_max_coding_tree_block_size_minus3; - block_sizes.log2_min_coding_tree_block_size_minus3 = bs.bits.log2_min_coding_tree_block_size_minus3; - block_sizes.log2_min_luma_coding_block_size_minus3 = bs.bits.log2_min_luma_coding_block_size_minus3; - block_sizes.log2_max_luma_transform_block_size_minus2 = bs.bits.log2_max_luma_transform_block_size_minus2; - block_sizes.log2_min_luma_transform_block_size_minus2 = bs.bits.log2_min_luma_transform_block_size_minus2; - block_sizes.log2_max_pcm_coding_block_size_minus3 = bs.bits.log2_max_pcm_coding_block_size_minus3; - block_sizes.log2_min_pcm_coding_block_size_minus3 = bs.bits.log2_min_pcm_coding_block_size_minus3; - block_sizes.max_max_transform_hierarchy_depth_inter = bs.bits.max_max_transform_hierarchy_depth_inter; - block_sizes.min_max_transform_hierarchy_depth_inter = bs.bits.min_max_transform_hierarchy_depth_inter; - block_sizes.max_max_transform_hierarchy_depth_intra = bs.bits.max_max_transform_hierarchy_depth_intra; - block_sizes.min_max_transform_hierarchy_depth_intra = bs.bits.min_max_transform_hierarchy_depth_intra; - - use_block_sizes = 1; - config_attrib[config_attrib_num].type = VAConfigAttribEncHEVCBlockSizes; - config_attrib[config_attrib_num].value = tmp; - config_attrib_num++; - } - if (attrib[VAConfigAttribEncHEVCFeatures].value != VA_ATTRIB_NOT_SUPPORTED) { - printf("Support VAConfigAttribEncHEVCFeatures\n"); - uint32_t tmp = attrib[VAConfigAttribEncHEVCFeatures].value; - VAConfigAttribValEncHEVCFeatures f = { .value = tmp }; - features.amp = f.bits.amp; - features.constrained_intra_pred = f.bits.constrained_intra_pred; - features.cu_qp_delta = f.bits.cu_qp_delta; - features.deblocking_filter_disable = f.bits.deblocking_filter_disable; - features.dependent_slices = f.bits.dependent_slices; - features.pcm = f.bits.pcm; - features.sao = f.bits.sao; - features.scaling_lists = f.bits.scaling_lists; - features.separate_colour_planes = f.bits.separate_colour_planes; - features.sign_data_hiding = f.bits.sign_data_hiding; - features.strong_intra_smoothing = f.bits.strong_intra_smoothing; - features.temporal_mvp = f.bits.temporal_mvp; - features.transform_skip = f.bits.transform_skip; - features.transquant_bypass = f.bits.transquant_bypass; - features.weighted_prediction = f.bits.weighted_prediction; - - use_features = 1; - config_attrib[config_attrib_num].type = VAConfigAttribEncHEVCFeatures; - config_attrib[config_attrib_num].value = attrib[VAConfigAttribEncHEVCFeatures].value; - config_attrib_num++; - } free(entrypoints); return 0;