xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/hwi/fakecamera/FakeCamHwIsp20.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 
2 /*
3  *  Copyright (c) 2019 Rockchip Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef _FAKE_CAM_HW_ISP20_H_
20 #define _FAKE_CAM_HW_ISP20_H_
21 #include "CamHwIsp20.h"
22 #include "isp21/CamHwIsp21.h"
23 #include "isp3x/CamHwIsp3x.h"
24 #include "isp32/CamHwIsp32.h"
25 
26 namespace RkCam {
27 
28 class FakeCamHwIsp20 : virtual public CamHwIsp20 {
29 public:
30     explicit FakeCamHwIsp20();
31     virtual ~FakeCamHwIsp20();
32     virtual XCamReturn init(const char* sns_ent_name);
33     virtual XCamReturn prepare(uint32_t width, uint32_t height, int mode, int t_delay, int g_delay);
34     virtual XCamReturn enqueueRawBuffer(void *rawdata, bool sync);
35     virtual XCamReturn enqueueRawFile(const char *path);
36     virtual XCamReturn registRawdataCb(void (*callback)(void *));
37     virtual XCamReturn rawdataPrepare(rk_aiq_raw_prop_t prop);
38     virtual XCamReturn poll_event_ready (uint32_t sequence, int type);
39     virtual XCamReturn poll_buffer_ready (SmartPtr<V4l2BufferProxy> &buf, int dev_index);
40 protected:
41     using CamHwIsp20::poll_buffer_ready;
42     virtual XCamReturn init_mipi_devices(rk_sensor_full_info_t *s_info);
43     void parse_rk_rawdata(void *rawdata, struct rk_aiq_vbuf *vbuf);
44     XCamReturn parse_rk_rawfile(FILE *fp, struct rk_aiq_vbuf *vbuf);
45     XCamReturn setupOffLineLink(int isp_index, bool enable);
46     struct _st_addrinfo _st_addr[3];
47     struct _raw_format _rawfmt;
48     rk_aiq_frame_info_t _finfo;
49     enum v4l2_memory    _rx_memory_type;
50     enum v4l2_memory    _tx_memory_type;
51     rk_aiq_rawbuf_type_t _rawbuf_type;
52     SmartPtr<V4l2Device> _mipi_tx_devs[3];
53     SmartPtr<V4l2Device> _mipi_rx_devs[3];
54     int isp_index;
55 };
56 
57 class FakeCamHwIsp21 : virtual public CamHwIsp21, virtual public FakeCamHwIsp20 {
58 public:
59     explicit FakeCamHwIsp21();
60     virtual ~FakeCamHwIsp21();
61     virtual XCamReturn init(const char* sns_ent_name) override;
62     virtual XCamReturn prepare(uint32_t width, uint32_t height, int mode, int t_delay, int g_delay) override;
63     virtual XCamReturn enqueueRawBuffer(void *rawdata, bool sync) override;
64     virtual XCamReturn enqueueRawFile(const char *path) override;
65     virtual XCamReturn registRawdataCb(void (*callback)(void *)) override;
66     virtual XCamReturn rawdataPrepare(rk_aiq_raw_prop_t prop) override;
67     virtual XCamReturn poll_event_ready (uint32_t sequence, int type) override;
poll_buffer_ready(SmartPtr<V4l2BufferProxy> & buf,int dev_index)68     virtual XCamReturn poll_buffer_ready (SmartPtr<V4l2BufferProxy> &buf, int dev_index) override {
69             return FakeCamHwIsp20::poll_buffer_ready(buf, dev_index);
70     }
71 private:
72     using CamHwIsp20::poll_buffer_ready;
73 };
74 
75 class FakeCamHwIsp3x : virtual public CamHwIsp3x, virtual public FakeCamHwIsp20 {
76 public:
77     explicit FakeCamHwIsp3x();
78     virtual ~FakeCamHwIsp3x();
79     virtual XCamReturn init(const char* sns_ent_name) override;
80     virtual XCamReturn prepare(uint32_t width, uint32_t height, int mode, int t_delay, int g_delay) override;
81     virtual XCamReturn enqueueRawBuffer(void *rawdata, bool sync) override;
82     virtual XCamReturn enqueueRawFile(const char *path) override;
83     virtual XCamReturn registRawdataCb(void (*callback)(void *)) override;
84     virtual XCamReturn rawdataPrepare(rk_aiq_raw_prop_t prop) override;
85     virtual XCamReturn poll_event_ready (uint32_t sequence, int type) override;
poll_buffer_ready(SmartPtr<V4l2BufferProxy> & buf,int dev_index)86     virtual XCamReturn poll_buffer_ready (SmartPtr<V4l2BufferProxy> &buf, int dev_index) override {
87             return FakeCamHwIsp20::poll_buffer_ready(buf, dev_index);
88     }
89 private:
90     using CamHwIsp20::poll_buffer_ready;
91 };
92 
93 class FakeCamHwIsp32 : virtual public CamHwIsp32, virtual public FakeCamHwIsp20 {
94 public:
95     explicit FakeCamHwIsp32();
96     virtual ~FakeCamHwIsp32();
97     virtual XCamReturn init(const char* sns_ent_name) override;
98     virtual XCamReturn prepare(uint32_t width, uint32_t height, int mode, int t_delay, int g_delay) override;
99     virtual XCamReturn enqueueRawBuffer(void *rawdata, bool sync) override;
100     virtual XCamReturn enqueueRawFile(const char *path) override;
101     virtual XCamReturn registRawdataCb(void (*callback)(void *)) override;
102     virtual XCamReturn rawdataPrepare(rk_aiq_raw_prop_t prop) override;
103     virtual XCamReturn poll_event_ready (uint32_t sequence, int type) override;
poll_buffer_ready(SmartPtr<V4l2BufferProxy> & buf,int dev_index)104     virtual XCamReturn poll_buffer_ready (SmartPtr<V4l2BufferProxy> &buf, int dev_index) override {
105             return FakeCamHwIsp20::poll_buffer_ready(buf, dev_index);
106     }
107 private:
108     using CamHwIsp20::poll_buffer_ready;
109 };
110 
111 
112 }
113 #endif
114