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; }