static void parse_hdr_crop_data(struct ddl_client_context *ddl,
	struct vidc_1080p_seq_hdr_info *seq_hdr_info)
{
	struct ddl_decoder_data *decoder = &ddl->codec_data.decoder;
	u32 crop_exists = (decoder->output_order == VCD_DEC_ORDER_DISPLAY) ?
		seq_hdr_info->disp_crop_exists : seq_hdr_info->dec_crop_exists;
	if (crop_exists) {
		if (decoder->output_order ==
			VCD_DEC_ORDER_DISPLAY)
			vidc_sm_get_crop_info(
				&ddl->shared_mem[ddl->command_channel],
				&seq_hdr_info->crop_left_offset,
				&seq_hdr_info->crop_right_offset,
				&seq_hdr_info->crop_top_offset,
				&seq_hdr_info->crop_bottom_offset);
		else
			vidc_sm_get_dec_order_crop_info(
				&ddl->shared_mem[ddl->command_channel],
				&seq_hdr_info->crop_left_offset,
				&seq_hdr_info->crop_right_offset,
				&seq_hdr_info->crop_top_offset,
				&seq_hdr_info->crop_bottom_offset);
		decoder->frame_size.width -=
			seq_hdr_info->crop_right_offset +
			seq_hdr_info->crop_left_offset;
		decoder->frame_size.height -=
			seq_hdr_info->crop_top_offset +
			seq_hdr_info->crop_bottom_offset;
	}
}
static void get_dec_op_done_crop(u32 output_order,
	struct vidc_1080p_dec_disp_info *dec_disp_info,
	struct vcd_frame_rect *crop_data,
	struct vcd_property_frame_size *op_frame_sz,
	struct vcd_property_frame_size *frame_sz,
	struct ddl_buf_addr *shared_mem)
{
	u32 crop_exists =
		(output_order == VCD_DEC_ORDER_DECODE) ?
		dec_disp_info->dec_crop_exists :
		dec_disp_info->disp_crop_exists;
	crop_data->left = 0;
	crop_data->top = 0;
	crop_data->right = dec_disp_info->img_size_x;
	crop_data->bottom = dec_disp_info->img_size_y;
	op_frame_sz->width = dec_disp_info->img_size_x;
	op_frame_sz->height = dec_disp_info->img_size_y;
	ddl_calculate_stride(op_frame_sz, false);
	op_frame_sz->stride = DDL_ALIGN(op_frame_sz->width,
				DDL_TILE_ALIGN_WIDTH);
	op_frame_sz->scan_lines = DDL_ALIGN(op_frame_sz->height,
					DDL_TILE_ALIGN_HEIGHT);
	DDL_MSG_LOW("%s img_size_x = %u img_size_y = %u\n",
				__func__, dec_disp_info->img_size_x,
				dec_disp_info->img_size_y);
	if (crop_exists) {
		if (output_order == VCD_DEC_ORDER_DECODE)
			vidc_sm_get_dec_order_crop_info(shared_mem,
				&dec_disp_info->crop_left_offset,
				&dec_disp_info->crop_right_offset,
				&dec_disp_info->crop_top_offset,
				&dec_disp_info->crop_bottom_offset);
		else
			vidc_sm_get_crop_info(shared_mem,
				&dec_disp_info->crop_left_offset,
				&dec_disp_info->crop_right_offset,
				&dec_disp_info->crop_top_offset,
				&dec_disp_info->crop_bottom_offset);
		crop_data->left = dec_disp_info->crop_left_offset;
		crop_data->top = dec_disp_info->crop_top_offset;
		crop_data->right -= dec_disp_info->crop_right_offset;
		crop_data->bottom -= dec_disp_info->crop_bottom_offset;
		op_frame_sz->width = crop_data->right - crop_data->left;
		op_frame_sz->height = crop_data->bottom - crop_data->top;
	}
}
static void get_dec_op_done_crop(u32 output_order,
	struct vidc_1080p_dec_disp_info *dec_disp_info,
	struct vcd_frame_rect *crop_data,
	struct vcd_property_frame_size *frame_sz,
	struct ddl_buf_addr *shared_mem)
{
	u32 crop_exists =
		(output_order == VCD_DEC_ORDER_DECODE) ?
		dec_disp_info->dec_crop_exists :
		dec_disp_info->disp_crop_exists;
	if (crop_exists) {
		if (output_order == VCD_DEC_ORDER_DECODE)
			vidc_sm_get_dec_order_crop_info(shared_mem,
				&dec_disp_info->crop_left_offset,
				&dec_disp_info->crop_right_offset,
				&dec_disp_info->crop_top_offset,
				&dec_disp_info->crop_bottom_offset);
		else
			vidc_sm_get_crop_info(shared_mem,
				&dec_disp_info->crop_left_offset,
				&dec_disp_info->crop_right_offset,
				&dec_disp_info->crop_top_offset,
				&dec_disp_info->crop_bottom_offset);
		crop_data->left = dec_disp_info->crop_left_offset;
		crop_data->top = dec_disp_info->crop_top_offset;
		crop_data->right = frame_sz->width -
			dec_disp_info->crop_right_offset;
		crop_data->bottom = frame_sz->height -
			dec_disp_info->crop_bottom_offset;
	} else {
		crop_data->left = 0;
		crop_data->top = 0;
		crop_data->right = frame_sz->width;
		crop_data->bottom = frame_sz->height;
	}
}