hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#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<V4l2BufferProxy> &buf, int dev_index)
{
    XCamReturn ret = XCAM_RETURN_NO_ERROR;
 
    if (mCamHw->mHwResLintener) {
        SmartPtr<VideoBuffer> video_buf = buf.dynamic_cast_ptr<VideoBuffer>();
        SmartPtr<PdafBufferProxy> pdaf_buf = buf.dynamic_cast_ptr<PdafBufferProxy>();
 
        pdaf_buf->pdaf_meas = mPdafMeas;
        mCamHw->mHwResLintener->hwResCb(video_buf);
    }
 
    return ret;
}
 
}