NVIDIA DRIVE OS Linux SDK API Reference

6.0.10.0 Release
nvmedia_2d.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2013-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11  */
12 
19 
20 #ifndef NVMEDIA_2D_H
21 #define NVMEDIA_2D_H
22 
23 #include "nvmedia_core.h"
24 #include <stdint.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
38 
47 #define NVMEDIA_2D_VERSION_MAJOR 8
48 
57 #define NVMEDIA_2D_VERSION_MINOR 0
58 
65 #define NVMEDIA_2D_VERSION_PATCH 0
66 
73 typedef enum
74 {
81 
87 
95 
103 
105 
173 typedef enum
174 {
177 
180 
183 
186 
189 
193 
196 
200 
202 
205 typedef enum
206 {
214 
225 
237 
248 
250 
261 typedef struct
262 {
271 
279 
287 
295 
297  uint32_t flags;
298 
300 
322 typedef uint32_t NvMedia2DComposeParameters;
323 
338 typedef uint32_t NvMedia2DFilterBuffer;
339 
350 typedef struct
351 {
357  uint64_t operationId;
358 
360 
371 typedef struct
372 {
384  int16_t coeffs[32][5];
386 
397 typedef struct
398 {
410  int16_t coeffs[32][10];
412 
454 NvMedia2DGetVersion(NvMediaVersion * const version);
455 
464 typedef struct NvMedia2D NvMedia2D;
465 
519 NvMedia2DCreate(NvMedia2D ** const handle,
520  NvMedia2DAttributes const * const attr);
521 
530 // completed.
569 NvMedia2DDestroy(NvMedia2D const * const handle);
570 
626 NvMedia2DGetComposeParameters(NvMedia2D const * const handle,
627  NvMedia2DComposeParameters * const params);
628 
789 NvMedia2DCompose(NvMedia2D const * const handle,
790  NvMedia2DComposeParameters const params,
791  NvMedia2DComposeResult * const result);
792 
841 NvMedia2DSetSrcGeometry(NvMedia2D const * const handle,
842  NvMedia2DComposeParameters const params,
843  uint32_t const index,
844  NvMediaRect const * const srcRect,
845  NvMediaRect const * const dstRect,
846  NvMedia2DTransform const transform);
847 
889 NvMedia2DSetSrcFilter(NvMedia2D const * const handle,
890  NvMedia2DComposeParameters const params,
891  uint32_t const index,
892  NvMedia2DFilter const filter);
893 
938 NvMedia2DSetSrcBlendMode(NvMedia2D const * const handle,
939  NvMedia2DComposeParameters const params,
940  uint32_t const index,
941  NvMedia2DBlendMode const blendMode,
942  float const constantAlpha);
943 
999 NvMedia2DCreateFilterBuffer(NvMedia2D const * const handle,
1000  NvMedia2DFilterBuffer * const filterBuffer);
1001 
1048 NvMedia2DDestroyFilterBuffer(NvMedia2D const * const handle,
1049  NvMedia2DFilterBuffer const filterBuffer);
1050 
1110 NvMedia2DSetFilterBuffer(NvMedia2D const * const handle,
1111  NvMedia2DComposeParameters const params,
1112  NvMedia2DFilterBuffer const filterBuffer);
1113 
1176  NvMedia2DFilterBuffer const filterBuffer,
1177  uint32_t const index,
1178  NvMedia2DFilterCoefficients5Tap const * const lumaX,
1179  NvMedia2DFilterCoefficients5Tap const * const lumaY,
1180  NvMedia2DFilterCoefficients5Tap const * const chromaX,
1181  NvMedia2DFilterCoefficients5Tap const * const chromaY);
1182 
1245  NvMedia2DFilterBuffer const filterBuffer,
1246  uint32_t const index,
1247  NvMedia2DFilterCoefficients10Tap const * const lumaX,
1248  NvMedia2DFilterCoefficients10Tap const * const lumaY,
1249  NvMedia2DFilterCoefficients10Tap const * const chromaX,
1250  NvMedia2DFilterCoefficients10Tap const * const chromaY);
1251 
1255 
1256 //
1257 // Version History
1258 //
1259 // Version 1.1 February 1, 2016
1260 // - Initial release
1261 //
1262 // Version 1.2 May 11, 2016
1263 // - Added #NvMedia2DCheckVersion API
1264 //
1265 // Version 1.3 May 5, 2017
1266 // - Removed compositing, blending and alpha related defines and structures
1267 //
1268 // Version 2.0 May 11, 2017
1269 // - Deprecated NvMedia2DBlit API
1270 // - Deprecated NvMedia2DCheckVersion API
1271 // - Deprecated NvMedia2DColorStandard, NvMedia2DColorRange and
1272 // NvMedia2DColorMatrix types
1273 // - Added #NvMedia2DGetVersion API
1274 //
1275 // Version 2.1 May 17, 2017
1276 // - Moved transformation to nvmedia_common.h
1277 // - Renamed NvMedia2DTransform to #NvMediaTransform
1278 //
1279 // Version 2.2 September 4, 2018
1280 // - Added deprecated warning message for #NvMedia2DCopyPlane,
1281 // NvMedia2DWeave
1282 // - Added APIs #NvMedia2DCopyPlaneNew, #NvMedia2DWeaveNew
1283 //
1284 // Version 3.0 October 30, 2018
1285 // - Deprecated #NvMedia2DCopyPlane API
1286 // - Deprecated #NvMedia2DWeave API
1287 //
1288 // Version 3.1 December 11, 2018
1289 // - Fixed MISRA-C Rule 21.1 and 21.2 Violations
1290 //
1291 // Version 3.2 January 21, 2019
1292 // - Moved #NvMediaTransform from nvmedia_common.h to this header
1293 //
1294 // Version 3.3 Feb 21, 2019
1295 // - Changed #NvMedia2D type from void to struct
1296 //
1297 // Version 3.4 March 5, 2019
1298 // - Fixed MISRA-C Rule 8.13 Violations
1299 //
1300 // Version 3.5 March 14, 2019
1301 // - Removing NvMedia2DBlitFlags enum definition
1302 // - updated #NvMedia2DBlitParametersOut structure definition
1303 //
1304 // Version 3.6 March 18, 2019
1305 // - Added APIs #NvMedia2DImageRegister, #NvMedia2DImageUnRegister
1306 //
1307 // Version 3.7 March 22, 2019
1308 // - Unnecessary header include nvmedia_common.h has been removed
1309 //
1310 // Version 3.8 May 18, 2020
1311 // - Changes related to MISRA-C Rule 8.13 Violations fixes.
1312 //
1313 // Version 3.9 Nov 12, 2020
1314 // - Improved comments and documentation
1315 // - Introduce NvMedia2DDestroyEx, which returns an error unlike NvMedia2DDestroy
1316 // - NvMedia2DDestroy is marked as deprecated
1317 // - NVMEDIA_STATUS_UNDEFINED_STATE is returned
1318 // instead of NVMEDIA_STATUS_BAD_PARAMETER if error happens
1319 // after submit is started
1320 //
1321 // Version 3.10 January 25, 2021
1322 // - Remove NvMedia2DWeaveNew API.
1323 //
1324 // Version 4.0 September 23, 2021
1325 // - Remove NvMedia2DCopyPlaneNew API.
1326 // - Remove NvMedia2DBlitEx API.
1327 // - Remove NvMedia2DImageRegister API.
1328 // - Remove NvMedia2DImageUnregister API.
1329 // - Remove NvMedia2DDestroyEx API.
1330 // - Remove NvMedia2DNvSciSyncGetVersion API.
1331 // - Remove NVMEDIA_2D_NVSCISYNC_VERSION_MAJOR token.
1332 // - Remove NVMEDIA_2D_NVSCISYNC_VERSION_MINOR token.
1333 // - Change prototype for NvMedia2DCreate API.
1334 // - Change prototype for NvMedia2DDestroy API.
1335 // - Change prototype for NvMedia2DSetNvSciSyncObjforEOF API.
1336 // - Change prototype for NvMedia2DInsertPreNvSciSyncFence API.
1337 // - Change prototype for NvMedia2DGetEOFNvSciSyncFence API.
1338 // - Rename NvMedia2DStretchFilter to NvMedia2DFilter.
1339 // - Rename NvMediaTransform to NvMedia2DTransform.
1340 // - Add NVMEDIA_2D_VERSION_PATCH token.
1341 // - Add NvMedia2DCompose API.
1342 // - Add NvMedia2DFillNvSciBufAttrList API.
1343 // - Add NvMedia2DRegisterNvSciBufObj API.
1344 // - Add NvMedia2DUnregisterNvSciBufObj API.
1345 // - Add NvMedia2DSetSrcNvSciBufObj API.
1346 // - Add NvMedia2DSetDstNvSciBufObj API.
1347 // - Set default filter mode to NVMEDIA_2D_FILTER_OFF.
1348 //
1349 // Version 4.1 November 15, 2021
1350 // - Add NvMedia2DSetSrcBlendMode API.
1351 //
1352 // Version 4.2 November 29, 2021
1353 // - Add refcounting to NvMedia2DRegisterNvSciBufObj/UnregisterNvSciBufObj API.
1354 //
1355 // Version 4.3 March 8, 2022
1356 // - Add NvMedia2DCreateFilterBuffer API.
1357 // - Add NvMedia2DDestroyFilterBuffer API.
1358 // - Add NvMedia2DSetFilterBuffer API.
1359 // - Add NvMedia2DComputeFilterCoefficients5Tap API.
1360 // - Add NvMedia2DComputeFilterCoefficients10Tap API.
1361 //
1362 // Version 5.0.0 March 28, 2022
1363 // - Add support for NvSciSync task statuses
1364 // - Max pre-fence count changed from 32 to 16
1365 //
1366 // Version 6.0.0 June 3, 2022
1367 // - Change default for maxRegisteredBuffers attribute from 256 to 64
1368 // - Forbid registering same buffer multiple times
1369 // - Error codes changed for multiple APIs
1370 //
1371 // Version 7.0.0 July 8, 2022
1372 // - New error NVMEDIA_STATUS_INVALID_STATE added for multiple APIs
1373 //
1374 // Version 7.0.1 August 25, 2022
1375 // - Allow NULL context handle in NvMedia2DFillNvSciBufAttrList
1376 //
1377 // Version 7.0.2 September 2, 2022
1378 // - Always treat compose parameters and filter buffer handle value 0 as invalid
1379 //
1380 // Version 8.0.0 October 17, 2023
1381 // - Update the logic to compute the filter buffer coefficients values
1382 //
1383 
1384 #ifdef __cplusplus
1385 }
1386 #endif
1387 
1388 #endif // NVMEDIA_2D_H
NvMedia2DFilterCoefficients5Tap
Coefficients values structure for 5-tap custom filter.
Definition: nvmedia_2d.h:371
NVMEDIA_2D_FILTER_OFF
@ NVMEDIA_2D_FILTER_OFF
Filtering is disabled.
Definition: nvmedia_2d.h:80
NVMEDIA_2D_BLEND_MODE_CONSTANT_ALPHA
@ NVMEDIA_2D_BLEND_MODE_CONSTANT_ALPHA
Ignore the alpha channel values.
Definition: nvmedia_2d.h:224
NvMedia2DAttributes::flags
uint32_t flags
Internal use only.
Definition: nvmedia_2d.h:297
NvMedia2DAttributes
Attributes structure for NvMedia2DCreate().
Definition: nvmedia_2d.h:261
NvMedia2DFilter
NvMedia2DFilter
2D filter mode.
Definition: nvmedia_2d.h:73
NvMedia2DFilterCoefficients10Tap
Coefficients values structure for 10-tap custom filter.
Definition: nvmedia_2d.h:397
NVMEDIA_2D_TRANSFORM_INV_TRANSPOSE
@ NVMEDIA_2D_TRANSFORM_INV_TRANSPOSE
Apply inverse transpose (mirror along diagonal axis from top-right to bottom-left).
Definition: nvmedia_2d.h:192
NVMEDIA_2D_TRANSFORM_TRANSPOSE
@ NVMEDIA_2D_TRANSFORM_TRANSPOSE
Apply transpose (mirror along diagonal axis from top-left to bottom-right).
Definition: nvmedia_2d.h:199
NvMedia2D
struct NvMedia2D NvMedia2D
NvMedia2D Context.
Definition: nvmedia_2d.h:464
NvMedia2DCreate
NvMediaStatus NvMedia2DCreate(NvMedia2D **const handle, NvMedia2DAttributes const *const attr)
Creates a new NvMedia2D context.
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMedia2DComposeResult
Stores information returned from NvMedia2DCompose().
Definition: nvmedia_2d.h:350
NvMedia2DSetSrcFilter
NvMediaStatus NvMedia2DSetSrcFilter(NvMedia2D const *const handle, NvMedia2DComposeParameters const params, uint32_t const index, NvMedia2DFilter const filter)
Sets the filter mode for a source layer.
NvMedia2DComputeFilterCoefficients10Tap
NvMediaStatus NvMedia2DComputeFilterCoefficients10Tap(NvMedia2D const *const handle, NvMedia2DFilterBuffer const filterBuffer, uint32_t const index, NvMedia2DFilterCoefficients10Tap const *const lumaX, NvMedia2DFilterCoefficients10Tap const *const lumaY, NvMedia2DFilterCoefficients10Tap const *const chromaX, NvMedia2DFilterCoefficients10Tap const *const chromaY)
Computes the 10-tap filter coefficients for an NvMedia2DFilterBuffer.
NvMedia2DSetFilterBuffer
NvMediaStatus NvMedia2DSetFilterBuffer(NvMedia2D const *const handle, NvMedia2DComposeParameters const params, NvMedia2DFilterBuffer const filterBuffer)
Sets the filter buffer for an NvMedia2DComposeParameters instance.
NVMEDIA_2D_BLEND_MODE_STRAIGHT_ALPHA
@ NVMEDIA_2D_BLEND_MODE_STRAIGHT_ALPHA
Treat color and alpha channels independently.
Definition: nvmedia_2d.h:236
NVMEDIA_2D_BLEND_MODE_DISABLED
@ NVMEDIA_2D_BLEND_MODE_DISABLED
Disable blending.
Definition: nvmedia_2d.h:213
NvMedia2DAttributes::maxRegisteredBuffers
uint32_t maxRegisteredBuffers
Maximum number of buffers that can be registered.
Definition: nvmedia_2d.h:278
NVMEDIA_2D_FILTER_MEDIUM
@ NVMEDIA_2D_FILTER_MEDIUM
Medium quality filtering.
Definition: nvmedia_2d.h:94
NvMedia2DDestroyFilterBuffer
NvMediaStatus NvMedia2DDestroyFilterBuffer(NvMedia2D const *const handle, NvMedia2DFilterBuffer const filterBuffer)
Destroys an NvMedia2DFilterBuffer instance.
NvMedia2DFilterBuffer
uint32_t NvMedia2DFilterBuffer
Stores a filter buffer which coefficients can be configured.
Definition: nvmedia_2d.h:338
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:164
NVMEDIA_2D_FILTER_LOW
@ NVMEDIA_2D_FILTER_LOW
Low quality filtering.
Definition: nvmedia_2d.h:86
NVMEDIA_2D_FILTER_HIGH
@ NVMEDIA_2D_FILTER_HIGH
Highest quality filtering.
Definition: nvmedia_2d.h:102
NvMedia2DComposeResult::operationId
uint64_t operationId
ID number for operation that was submitted to NvMedia2DCompose().
Definition: nvmedia_2d.h:357
NvMedia2DCompose
NvMediaStatus NvMedia2DCompose(NvMedia2D const *const handle, NvMedia2DComposeParameters const params, NvMedia2DComposeResult *const result)
Performs a 2D compose operation.
NvMedia2DBlendMode
NvMedia2DBlendMode
Blending to use when compositing surfaces.
Definition: nvmedia_2d.h:205
NvMedia2DGetComposeParameters
NvMediaStatus NvMedia2DGetComposeParameters(NvMedia2D const *const handle, NvMedia2DComposeParameters *const params)
Returns an NvMedia2DComposeParameters instance.
NvMedia2DAttributes::maxFilterBuffers
uint32_t maxFilterBuffers
Maximum number of filter buffers that can be created.
Definition: nvmedia_2d.h:294
NvMediaRect
Holds a rectangular region of a surface.
Definition: nvmedia_core.h:89
nvmedia_core.h
NVIDIA Media Interface: Core
NVMEDIA_2D_TRANSFORM_ROTATE_180
@ NVMEDIA_2D_TRANSFORM_ROTATE_180
Rotate 180 degrees.
Definition: nvmedia_2d.h:182
NvMedia2DComposeParameters
uint32_t NvMedia2DComposeParameters
Stores configuration for the NvMedia2DCompose() operation.
Definition: nvmedia_2d.h:322
NvMedia2DSetSrcBlendMode
NvMediaStatus NvMedia2DSetSrcBlendMode(NvMedia2D const *const handle, NvMedia2DComposeParameters const params, uint32_t const index, NvMedia2DBlendMode const blendMode, float const constantAlpha)
Sets the blend mode for a source layer.
NVMEDIA_2D_BLEND_MODE_PREMULTIPLIED_ALPHA
@ NVMEDIA_2D_BLEND_MODE_PREMULTIPLIED_ALPHA
Treat color channels as having the alpha channel premultiplied.
Definition: nvmedia_2d.h:247
NvMedia2DComputeFilterCoefficients5Tap
NvMediaStatus NvMedia2DComputeFilterCoefficients5Tap(NvMedia2D const *const handle, NvMedia2DFilterBuffer const filterBuffer, uint32_t const index, NvMedia2DFilterCoefficients5Tap const *const lumaX, NvMedia2DFilterCoefficients5Tap const *const lumaY, NvMedia2DFilterCoefficients5Tap const *const chromaX, NvMedia2DFilterCoefficients5Tap const *const chromaY)
Computes the 5-tap filter coefficients for an NvMedia2DFilterBuffer.
NVMEDIA_2D_TRANSFORM_ROTATE_90
@ NVMEDIA_2D_TRANSFORM_ROTATE_90
Rotate 90 degrees anti-clockwise.
Definition: nvmedia_2d.h:179
NvMedia2DDestroy
NvMediaStatus NvMedia2DDestroy(NvMedia2D const *const handle)
Destroys the NvMedia2D context.
NVMEDIA_2D_TRANSFORM_NONE
@ NVMEDIA_2D_TRANSFORM_NONE
No transform.
Definition: nvmedia_2d.h:176
NVMEDIA_2D_TRANSFORM_ROTATE_270
@ NVMEDIA_2D_TRANSFORM_ROTATE_270
Rotate 270 degrees anti-clockwise.
Definition: nvmedia_2d.h:185
NvMedia2DAttributes::maxRegisteredSyncs
uint32_t maxRegisteredSyncs
Maximum number of sync objects that can be registered.
Definition: nvmedia_2d.h:286
NvMedia2DCreateFilterBuffer
NvMediaStatus NvMedia2DCreateFilterBuffer(NvMedia2D const *const handle, NvMedia2DFilterBuffer *const filterBuffer)
Creates and returns an NvMedia2DFilterBuffer instance.
NVMEDIA_2D_TRANSFORM_FLIP_HORIZONTAL
@ NVMEDIA_2D_TRANSFORM_FLIP_HORIZONTAL
Flip horizontally (mirror along Y axis).
Definition: nvmedia_2d.h:188
NvMedia2DSetSrcGeometry
NvMediaStatus NvMedia2DSetSrcGeometry(NvMedia2D const *const handle, NvMedia2DComposeParameters const params, uint32_t const index, NvMediaRect const *const srcRect, NvMediaRect const *const dstRect, NvMedia2DTransform const transform)
Sets the geometry for a source layer.
NvMedia2DTransform
NvMedia2DTransform
2D rotation/transform.
Definition: nvmedia_2d.h:173
NvMedia2DGetVersion
NvMediaStatus NvMedia2DGetVersion(NvMediaVersion *const version)
Returns the version number of the NvMedia 2D library.
NVMEDIA_2D_TRANSFORM_FLIP_VERTICAL
@ NVMEDIA_2D_TRANSFORM_FLIP_VERTICAL
Flip vertically (mirror along X axis).
Definition: nvmedia_2d.h:195
NvMedia2DAttributes::numComposeParameters
uint32_t numComposeParameters
Number of compose parameters objects to allocate.
Definition: nvmedia_2d.h:270