Пример #1
0
static u32 ddl_frame_run_callback(struct ddl_context *ddl_context)
{
	struct ddl_client_context *ddl;
	u32 channel_inst_id;
	u32 return_status = true;

	vidc_1080p_get_returned_channel_inst_id(&channel_inst_id);
	vidc_1080p_clear_returned_channel_inst_id();
	ddl = ddl_get_current_ddl_client_for_channel_id(ddl_context,
			ddl_context->response_cmd_ch_id);
	if (ddl) {
		if (ddl->cmd_state == DDL_CMD_DECODE_FRAME)
			return_status = ddl_decoder_frame_run_callback(ddl);
		else if (ddl->cmd_state == DDL_CMD_ENCODE_FRAME)
			ddl_encoder_frame_run_callback(ddl);
		else if (ddl->cmd_state == DDL_CMD_EOS)
			return_status = ddl_eos_frame_done_callback(ddl);
		else {
			DDL_MSG_ERROR("UNKWN_FRAME_DONE");
			return_status = false;
		}
	} else
		return_status = false;

	return return_status;
}
static u32 ddl_frame_run_callback(struct ddl_context *ddl_context)
{
	struct ddl_client_context *ddl;
	u32 channel_inst_id;
	u32 return_status = true;

	vidc_1080p_get_returned_channel_inst_id(&channel_inst_id);
	vidc_1080p_clear_returned_channel_inst_id();
	ddl = ddl_get_current_ddl_client_for_channel_id(ddl_context,
			ddl_context->response_cmd_ch_id);
	if (ddl) {
		if (ddl_context->pix_cache_enable) {
			struct vidc_1080P_pix_cache_statistics
			pixel_cache_stats;
			vidc_pix_cache_get_statistics(&pixel_cache_stats);

			DDL_MSG_HIGH(" pixel cache hits = %d,"
				"miss = %d", pixel_cache_stats.access_hit,
				pixel_cache_stats.access_miss);
			DDL_MSG_HIGH(" pixel cache core reqs = %d,"
				"axi reqs = %d", pixel_cache_stats.core_req,
				pixel_cache_stats.axi_req);
			DDL_MSG_HIGH(" pixel cache core bus stats = %d,"
			"axi bus stats = %d", pixel_cache_stats.core_bus,
				pixel_cache_stats.axi_bus);
		}

		if (ddl->cmd_state == DDL_CMD_DECODE_FRAME)
			return_status = ddl_decoder_frame_run_callback(ddl);
		else if (ddl->cmd_state == DDL_CMD_ENCODE_FRAME)
			ddl_encoder_frame_run_callback(ddl);
		else if (ddl->cmd_state == DDL_CMD_EOS)
			return_status = ddl_eos_frame_done_callback(ddl);
		else {
			DDL_MSG_ERROR("UNKWN_FRAME_DONE");
			return_status = false;
		}
	} else
		return_status = false;

	return return_status;
}
static u32 ddl_operation_done_callback(struct ddl_context *ddl_context)
{
	u32 return_status = true;

	switch (ddl_context->cmd_state) {
	case DDL_CMD_DECODE_FRAME:
		{
			return_status = ddl_decoder_frame_run_callback(
				ddl_context);
			break;
		}
	case DDL_CMD_ENCODE_FRAME:
		{
			ddl_encoder_frame_run_callback(ddl_context);
			break;
		}
	case DDL_CMD_CHANNEL_SET:
		{
			return_status = ddl_channel_set_callback(
				ddl_context);
			break;
		}
	case DDL_CMD_INIT_CODEC:
		{
			ddl_init_codec_done_callback(ddl_context);
			break;
		}
	case DDL_CMD_HEADER_PARSE:
		{
			return_status = ddl_header_done_callback(
				ddl_context);
			break;
		}
	case DDL_CMD_DECODE_SET_DPB:
		{
			return_status = ddl_dpb_buffers_set_done_callback(
				ddl_context);
			break;
		}
	case DDL_CMD_CHANNEL_END:
		{
			ddl_channel_end_callback(ddl_context);
			break;
		}
	case DDL_CMD_EOS:
		{
			return_status = ddl_eos_frame_done_callback(
				ddl_context);
			break;
		}
	case DDL_CMD_CPU_RESET:
		{
			ddl_cpu_started_callback(ddl_context);
			break;
		}
	default:
		{
			VIDC_LOG_STRING("UNKWN_OPDONE");
			return_status = false;
			break;
		}
	}
	return return_status;
}