Libargus API Libargus Camera API

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
EGLImage.h
Go to the documentation of this file.
1 /*
2 * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of NVIDIA CORPORATION nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 /**
30 * @file
31 * <b>Libargus API: EGLImage API</b>
32 *
33 * @b Description: Defines a BufferType that wraps an EGLImage resource.
34 */
35
36 #ifndef _ARGUS_EGL_IMAGE_H
37 #define _ARGUS_EGL_IMAGE_H
38
39 namespace Argus
40 {
41
42 /**
43 * @defgroup ArgusEGLImageBuffer EGLImageBuffer
44 * @ingroup ArgusBufferBuffer
45 * @ref ArgusBuffer type that wraps an EGLImage resource (BUFFER_TYPE_EGL_IMAGE).
46 */
47 /**
48 * @defgroup ArgusEGLImageBufferSettings EGLImageBufferSettings
49 * @ingroup ArgusBufferBufferSettings
50 * Settings type used to configure/create @ref ArgusEGLImageBuffer Buffers (BUFFER_TYPE_EGL_IMAGE).
51 */
52
53 /**
54 * @ref ArgusBuffer type that wraps an EGLImage resource.
55 * @ingroup ArgusBufferBuffer ArgusBufferBufferSettings
56 */
57 DEFINE_UUID(BufferType, BUFFER_TYPE_EGL_IMAGE, c723d966,5231,11e7,9598,18,00,20,0c,9a,66);
58
59 /**
60 * @class IEGLImageBufferSettings
61 *
62 * Interface that provides the settings used to configure EGLImage Buffer creation.
63 * These Buffers act as siblings for the EGLImage, providing libargus write access
64 * to the underlying buffer resources for the destination of capture requests.
65 *
66 * @ingroup ArgusEGLImageBufferSettings
67 */
68 DEFINE_UUID(InterfaceID, IID_EGL_IMAGE_BUFFER_SETTINGS, c723d967,5231,11e7,9598,18,00,20,0c,9a,66);
69 class IEGLImageBufferSettings : public Interface
70 {
71 public:
72 static const InterfaceID& id() { return IID_EGL_IMAGE_BUFFER_SETTINGS; }
73
74 /**
75 * Sets the EGLDisplay which owns the EGLImage.
76 * @param[in] eglDisplay The EGLDisplay that owns the EGLImage.
77 */
78 virtual Status setEGLDisplay(EGLDisplay eglDisplay) = 0;
79
80 /**
81 * Returns the EGLDisplay which owns the EGLImage.
82 */
83 virtual EGLDisplay getEGLDisplay() const = 0;
84
85 /**
86 * Sets the EGLImage to use as the sibling for this Buffer.
87 * @param[in] eglImage The EGLImage to use as the sibling for this Buffer.
88 */
89 virtual Status setEGLImage(EGLImageKHR eglImage) = 0;
90
91 /**
92 * Returns the EGLImage to use as the sibling for this Buffer.
93 */
94 virtual EGLImageKHR getEGLImage() const = 0;
95
96 protected:
97 ~IEGLImageBufferSettings() {}
98 };
99
100 /**
101 * @class IEGLImageBuffer
102 *
103 * Interface that provides methods to EGLImage Buffers.
104 *
105 * @ingroup ArgusEGLImageBuffer
106 */
107 DEFINE_UUID(InterfaceID, IID_EGL_IMAGE_BUFFER, c723d968,5231,11e7,9598,18,00,20,0c,9a,66);
108 class IEGLImageBuffer : public Interface
109 {
110 public:
111 static const InterfaceID& id() { return IID_EGL_IMAGE_BUFFER; }
112
113 /**
114 * Returns the EGLDisplay that owns the EGLImage.
115 */
116 virtual EGLDisplay getEGLDisplay() const = 0;
117
118 /**
119 * Returns the EGLImage being used for this Buffer.
120 */
121 virtual EGLImageKHR getEGLImage() const = 0;
122
123 protected:
124 ~IEGLImageBuffer() {}
125 };
126
127 } // namespace Argus
128
129 #endif // _ARGUS_EGL_IMAGE_H