Jetson Linux API Reference

38.2 Release
EGLStream.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2017-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of NVIDIA CORPORATION nor the names of its
14  * contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
25  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
37 #ifndef _ARGUS_EGL_STREAM_H
38 #define _ARGUS_EGL_STREAM_H
39 
40 namespace Argus
41 {
42 
84 DEFINE_UUID(StreamType, STREAM_TYPE_EGL, 3a659360,5231,11e7,9598,18,00,20,0c,9a,66);
85 
89 DEFINE_NAMED_UUID_CLASS(EGLStreamMode);
90 DEFINE_UUID(EGLStreamMode, EGL_STREAM_MODE_MAILBOX, 33661d40,3ee2,11e6,bdf4,08,00,20,0c,9a,66);
91 DEFINE_UUID(EGLStreamMode, EGL_STREAM_MODE_FIFO, 33661d41,3ee2,11e6,bdf4,08,00,20,0c,9a,66);
92 
100 DEFINE_UUID(InterfaceID, IID_EGL_OUTPUT_STREAM_SETTINGS, 3a659361,5231,11e7,9598,18,00,20,0c,9a,66);
102 {
103 public:
104  static const InterfaceID& id() { return IID_EGL_OUTPUT_STREAM_SETTINGS; }
105 
110  virtual Status setPixelFormat(const PixelFormat& format) = 0;
111  virtual PixelFormat getPixelFormat() const = 0;
112 
117  virtual Status setResolution(const Size2D<uint32_t>& resolution) = 0;
118  virtual Size2D<uint32_t> getResolution() const = 0;
119 
131  virtual Status setExposureCount(uint32_t exposureCount) = 0;
132  virtual uint32_t getExposureCount() const = 0;
133 
138  virtual Status setEGLDisplay(EGLDisplay eglDisplay) = 0;
139  virtual EGLDisplay getEGLDisplay() const = 0;
140 
179  virtual Status setMode(const EGLStreamMode& mode) = 0;
180  virtual EGLStreamMode getMode() const = 0;
181 
187  virtual Status setFifoLength(uint32_t fifoLength) = 0;
188  virtual uint32_t getFifoLength() const = 0;
189 
199  virtual Status setMetadataEnable(bool metadataEnable) = 0;
200  virtual bool getMetadataEnable() const = 0;
201 
209  virtual bool supportsOutputStreamFormat(const SensorMode* sensorMode,
210  const PixelFormat& outputFormat) const = 0;
211 
231  virtual Status setBufferLayout(const BufferLayout& layout) = 0;
232  virtual BufferLayout getBufferLayout() const = 0;
233 
234 protected:
236 };
237 
245 DEFINE_UUID(InterfaceID, IID_EGL_OUTPUT_STREAM, 3a659362,5231,11e7,9598,18,00,20,0c,9a,66);
247 {
248 public:
249  static const InterfaceID& id() { return IID_EGL_OUTPUT_STREAM; }
250 
258  virtual Status waitUntilConnected(uint64_t timeout = TIMEOUT_INFINITE) const = 0;
259 
263  virtual void disconnect() = 0;
264 
268  virtual PixelFormat getPixelFormat() const = 0;
269 
273  virtual Size2D<uint32_t> getResolution() const = 0;
274 
278  virtual EGLDisplay getEGLDisplay() const = 0;
279 
283  virtual EGLStreamKHR getEGLStream() const = 0;
284 
285 protected:
287 };
288 
296 DEFINE_UUID(InterfaceID, IID_EGL_INPUT_STREAM_SETTINGS, c3579170,b1ac,11ec,a893,08,00,20,0c,9a,66);
298 {
299 public:
300  static const InterfaceID& id() { return IID_EGL_INPUT_STREAM_SETTINGS; }
301 
306  virtual Status setPixelFormat(const PixelFormat& format) = 0;
307  virtual PixelFormat getPixelFormat() const = 0;
308 
313  virtual Status setResolution(const Size2D<uint32_t>& resolution) = 0;
314  virtual Size2D<uint32_t> getResolution() const = 0;
315 
327  virtual Status setExposureCount(uint32_t exposureCount) = 0;
328  virtual uint32_t getExposureCount() const = 0;
329 
330 
335  virtual Status setEGLDisplay(EGLDisplay eglDisplay) = 0;
336  virtual EGLDisplay getEGLDisplay() const = 0;
337 
358  virtual Status setFifoLength(uint32_t fifoLength) = 0;
359  virtual uint32_t getFifoLength() const = 0;
360 
368  virtual bool supportsInputStreamFormat(const SensorMode* sensorMode,
369  const PixelFormat& inputFormat) const = 0;
370 
371 protected:
373 };
374 
382 DEFINE_UUID(InterfaceID, IID_EGL_INPUT_STREAM, c3579171,b1ac,11ec,a893,08,00,20,0c,9a,66)
384 {
385 public:
386  static const InterfaceID& id() { return IID_EGL_INPUT_STREAM; }
387 
395  virtual Status waitUntilConnected(uint64_t timeout = TIMEOUT_INFINITE) const = 0;
396 
400  virtual void disconnect() = 0;
401 
405  virtual PixelFormat getPixelFormat() const = 0;
406 
410  virtual Size2D<uint32_t> getResolution() const = 0;
411 
415  virtual EGLDisplay getEGLDisplay() const = 0;
416 
420  virtual EGLStreamKHR getEGLStream() const = 0;
421 
422 protected:
424 };
425 
426 } // namespace Argus
427 
428 #endif // _ARGUS_EGL_STREAM_H
Argus::IEGLOutputStream::getResolution
virtual Size2D< uint32_t > getResolution() const =0
Returns the image resolution of the stream, in pixels.
Argus::IEGLOutputStreamSettings::setMetadataEnable
virtual Status setMetadataEnable(bool metadataEnable)=0
Enables or disables embedding Argus CaptureMetadata within frames written to the EGLStream.
Argus::IEGLOutputStreamSettings::getFifoLength
virtual uint32_t getFifoLength() const =0
Argus::DEFINE_NAMED_UUID_CLASS
DEFINE_NAMED_UUID_CLASS(BufferType)
Argus::TIMEOUT_INFINITE
const uint64_t TIMEOUT_INFINITE
Constant used for infinite timeouts.
Definition: Types.h:93
Argus::IEGLInputStreamSettings::setEGLDisplay
virtual Status setEGLDisplay(EGLDisplay eglDisplay)=0
Set the EGLDisplay the created stream must belong to.
Argus::IEGLOutputStream::~IEGLOutputStream
~IEGLOutputStream()
Definition: EGLStream.h:286
Argus::DEFINE_UUID
DEFINE_UUID(ExtensionName, EXT_BAYER_AVERAGE_MAP, 12c3de20, 64c5, 11e6, bdf4, 08, 00, 20, 0c, 9a, 66)
Argus::IEGLInputStreamSettings::getPixelFormat
virtual PixelFormat getPixelFormat() const =0
Argus::IEGLOutputStreamSettings::id
static const InterfaceID & id()
Definition: EGLStream.h:104
Argus::IEGLOutputStreamSettings::setEGLDisplay
virtual Status setEGLDisplay(EGLDisplay eglDisplay)=0
Set the EGLDisplay the created stream must belong to.
Argus
Definition: BayerAverageMap.h:39
Argus::IEGLInputStreamSettings::setResolution
virtual Status setResolution(const Size2D< uint32_t > &resolution)=0
Set the resolution of the stream.
Argus::IEGLOutputStreamSettings::setFifoLength
virtual Status setFifoLength(uint32_t fifoLength)=0
Sets the FIFO queue length of the stream.
Argus::Size2D< uint32_t >
Argus::IEGLOutputStreamSettings::getMetadataEnable
virtual bool getMetadataEnable() const =0
Argus::IEGLOutputStreamSettings::getPixelFormat
virtual PixelFormat getPixelFormat() const =0
Argus::IEGLInputStreamSettings::id
static const InterfaceID & id()
Definition: EGLStream.h:300
Argus::Interface
The top-level interface class.
Definition: Types.h:374
Argus::IEGLOutputStreamSettings::getMode
virtual EGLStreamMode getMode() const =0
Argus::IEGLOutputStreamSettings
Definition: EGLStream.h:101
Argus::IEGLOutputStreamSettings::setResolution
virtual Status setResolution(const Size2D< uint32_t > &resolution)=0
Set the resolution of the stream.
Argus::IEGLInputStream::~IEGLInputStream
~IEGLInputStream()
Definition: EGLStream.h:423
Argus::IEGLOutputStream::getPixelFormat
virtual PixelFormat getPixelFormat() const =0
Returns the format of the stream.
Argus::InterfaceID
A unique identifier for a libargus Interface.
Definition: Types.h:384
Argus::IEGLInputStreamSettings::~IEGLInputStreamSettings
~IEGLInputStreamSettings()
Definition: EGLStream.h:372
Argus::IEGLInputStreamSettings::setFifoLength
virtual Status setFifoLength(uint32_t fifoLength)=0
Sets the FIFO queue length of the stream.
Argus::IEGLInputStream::id
static const InterfaceID & id()
Definition: EGLStream.h:386
Argus::IEGLOutputStreamSettings::supportsOutputStreamFormat
virtual bool supportsOutputStreamFormat(const SensorMode *sensorMode, const PixelFormat &outputFormat) const =0
Argus::IEGLOutputStreamSettings::setBufferLayout
virtual Status setBufferLayout(const BufferLayout &layout)=0
Set the output buffer layout of the stream.
Argus::IEGLInputStreamSettings
Definition: EGLStream.h:297
Argus::IEGLInputStreamSettings::getEGLDisplay
virtual EGLDisplay getEGLDisplay() const =0
Argus::IEGLOutputStreamSettings::getEGLDisplay
virtual EGLDisplay getEGLDisplay() const =0
Argus::IEGLInputStreamSettings::getResolution
virtual Size2D< uint32_t > getResolution() const =0
Argus::IEGLOutputStreamSettings::setExposureCount
virtual Status setExposureCount(uint32_t exposureCount)=0
Set the number of exposures per stream frame.
Argus::IEGLOutputStream::disconnect
virtual void disconnect()=0
Disconnects the stream from the underlying EGLStream.
Argus::IEGLInputStreamSettings::setExposureCount
virtual Status setExposureCount(uint32_t exposureCount)=0
Set the number of exposures per stream frame.
Argus::IEGLInputStreamSettings::supportsInputStreamFormat
virtual bool supportsInputStreamFormat(const SensorMode *sensorMode, const PixelFormat &inputFormat) const =0
Argus::IEGLOutputStreamSettings::getResolution
virtual Size2D< uint32_t > getResolution() const =0
Argus::IEGLOutputStreamSettings::getExposureCount
virtual uint32_t getExposureCount() const =0
Argus::IEGLOutputStreamSettings::setPixelFormat
virtual Status setPixelFormat(const PixelFormat &format)=0
Set the format of the stream.
Argus::IEGLInputStream
Definition: EGLStream.h:383
Argus::IEGLOutputStream::id
static const InterfaceID & id()
Definition: EGLStream.h:249
Argus::IEGLOutputStreamSettings::getBufferLayout
virtual BufferLayout getBufferLayout() const =0
Argus::IEGLOutputStreamSettings::setMode
virtual Status setMode(const EGLStreamMode &mode)=0
Sets the mode of the OutputStream.
Argus::IEGLOutputStream::getEGLDisplay
virtual EGLDisplay getEGLDisplay() const =0
Returns the EGLDisplay the stream's EGLStream belongs to.
Argus::IEGLInputStreamSettings::getFifoLength
virtual uint32_t getFifoLength() const =0
Argus::IEGLOutputStream
Definition: EGLStream.h:246
Argus::IEGLOutputStream::getEGLStream
virtual EGLStreamKHR getEGLStream() const =0
Returns the EGLStream backing the stream.
Argus::IEGLOutputStream::waitUntilConnected
virtual Status waitUntilConnected(uint64_t timeout=TIMEOUT_INFINITE) const =0
Waits until both the producer and consumer endpoints of the stream are connected.
Argus::Status
Status
Status values returned by API function calls.
Definition: Types.h:98
Argus::IEGLInputStreamSettings::setPixelFormat
virtual Status setPixelFormat(const PixelFormat &format)=0
Set the format of the stream.
Argus::IEGLOutputStreamSettings::~IEGLOutputStreamSettings
~IEGLOutputStreamSettings()
Definition: EGLStream.h:235
Argus::IEGLInputStreamSettings::getExposureCount
virtual uint32_t getExposureCount() const =0
Argus::SensorMode
Definition: CameraDevice.h:218