#include "rk_aiq_comm.h" #include "rkispp-config.h" #include "rkisp2-config.h" #include "PdafStreamProcUnit.h" #include "CamHwIsp20.h" #include "code_to_pixel_format.h" namespace RkCam { PdafStreamProcUnit::PdafStreamProcUnit (int type) { mPdafDev = NULL; mPdafStream = NULL; mStartFlag = false; mBufType = type; } PdafStreamProcUnit::~PdafStreamProcUnit () { } void PdafStreamProcUnit::set_devices(CamHwIsp20* camHw) { mCamHw = camHw; } XCamReturn PdafStreamProcUnit::prepare(CalibDbV2_Af_Pdaf_t *pdaf_calib, rk_sensor_pdaf_info_t *pdaf_inf) { XCamReturn ret = XCAM_RETURN_NO_ERROR; uint32_t pixelformat; stop(); mPdafDev = new V4l2Device(pdaf_inf->pdaf_vdev); mPdafDev->open(); mPdafStream = new RKPdafStream(mPdafDev, ISP_POLL_PDAF_STATS); mPdafStream->setPollCallback (this); mPdafMeas.pdMirrorInCalib = pdaf_calib->pdMirrorInCalib; mPdafMeas.pdWidth = pdaf_calib->pdWidth; mPdafMeas.pdHeight = pdaf_calib->pdHeight; ret = mPdafDev->set_format(pdaf_inf->pdaf_width, pdaf_inf->pdaf_height, pdaf_inf->pdaf_pixelformat, V4L2_FIELD_NONE, 0); return ret; } void PdafStreamProcUnit::start() { if (mPdafStream.ptr() && !mStartFlag) { mPdafStream->start(); mStartFlag = true; } } void PdafStreamProcUnit::stop() { if (mPdafStream.ptr() && mStartFlag) { mPdafStream->stop(); mStartFlag = false; } } XCamReturn PdafStreamProcUnit::poll_buffer_ready (SmartPtr &buf, int dev_index) { XCamReturn ret = XCAM_RETURN_NO_ERROR; if (mCamHw->mHwResLintener) { SmartPtr video_buf = buf.dynamic_cast_ptr(); SmartPtr pdaf_buf = buf.dynamic_cast_ptr(); pdaf_buf->pdaf_meas = mPdafMeas; mCamHw->mHwResLintener->hwResCb(video_buf); } return ret; } }