buffer_processor.h
Go to the documentation of this file.
1 /*
2  * BSD 3-Clause License
3  *
4  * Copyright (c) 2019, Analog Devices, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice, this
11  * list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from
19  * this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
34 
35 #include "tofi/tofi_compute.h"
36 #include "tofi/tofi_config.h"
37 #include "tofi/tofi_util.h"
38 
39 #define OUTPUT_DEVICE "/dev/video1"
40 #define CHIP_ID_SINGLE 0x5931
41 #define DEFAULT_MODE 0
42 
43 struct buffer {
44  void *start;
45  size_t length;
46 };
47 
48 struct VideoDev {
49  int fd;
50  int sfd;
52  unsigned int nVideoBuffers;
53  struct v4l2_plane planes[8];
54  enum v4l2_buf_type videoBuffersType;
55  bool started;
56 
58  : fd(-1), sfd(-1), videoBuffers(nullptr), nVideoBuffers(0),
59  started(false) {}
60 };
61 
63  public:
66 
67  public:
69  aditof::Status setInputDevice(VideoDev *inputVideoDev);
70  aditof::Status setVideoProperties(int frameWidth, int frameHeight);
71  aditof::Status setProcessorProperties(uint8_t *iniFile,
72  uint16_t iniFileLength,
73  uint8_t *calData,
74  uint16_t calDataLength, uint16_t mode,
75  bool ispEnabled);
76  aditof::Status processBuffer(uint16_t *buffer, const uint16_t &chipID,
77  const uint8_t &mode_num);
80 
81  public:
82  virtual aditof::Status waitForBuffer() override;
83  virtual aditof::Status
84  dequeueInternalBuffer(struct v4l2_buffer &buf) override;
85  virtual aditof::Status
86  getInternalBuffer(uint8_t **buffer, uint32_t &buf_data_len,
87  const struct v4l2_buffer &buf) override;
88  virtual aditof::Status
89  enqueueInternalBuffer(struct v4l2_buffer &buf) override;
90  virtual aditof::Status
91  getDeviceFileDescriptor(int &fileDescriptor) override;
92 
93  private:
94  aditof::Status waitForBufferPrivate(struct VideoDev *dev = nullptr);
96  struct VideoDev *dev = nullptr);
98  uint32_t &buf_data_len,
99  const struct v4l2_buffer &buf,
100  struct VideoDev *dev = nullptr);
101  aditof::Status enqueueInternalBufferPrivate(struct v4l2_buffer &buf,
102  struct VideoDev *dev = nullptr);
103 
104  private:
107 
110 
111  uint16_t *m_processedBuffer;
112 
116 
117  struct v4l2_capability m_videoCap;
118  struct v4l2_format m_videoFormat;
120 
123 };
BufferProcessor::m_inputVideoDev
struct VideoDev * m_inputVideoDev
Definition: buffer_processor.h:121
BufferProcessor::getDeviceFileDescriptor
virtual aditof::Status getDeviceFileDescriptor(int &fileDescriptor) override
Definition: buffer_processor.cpp:436
VideoDev::VideoDev
VideoDev()
Definition: buffer_processor.h:57
BufferProcessor::waitForBufferPrivate
aditof::Status waitForBufferPrivate(struct VideoDev *dev=nullptr)
Definition: buffer_processor.cpp:347
BufferProcessor::getTofiCongfig
TofiConfig * getTofiCongfig()
Definition: buffer_processor.cpp:463
VideoDev::fd
int fd
Definition: buffer_processor.h:49
BufferProcessor::setVideoProperties
aditof::Status setVideoProperties(int frameWidth, int frameHeight)
Definition: buffer_processor.cpp:132
mode
GLenum mode
Definition: glcorearb.h:2764
BufferProcessor::setInputDevice
aditof::Status setInputDevice(VideoDev *inputVideoDev)
Definition: buffer_processor.cpp:126
BufferProcessor::m_processorPropSet
bool m_processorPropSet
Definition: buffer_processor.h:106
OUTPUT_DEVICE
#define OUTPUT_DEVICE
Definition: buffer_processor.h:39
VideoDev
Definition: buffer_processor.h:48
TofiConfig
Definition: tofi_config.h:40
BufferProcessor::m_videoDeviceName
const char * m_videoDeviceName
Definition: buffer_processor.h:119
BufferProcessor::dequeueInternalBuffer
virtual aditof::Status dequeueInternalBuffer(struct v4l2_buffer &buf) override
Definition: buffer_processor.cpp:446
v4l_buffer_access_interface.h
BufferProcessor::waitForBuffer
virtual aditof::Status waitForBuffer() override
Definition: buffer_processor.cpp:441
enabled
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glcorearb.h:4174
BufferProcessor::m_outputFrameWidth
uint16_t m_outputFrameWidth
Definition: buffer_processor.h:108
BufferProcessor
Definition: buffer_processor.h:62
BufferProcessor::~BufferProcessor
~BufferProcessor()
Definition: buffer_processor.cpp:78
mode_num
uint8_t mode_num
Definition: adsd3500_sensor.cpp:69
BufferProcessor::m_processedBuffer
uint16_t * m_processedBuffer
Definition: buffer_processor.h:111
BufferProcessor::open
aditof::Status open()
Definition: buffer_processor.cpp:98
BufferProcessor::BufferProcessor
BufferProcessor()
Definition: buffer_processor.cpp:71
BufferProcessor::m_videoCap
struct v4l2_capability m_videoCap
Definition: buffer_processor.h:117
buffer::start
void * start
Definition: buffer_processor.h:44
VideoDev::planes
struct v4l2_plane planes[8]
Definition: buffer_processor.h:53
BufferProcessor::enqueueInternalBufferPrivate
aditof::Status enqueueInternalBufferPrivate(struct v4l2_buffer &buf, struct VideoDev *dev=nullptr)
Definition: buffer_processor.cpp:422
buffer::length
size_t length
Definition: buffer_processor.h:45
BufferProcessor::setProcessorProperties
aditof::Status setProcessorProperties(uint8_t *iniFile, uint16_t iniFileLength, uint8_t *calData, uint16_t calDataLength, uint16_t mode, bool ispEnabled)
Definition: buffer_processor.cpp:162
buffer
Definition: buffer_processor.h:43
BufferProcessor::m_tofiConfig
TofiConfig * m_tofiConfig
Definition: buffer_processor.h:113
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:4175
BufferProcessor::dequeueInternalBufferPrivate
aditof::Status dequeueInternalBufferPrivate(struct v4l2_buffer &buf, struct VideoDev *dev=nullptr)
Definition: buffer_processor.cpp:375
TofiComputeContext
Function to get the version for TOF Depth Compute Engine Library.
Definition: tofi_compute.h:43
aditof::Status
Status
Status of any operation that the TOF sdk performs.
Definition: status_definitions.h:48
BufferProcessor::processBuffer
aditof::Status processBuffer(uint16_t *buffer, const uint16_t &chipID, const uint8_t &mode_num)
Definition: buffer_processor.cpp:214
BufferProcessor::m_videoFormat
struct v4l2_format m_videoFormat
Definition: buffer_processor.h:118
VideoDev::sfd
int sfd
Definition: buffer_processor.h:50
VideoDev::videoBuffersType
enum v4l2_buf_type videoBuffersType
Definition: buffer_processor.h:54
BufferProcessor::getDepthComputeVersion
aditof::Status getDepthComputeVersion(uint8_t &enabled)
Definition: buffer_processor.cpp:465
tofi_config.h
aditof::V4lBufferAccessInterface
Interface for operations on v4l buffer such as enquing and dequeing.
Definition: v4l_buffer_access_interface.h:46
BufferProcessor::getInternalBufferPrivate
aditof::Status getInternalBufferPrivate(uint8_t **buffer, uint32_t &buf_data_len, const struct v4l2_buffer &buf, struct VideoDev *dev=nullptr)
Definition: buffer_processor.cpp:409
VideoDev::started
bool started
Definition: buffer_processor.h:55
tofi_util.h
tofi_compute.h
BufferProcessor::m_xyzDealiasData
TofiXYZDealiasData m_xyzDealiasData[11]
Definition: buffer_processor.h:115
TofiXYZDealiasData
Definition: tofi_camera_intrinsics.h:34
BufferProcessor::m_outputVideoDev
struct VideoDev * m_outputVideoDev
Definition: buffer_processor.h:122
VideoDev::nVideoBuffers
unsigned int nVideoBuffers
Definition: buffer_processor.h:52
BufferProcessor::getInternalBuffer
virtual aditof::Status getInternalBuffer(uint8_t **buffer, uint32_t &buf_data_len, const struct v4l2_buffer &buf) override
Definition: buffer_processor.cpp:452
false
#define false
Definition: cJSON.c:70
BufferProcessor::enqueueInternalBuffer
virtual aditof::Status enqueueInternalBuffer(struct v4l2_buffer &buf) override
Definition: buffer_processor.cpp:458
BufferProcessor::m_outputFrameHeight
uint16_t m_outputFrameHeight
Definition: buffer_processor.h:109
VideoDev::videoBuffers
struct buffer * videoBuffers
Definition: buffer_processor.h:51
BufferProcessor::m_tofiComputeContext
TofiComputeContext * m_tofiComputeContext
Definition: buffer_processor.h:114
BufferProcessor::m_vidPropSet
bool m_vidPropSet
Definition: buffer_processor.h:105


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:48