static enum ia_css_err set_input_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; switch (frame->info.format) { case IA_CSS_FRAME_FORMAT_QPLANE6: case IA_CSS_FRAME_FORMAT_YUV420_16: case IA_CSS_FRAME_FORMAT_RAW_PACKED: case IA_CSS_FRAME_FORMAT_RAW: case IA_CSS_FRAME_FORMAT_YUV420: case IA_CSS_FRAME_FORMAT_YUV_LINE: case IA_CSS_FRAME_FORMAT_NV12: break; default: return IA_CSS_ERR_INVALID_ARGUMENTS; } sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.in, frame, pipe_num, stage_num, sh_css_frame_in); return IA_CSS_SUCCESS; }
static enum ia_css_err set_view_finder_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; switch (frame->info.format) { // the dual output pin case IA_CSS_FRAME_FORMAT_NV12: case IA_CSS_FRAME_FORMAT_YUYV: case IA_CSS_FRAME_FORMAT_UYVY: // for vf_veceven case IA_CSS_FRAME_FORMAT_YUV_LINE: break; default: return IA_CSS_ERR_INVALID_ARGUMENTS; } sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.out_vf, frame, pipe_num, stage_num, sh_css_frame_out_vf); return IA_CSS_SUCCESS; }
static enum sh_css_err set_view_finder_buffer(const struct sh_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return sh_css_err_invalid_arguments; if (frame->info.format != SH_CSS_FRAME_FORMAT_YUV_LINE) return sh_css_err_unsupported_frame_format; sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.out_vf, frame, pipe_num, stage_num, sh_css_frame_out_vf); return sh_css_success; }
static enum sh_css_err set_capture_pp_frame_buffer(const struct sh_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return sh_css_err_invalid_arguments; if (frame->info.format != SH_CSS_FRAME_FORMAT_YUV420) return sh_css_err_unsupported_frame_format; sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.extra, frame, pipe_num, stage_num, sh_css_frame_extra); return sh_css_success; }
static enum ia_css_err set_capture_pp_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; if (frame->info.format != IA_CSS_FRAME_FORMAT_YUV420) return IA_CSS_ERR_INVALID_ARGUMENTS; sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.extra, frame, pipe_num, stage_num, sh_css_frame_extra); return IA_CSS_SUCCESS; }
static enum ia_css_err set_tnr_out_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; if (frame->info.format != IA_CSS_FRAME_FORMAT_YUV_LINE) return IA_CSS_ERR_INVALID_ARGUMENTS; sh_css_copy_frame_to_spframe(NULL, frame, pipe_num, stage_num, sh_css_frame_tnr_out); return IA_CSS_SUCCESS; }
static enum ia_css_err set_tnr_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num, unsigned index) { enum sh_css_frame_id id = sh_css_frame_tnr_0 + index; if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; if (frame->info.format != IA_CSS_FRAME_FORMAT_YUV_LINE) return IA_CSS_ERR_INVALID_ARGUMENTS; sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.tnr_frames[index], frame, pipe_num, stage_num, id); return IA_CSS_SUCCESS; }
static enum ia_css_err set_ref_extra_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { sh_css_dtrace(SH_DBG_TRACE_PRIVATE, "set_ref_extra_frame_buffer() %08x\n", frame); if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; if (frame->info.format != IA_CSS_FRAME_FORMAT_YUV420) return IA_CSS_ERR_INVALID_ARGUMENTS; sh_css_copy_frame_to_spframe(NULL, frame, pipe_num, stage_num, sh_css_frame_ref_extra); return IA_CSS_SUCCESS; }
static enum ia_css_err set_output_frame_buffer(const struct ia_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return IA_CSS_ERR_INVALID_ARGUMENTS; switch (frame->info.format) { case IA_CSS_FRAME_FORMAT_YUV420: case IA_CSS_FRAME_FORMAT_YUV422: case IA_CSS_FRAME_FORMAT_YUV444: case IA_CSS_FRAME_FORMAT_YV12: case IA_CSS_FRAME_FORMAT_YV16: case IA_CSS_FRAME_FORMAT_YUV420_16: case IA_CSS_FRAME_FORMAT_YUV422_16: case IA_CSS_FRAME_FORMAT_NV11: case IA_CSS_FRAME_FORMAT_NV12: case IA_CSS_FRAME_FORMAT_NV16: case IA_CSS_FRAME_FORMAT_NV21: case IA_CSS_FRAME_FORMAT_NV61: case IA_CSS_FRAME_FORMAT_YUYV: case IA_CSS_FRAME_FORMAT_UYVY: case IA_CSS_FRAME_FORMAT_CSI_MIPI_YUV420_8: case IA_CSS_FRAME_FORMAT_YUV_LINE: case IA_CSS_FRAME_FORMAT_RGB565: case IA_CSS_FRAME_FORMAT_RGBA888: case IA_CSS_FRAME_FORMAT_PLANAR_RGB888: case IA_CSS_FRAME_FORMAT_RAW: case IA_CSS_FRAME_FORMAT_RAW_PACKED: case IA_CSS_FRAME_FORMAT_QPLANE6: case IA_CSS_FRAME_FORMAT_BINARY_8: break; default: return IA_CSS_ERR_INVALID_ARGUMENTS; } sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.out, frame, pipe_num, stage_num, sh_css_frame_out); return IA_CSS_SUCCESS; }
static enum sh_css_err set_output_frame_buffer(const struct sh_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return sh_css_err_invalid_arguments; switch (frame->info.format) { case SH_CSS_FRAME_FORMAT_YUV420: case SH_CSS_FRAME_FORMAT_YUV422: case SH_CSS_FRAME_FORMAT_YUV444: case SH_CSS_FRAME_FORMAT_YV12: case SH_CSS_FRAME_FORMAT_YV16: case SH_CSS_FRAME_FORMAT_YUV420_16: case SH_CSS_FRAME_FORMAT_YUV422_16: case SH_CSS_FRAME_FORMAT_NV11: case SH_CSS_FRAME_FORMAT_NV12: case SH_CSS_FRAME_FORMAT_NV16: case SH_CSS_FRAME_FORMAT_NV21: case SH_CSS_FRAME_FORMAT_NV61: case SH_CSS_FRAME_FORMAT_YUYV: case SH_CSS_FRAME_FORMAT_UYVY: case SH_CSS_FRAME_FORMAT_YUV_LINE: case SH_CSS_FRAME_FORMAT_RGB565: case SH_CSS_FRAME_FORMAT_RGBA888: case SH_CSS_FRAME_FORMAT_PLANAR_RGB888: case SH_CSS_FRAME_FORMAT_RAW: case SH_CSS_FRAME_FORMAT_QPLANE6: case SH_CSS_FRAME_FORMAT_BINARY_8: break; default: return sh_css_err_unsupported_frame_format; } sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.out, frame, pipe_num, stage_num, sh_css_frame_out); return sh_css_success; }
static enum sh_css_err set_input_frame_buffer(const struct sh_css_frame *frame, unsigned pipe_num, unsigned stage_num) { if (frame == NULL) return sh_css_err_invalid_arguments; switch (frame->info.format) { case SH_CSS_FRAME_FORMAT_QPLANE6: case SH_CSS_FRAME_FORMAT_YUV420_16: case SH_CSS_FRAME_FORMAT_RAW: case SH_CSS_FRAME_FORMAT_YUV420: case SH_CSS_FRAME_FORMAT_YUV_LINE: case SH_CSS_FRAME_FORMAT_NV12: break; default: return sh_css_err_unsupported_frame_format; } sh_css_copy_frame_to_spframe(&sh_css_sp_stage.frames.in, frame, pipe_num, stage_num, sh_css_frame_in); return sh_css_success; }