diff options
author | Sean V Kelley <seanvk@posteo.de> | 2017-01-17 15:01:18 -0800 |
---|---|---|
committer | Sean V Kelley <seanvk@posteo.de> | 2017-01-17 15:01:18 -0800 |
commit | ac3d9a840196ae4705a65d01a320cdd3dfd9629d (patch) | |
tree | 569b48a4d6d2c1a6ba8c6b609acd626a50ea3086 | |
parent | cbe1f62bf8b4dd59c1bf6c5470ddc8c8b449790f (diff) |
Revert "ENC: WP/SFD kernel for AVC encoder"
This reverts commit 641b63363b376ea4d1011cd60d3eb71f16dd6fe6.
-rwxr-xr-x | src/gen9_avc_encoder.c | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/src/gen9_avc_encoder.c b/src/gen9_avc_encoder.c index ea83cbd..d64694c 100755 --- a/src/gen9_avc_encoder.c +++ b/src/gen9_avc_encoder.c @@ -4212,280 +4212,3 @@ gen9_avc_kernel_me(VADriverContextP ctx, return VA_STATUS_SUCCESS; } - -/* -wp related function -*/ -static void -gen9_avc_set_curbe_wp(VADriverContextP ctx, - struct encode_state *encode_state, - struct i965_gpe_context *gpe_context, - struct intel_encoder_context *encoder_context, - void * param) -{ - gen9_avc_wp_curbe_data *cmd; - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct avc_enc_state * avc_state = (struct avc_enc_state * )vme_context->private_enc_state; - VAEncSliceParameterBufferH264 * slice_param = avc_state->slice_param[0]; - struct wp_param * curbe_param = (struct wp_param *)param; - - cmd = i965_gpe_context_map_curbe(gpe_context); - - if (!cmd) - return; - memset(cmd,0,sizeof(gen9_avc_wp_curbe_data)); - if(curbe_param->ref_list_idx) - { - cmd->dw0.default_weight = slice_param->luma_weight_l1[0]; - cmd->dw0.default_offset = slice_param->luma_offset_l1[0]; - }else - { - cmd->dw0.default_weight = slice_param->luma_weight_l0[0]; - cmd->dw0.default_offset = slice_param->luma_offset_l0[0]; - } - - cmd->dw49.input_surface = GEN9_AVC_WP_INPUT_REF_SURFACE_INDEX; - cmd->dw50.output_surface = GEN9_AVC_WP_OUTPUT_SCALED_SURFACE_INDEX; - - i965_gpe_context_unmap_curbe(gpe_context); - -} - -static void -gen9_avc_send_surface_wp(VADriverContextP ctx, - struct encode_state *encode_state, - struct i965_gpe_context *gpe_context, - struct intel_encoder_context *encoder_context, - void * param) -{ - struct i965_driver_data *i965 = i965_driver_data(ctx); - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct gen9_avc_encoder_context * avc_ctx = (struct gen9_avc_encoder_context * )vme_context->private_enc_ctx; - struct avc_enc_state * avc_state = (struct avc_enc_state * )vme_context->private_enc_state; - struct wp_param * curbe_param = (struct wp_param *)param; - struct object_surface *obj_surface; - VAEncSliceParameterBufferH264 * slice_param = avc_state->slice_param[0]; - VASurfaceID surface_id; - - if(curbe_param->ref_list_idx) - { - surface_id = slice_param->RefPicList1[0].picture_id; - obj_surface = SURFACE(surface_id); - if (!obj_surface || !obj_surface->private_data) - avc_state->weighted_ref_l1_enable = 0; - else - avc_state->weighted_ref_l1_enable = 1; - }else - { - surface_id = slice_param->RefPicList0[0].picture_id; - obj_surface = SURFACE(surface_id); - if (!obj_surface || !obj_surface->private_data) - avc_state->weighted_ref_l0_enable = 0; - else - avc_state->weighted_ref_l0_enable = 1; - } - if(!obj_surface) - obj_surface = encode_state->reference_objects[0]; - - - gen9_add_adv_gpe_surface(ctx, gpe_context, - obj_surface, - GEN9_AVC_WP_INPUT_REF_SURFACE_INDEX); - - obj_surface = avc_ctx->wp_output_pic_select_surface_obj[curbe_param->ref_list_idx]; - gen9_add_adv_gpe_surface(ctx, gpe_context, - obj_surface, - GEN9_AVC_WP_OUTPUT_SCALED_SURFACE_INDEX); -} - - -static VAStatus -gen9_avc_kernel_wp(VADriverContextP ctx, - struct encode_state *encode_state, - struct intel_encoder_context *encoder_context, - unsigned int list1_in_use) -{ - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct gen9_avc_encoder_context * avc_ctx = (struct gen9_avc_encoder_context * )vme_context->private_enc_ctx; - struct generic_enc_codec_state * generic_state = (struct generic_enc_codec_state * )vme_context->generic_enc_state; - struct generic_encoder_context * generic_ctx = (struct generic_encoder_context * )vme_context->generic_enc_ctx; - - struct i965_gpe_context *gpe_context; - struct gpe_media_object_walker_parameter media_object_walker_param; - struct gpe_encoder_kernel_walker_parameter kernel_walker_param; - int media_function = INTEL_MEDIA_STATE_ENC_WP; - struct wp_param param; - - gpe_context = &(avc_ctx->context_wp.gpe_contexts); - - gen8_gpe_context_init(ctx, gpe_context); - gen9_gpe_reset_binding_table(ctx, gpe_context); - - memset(¶m,0,sizeof(param)); - param.ref_list_idx = (list1_in_use == 1)? 1: 0; - /*set curbe*/ - generic_ctx->pfn_set_curbe_wp(ctx,encode_state,gpe_context,encoder_context,¶m); - - /*send surface*/ - generic_ctx->pfn_send_wp_surface(ctx,encode_state,gpe_context,encoder_context,¶m); - - gen8_gpe_setup_interface_data(ctx, gpe_context); - - memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); - /* the scaling is based on 8x8 blk level */ - kernel_walker_param.resolution_x = generic_state->frame_width_in_mbs; - kernel_walker_param.resolution_y = generic_state->frame_height_in_mbs; - kernel_walker_param.no_dependency = 1; - - i965_init_media_object_walker_parameter(&kernel_walker_param, &media_object_walker_param); - - gen9_avc_run_kernel_media_object_walker(ctx, encoder_context, - gpe_context, - media_function, - &media_object_walker_param); - - return VA_STATUS_SUCCESS; -} - - -/* -sfd related function -*/ -static void -gen9_avc_set_curbe_sfd(VADriverContextP ctx, - struct encode_state *encode_state, - struct i965_gpe_context *gpe_context, - struct intel_encoder_context *encoder_context, - void * param) -{ - gen9_avc_sfd_curbe_data *cmd; - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct generic_enc_codec_state * generic_state = (struct generic_enc_codec_state * )vme_context->generic_enc_state; - struct avc_enc_state * avc_state = (struct avc_enc_state * )vme_context->private_enc_state; - VAEncSliceParameterBufferH264 * slice_param = avc_state->slice_param[0]; - - cmd = i965_gpe_context_map_curbe(gpe_context); - - if (!cmd) - return; - memset(cmd,0,sizeof(gen9_avc_sfd_curbe_data)); - - cmd->dw0.enable_intra_cost_scaling_for_static_frame = 1 ; - cmd->dw0.enable_adaptive_mv_stream_in = 0 ; //vdenc - cmd->dw0.stream_in_type = 7 ; //vdenc - cmd->dw0.slice_type = slice_type_kernel[generic_state->frame_type] ; - cmd->dw0.brc_mode_enable = generic_state->brc_enabled ; - cmd->dw0.vdenc_mode_disable = 1 ; - - cmd->dw1.hme_stream_in_ref_cost = 5 ; - cmd->dw1.num_of_refs = slice_param->num_ref_idx_l0_active_minus1 ;//vdenc - cmd->dw1.qp_value = avc_state->pic_param->pic_init_qp + slice_param->slice_qp_delta ; - - cmd->dw2.frame_width_in_mbs = generic_state->frame_width_in_mbs ; - cmd->dw2.frame_height_in_mbs = generic_state->frame_height_in_mbs ; - - cmd->dw3.large_mv_threshold = 128 ; - cmd->dw4.total_large_mv_threshold = (generic_state->frame_width_in_mbs * generic_state->frame_height_in_mbs)/100 ; - cmd->dw5.zmv_threshold = 4 ; - cmd->dw6.total_zmv_threshold = (generic_state->frame_width_in_mbs * generic_state->frame_height_in_mbs * avc_state->zero_mv_threshold)/100 ; // zero_mv_threshold = 60; - cmd->dw7.min_dist_threshold = 10 ; - - if(generic_state->frame_type == SLICE_TYPE_P) - { - memcpy(cmd->cost_table,gen9_avc_sfd_cost_table_p_frame,52* sizeof(unsigned char)); - - }else if(generic_state->frame_type == SLICE_TYPE_B) - { - memcpy(cmd->cost_table,gen9_avc_sfd_cost_table_b_frame,52* sizeof(unsigned char)); - } - - cmd->dw21.actual_width_in_mb = cmd->dw2.frame_width_in_mbs ; - cmd->dw21.actual_height_in_mb = cmd->dw2.frame_height_in_mbs ; - cmd->dw24.vdenc_input_image_state_index = GEN9_AVC_SFD_VDENC_INPUT_IMAGE_STATE_INDEX ; - cmd->dw26.mv_data_surface_index = GEN9_AVC_SFD_MV_DATA_SURFACE_INDEX ; - cmd->dw27.inter_distortion_surface_index = GEN9_AVC_SFD_INTER_DISTORTION_SURFACE_INDEX ; - cmd->dw28.output_data_surface_index = GEN9_AVC_SFD_OUTPUT_DATA_SURFACE_INDEX ; - cmd->dw29.vdenc_output_image_state_index = GEN9_AVC_SFD_VDENC_OUTPUT_IMAGE_STATE_INDEX ; - - i965_gpe_context_unmap_curbe(gpe_context); - -} - -static void -gen9_avc_send_surface_sfd(VADriverContextP ctx, - struct encode_state *encode_state, - struct i965_gpe_context *gpe_context, - struct intel_encoder_context *encoder_context, - void * param) -{ - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct gen9_avc_encoder_context * avc_ctx = (struct gen9_avc_encoder_context * )vme_context->private_enc_ctx; - struct i965_gpe_resource *gpe_resource; - int size = 0; - - /*HME mv data surface memv output 4x*/ - gpe_resource = &avc_ctx->s4x_memv_data_buffer; - gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, - gpe_resource, - 1, - I965_SURFACEFORMAT_R8_UNORM, - GEN9_AVC_SFD_MV_DATA_SURFACE_INDEX); - - /* memv distortion */ - gpe_resource = &avc_ctx->s4x_memv_distortion_buffer; - gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, - gpe_resource, - 1, - I965_SURFACEFORMAT_R8_UNORM, - GEN9_AVC_SFD_INTER_DISTORTION_SURFACE_INDEX); - /*buffer output*/ - size = 32 * 4 *4; - gpe_resource = &avc_ctx->res_sfd_output_buffer; - gen9_add_buffer_gpe_surface(ctx, - gpe_context, - gpe_resource, - 0, - size / 4, - 0, - GEN9_AVC_SFD_OUTPUT_DATA_SURFACE_INDEX); - -} - -static VAStatus -gen9_avc_kernel_sfd(VADriverContextP ctx, - struct encode_state *encode_state, - struct intel_encoder_context *encoder_context) -{ - struct encoder_vme_mfc_context * vme_context = (struct encoder_vme_mfc_context *)encoder_context->vme_context; - struct gen9_avc_encoder_context * avc_ctx = (struct gen9_avc_encoder_context * )vme_context->private_enc_ctx; - struct generic_encoder_context * generic_ctx = (struct generic_encoder_context * )vme_context->generic_enc_ctx; - - struct i965_gpe_context *gpe_context; - struct gpe_media_object_parameter media_object_param; - struct gpe_media_object_inline_data media_object_inline_data; - int media_function = INTEL_MEDIA_STATE_STATIC_FRAME_DETECTION; - gpe_context = &(avc_ctx->context_sfd.gpe_contexts); - - gen8_gpe_context_init(ctx, gpe_context); - gen9_gpe_reset_binding_table(ctx, gpe_context); - - /*set curbe*/ - generic_ctx->pfn_set_curbe_sfd(ctx,encode_state,gpe_context,encoder_context,NULL); - - /*send surface*/ - generic_ctx->pfn_send_sfd_surface(ctx,encode_state,gpe_context,encoder_context,NULL); - - gen8_gpe_setup_interface_data(ctx, gpe_context); - - memset(&media_object_param, 0, sizeof(media_object_param)); - memset(&media_object_inline_data, 0, sizeof(media_object_inline_data)); - media_object_param.pinline_data = &media_object_inline_data; - media_object_param.inline_size = sizeof(media_object_inline_data); - - gen9_avc_run_kernel_media_object(ctx, encoder_context, - gpe_context, - media_function, - &media_object_param); - - return VA_STATUS_SUCCESS; -} |