NVIDIA DRIVE OS Linux SDK API Reference

6.0.10.0 Release
nvmedia_ldc.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2017-2023 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_LDC_H
21 #define NVMEDIA_LDC_H
22 
23 #include "nvmedia_core.h"
24 #include <stdbool.h>
25 #include <stdint.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
39 
48 #define NVMEDIA_LDC_VERSION_MAJOR 11
49 
58 #define NVMEDIA_LDC_VERSION_MINOR 0
59 
69 #define NVMEDIA_LDC_VERSION_PATCH 0
70 
79 typedef struct NvMediaLdc NvMediaLdc;
80 
106 typedef uint32_t NvMediaLdcParameters;
107 
119 typedef struct
120 {
130  uint32_t maxParameters;
131 
139 
147 
149  uint32_t flags;
151 
157 typedef struct
158 {
166  uint32_t maxWarpMapWidth;
167 
176 
179  bool enableTnr;
180 
183 
192  uint32_t maxDstWidth;
193 
202  uint32_t maxDstHeight;
204 
215 typedef struct
216 {
223  uint64_t operationId;
225 
230 typedef enum
231 {
234 
237 
241 
243 #define NVMEDIA_LDC_MAX_REGIONS_X 4u
244 
246 #define NVMEDIA_LDC_MAX_REGIONS_Y 4u
247 
331 typedef struct
332 {
335  uint32_t numRegionsX;
336 
339  uint32_t numRegionsY;
340 
342  uint32_t regionWidth[NVMEDIA_LDC_MAX_REGIONS_X];
343 
345  uint32_t regionHeight[NVMEDIA_LDC_MAX_REGIONS_Y];
346 
349  uint32_t controlPointXSpacingLog2[NVMEDIA_LDC_MAX_REGIONS_X];
350 
353  uint32_t controlPointYSpacingLog2[NVMEDIA_LDC_MAX_REGIONS_Y];
355 
360 typedef struct
361 {
364 
370  float matrixCoeffs[3][3];
372 
374 typedef struct
375 {
380  float x;
381 
386  float y;
388 
438 typedef struct
439 {
442 
448 
453 
463 typedef struct
464 {
467  uint32_t width;
468 
471  uint32_t height;
472 
476 
481  float maskColorY;
482 
487  float maskColorU;
488 
493  float maskColorV;
494 
501  bool const *pixelMasks;
503 
508 typedef struct
509 {
515 
521 
526  uint32_t rangeSigmaLuma;
527 
533 
539 
545 
548 
554 
560 
566 
572 
578 
584 
589  float betaX1;
590 
595  float betaX2;
596 
601  float maxBeta;
602 
607  float minBeta;
609 
611 #define NVMEDIA_LDC_CHECKSUM_NUM_BYTES 24u
612 
614 typedef struct
615 {
619 
625 typedef enum
626 {
629 
633 
675 NvMediaLdcGetVersion(NvMediaVersion *const version);
676 
729 NvMediaLdcCreate(NvMediaLdc **const handle, NvMediaLdcAttributes const *const attr);
730 
778 NvMediaLdcDestroy(NvMediaLdc const * const handle);
779 
851 NvMediaLdcCreateParameters(NvMediaLdc const * const handle,
852  NvMediaLdcParametersAttributes const *const attr,
853  NvMediaLdcParameters *const params);
854 
904 NvMediaLdcDestroyParameters(NvMediaLdc const * const handle, NvMediaLdcParameters const params);
905 
945 NvMediaLdcSetFilter(NvMediaLdc const * const handle,
946  NvMediaLdcParameters const params,
947  NvMediaLdcFilter const filter);
948 
989 NvMediaLdcSetGeometry(NvMediaLdc const * const handle,
990  NvMediaLdcParameters const params,
991  NvMediaRect const *const srcRect,
992  NvMediaRect const *const dstRect);
993 
1036 NvMediaLdcSetIptParameters(NvMediaLdc const * const handle,
1037  NvMediaLdcParameters const params,
1038  NvMediaLdcIptParameters const *const iptParams);
1039 
1083 NvMediaLdcSetWarpMapParameters(NvMediaLdc const * const handle,
1084  NvMediaLdcParameters const params,
1085  NvMediaLdcWarpMapParameters const *const warpMapParams);
1086 
1131 NvMediaLdcSetMaskMapParameters(NvMediaLdc const * const handle,
1132  NvMediaLdcParameters const params,
1133  NvMediaLdcMaskMapParameters const *const maskMapParams);
1134 
1176 NvMediaLdcSetTnrParameters(NvMediaLdc const * const handle,
1177  NvMediaLdcParameters const params,
1178  NvMediaLdcTnrParameters const *const tnrParams);
1179 
1218 NvMediaLdcResetTnr(NvMediaLdc const * const handle, NvMediaLdcParameters const params);
1219 
1266 NvMediaLdcSetChecksumMode(NvMediaLdc const * const handle,
1267  NvMediaLdcParameters const params,
1268  NvMediaLdcChecksumMode const checksumMode);
1269 
1323 NvMediaLdcGetChecksum(NvMediaLdc const * const handle,
1324  NvMediaLdcResult const *const result,
1325  NvMediaLdcChecksum *const checksum);
1326 
1483 NvMediaLdcProcess(NvMediaLdc const * const handle,
1484  NvMediaLdcParameters const params,
1485  NvMediaLdcResult *const result);
1486 
1490 
1491 //
1492 // Version History
1493 //
1494 // Version 1.0 May 1, 2017
1495 // - Initial release.
1496 //
1497 // Version 1.1 March 16, 2018
1498 // - Add support of TNR2
1499 //
1500 // Version 1.2 September 4, 2018
1501 // - New member variable srcSurfaceType is added to NvMediaLDCInitParams.
1502 //
1503 // Version 1.3 December 26, 2018
1504 // - Adding unsigned tag to macro constants to fix MISRA 10.4 violation.
1505 // - Fixing MISRA 21.1 violations
1506 //
1507 // Version 1.4 January 2, 2019
1508 // - Added deprecated warning message for NvMediaLDCCreate.
1509 // - Added API NvMediaLDCCreateNew
1510 //
1511 // Version 1.5 March 6, 2019
1512 // - Fixing MISRA 8.13 violations.
1513 //
1514 // Version 1.6 March 12, 2019
1515 // - Added required header includes nvmedia_core.h and nvmedia_surface.h
1516 //
1517 // Version 2.0 March 29, 2019
1518 // - Deprecated NvMediaLDCCreate API.
1519 //
1520 // Version 2.1 January 23, 2020
1521 // - Limited destination surface rectangle's top, left corner to (0, 0).
1522 //
1523 // Version 3.0 December 26, 2021
1524 // - Major rework of API, NvMediaImage support was deprecated and
1525 // all functionality related to NvMediaImage has been updated
1526 // in order to support NvSciBuf instead of NvMediaImage.
1527 // - The workflow was changed from setting the parameters
1528 // at the Init stage to using a subset of API that set parameters
1529 // prior to NvMediaLdcProcess() call.
1530 //
1531 // Version 4.0.0 March 28, 2022
1532 // - Add support for NvSciSync task statuses
1533 // - Max pre-fence count changed from 32 to 16
1534 //
1535 // Version 5.0.0 May 10, 2022
1536 // - Re-added the destination rectangle top-left (0, 0) limitation.
1537 //
1538 // Version 6.0.0 June 7, 2022
1539 // - Forbid registering same buffer multiple times
1540 // - Error codes changed for multiple APIs
1541 //
1542 // Version 7.0.0 July 8, 2022
1543 // - New error NVMEDIA_STATUS_INVALID_STATE added for multiple APIs
1544 //
1545 // Version 7.0.1 August 25, 2022
1546 // - Allow NULL context handle in NvMediaLdcFillNvSciBufAttrList
1547 //
1548 // Version 7.0.2 September 2, 2022
1549 // - Always treat parameters handle value 0 as invalid
1550 //
1551 // Version 8.0.0 March 10, 2023
1552 // - NvMediaLdcSetGeometry() and NvMediaLdcSetTnrParameters() no longer reset
1553 // TNR algorithm state
1554 // - New API NvMediaLdcResetTnr() added for explicitly resetting the state
1555 //
1556 // Version 8.1.0 June 2, 2023
1557 // - New checksum API added
1558 //
1559 // Version 9.0.0 September 8, 2023
1560 // - Reject odd rectangle coordinates regardless of surface format
1561 // - Reject destination rectangles smaller than 64x16 pixels
1562 //
1563 // Version 10.0.0 October 11, 2023
1564 // - Add restrictions on xSobel output surfaces
1565 //
1566 // Version 11.0.0 December 1, 2023
1567 // - Add restrictions on source and destination rectangles when IPT and warp map
1568 // processing are both disabled
1569 //
1570 
1571 #ifdef __cplusplus
1572 }
1573 #endif
1574 
1575 #endif
NvMediaLdcTnrParameters::alphaMaxLuma
float alphaMaxLuma
Holds the max luma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:565
NVMEDIA_LDC_FILTER_OFF
@ NVMEDIA_LDC_FILTER_OFF
Filtering is disabled.
Definition: nvmedia_ldc.h:233
NvMediaLdcTnrParameters::alphaScaleIIR
float alphaScaleIIR
Holds the alpha scale IIR for strength.
Definition: nvmedia_ldc.h:559
NvMediaLdcMaskMapParameters::height
uint32_t height
Holds the height in pixels of the mask map surface, which must be equal to the height of the destinat...
Definition: nvmedia_ldc.h:471
NvMediaLdcParametersAttributes::maxWarpMapHeight
uint32_t maxWarpMapHeight
Maximum allowed number of control points vertically in a warp map.
Definition: nvmedia_ldc.h:175
NvMediaLdcProcess
NvMediaStatus NvMediaLdcProcess(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcResult *const result)
Performs LDC operation.
NvMediaLdcMaskMapParameters
Holds the Mask Map information.
Definition: nvmedia_ldc.h:463
NvMediaLdcTnrParameters::rangeSigmaChroma
uint32_t rangeSigmaChroma
Holds the sigma of the chroma for range filter.
Definition: nvmedia_ldc.h:532
NvMediaLdcRegionParameters::numRegionsX
uint32_t numRegionsX
Holds the number of horizontal regions.
Definition: nvmedia_ldc.h:335
NvMediaLdcTnrParameters::alphaSmoothEnable
bool alphaSmoothEnable
Holds a flag which enables or disables the spatial alpha smooth.
Definition: nvmedia_ldc.h:547
NvMediaLdcChecksum
Represents a checksum.
Definition: nvmedia_ldc.h:614
NvMediaLdcMaskMapParameters::pixelMasks
const bool * pixelMasks
Holds the value for the Mask Map surface.
Definition: nvmedia_ldc.h:501
NvMediaLdcTnrParameters::sadMultiplier
float sadMultiplier
Holds the SAD multiplier parameter.
Definition: nvmedia_ldc.h:538
NvMediaLdcDestroy
NvMediaStatus NvMediaLdcDestroy(NvMediaLdc const *const handle)
Destroys the NvMediaLdc context.
NvMediaLdcSetTnrParameters
NvMediaStatus NvMediaLdcSetTnrParameters(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcTnrParameters const *const tnrParams)
Sets Temporal Noise Reduction (TNR) parameters.
NvMediaLdcMaskMapParameters::maskColorY
float maskColorY
Holds the Y channel value of the mask color.
Definition: nvmedia_ldc.h:481
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NVMEDIA_LDC_CHECKSUM_MODE_DISABLED
@ NVMEDIA_LDC_CHECKSUM_MODE_DISABLED
No checksum calculated. This is the default behavior.
Definition: nvmedia_ldc.h:628
NvMediaLdcAttributes::maxRegisteredSyncs
uint32_t maxRegisteredSyncs
Maximum number of sync objects that can be registered.
Definition: nvmedia_ldc.h:146
NvMediaLdcTnrParameters::spatialSigmaLuma
uint32_t spatialSigmaLuma
Holds the sigma of the luma for spatial filter.
Definition: nvmedia_ldc.h:514
NvMediaLdcParametersAttributes::enableTnr
bool enableTnr
Whether to allocate memory for data structures required for TNR processing.
Definition: nvmedia_ldc.h:179
NvMediaLdcAttributes::flags
uint32_t flags
Internal use only.
Definition: nvmedia_ldc.h:149
NvMediaLdcAttributes::maxRegisteredBuffers
uint32_t maxRegisteredBuffers
Maximum number of buffers that can be registered.
Definition: nvmedia_ldc.h:138
NvMediaLdcTnrParameters::betaX2
float betaX2
Holds parameter BetaX2 in Beta Calculation.
Definition: nvmedia_ldc.h:595
NvMediaLdcParameters
uint32_t NvMediaLdcParameters
Stores configuration for the NvMediaLdcProcess() operation.
Definition: nvmedia_ldc.h:106
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:164
NvMediaLdcChecksumMode
NvMediaLdcChecksumMode
NvMedia LDC checksum mode.
Definition: nvmedia_ldc.h:625
NvMediaLdcTnrParameters::alphaMinLuma
float alphaMinLuma
Holds the min luma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:571
NvMediaLdcIptParameters
Holds inverse perspective transformation configuration.
Definition: nvmedia_ldc.h:360
NvMediaLdcFilter
NvMediaLdcFilter
VIC filter mode.
Definition: nvmedia_ldc.h:230
NvMediaLdcParametersAttributes::enableMaskMap
bool enableMaskMap
Whether to allocate memory for Mask Map.
Definition: nvmedia_ldc.h:182
NvMediaLdcParametersAttributes::maxDstHeight
uint32_t maxDstHeight
Maximum allowed destination rectangle height.
Definition: nvmedia_ldc.h:202
NvMediaLdcTnrParameters::betaX1
float betaX1
Holds parameter BetaX1 in Beta Calculation.
Definition: nvmedia_ldc.h:589
NvMediaLdcAttributes
Attributes structure for NvMediaLdcCreate().
Definition: nvmedia_ldc.h:119
NvMediaLdcResetTnr
NvMediaStatus NvMediaLdcResetTnr(NvMediaLdc const *const handle, NvMediaLdcParameters const params)
Resets TNR algorithm state.
NvMediaLdcWarpMapParameters::regionParams
NvMediaLdcRegionParameters regionParams
Specifies the regions paramters.
Definition: nvmedia_ldc.h:441
NvMediaLdcTnrParameters
Holds the TNR3 initialization parameters.
Definition: nvmedia_ldc.h:508
NvMediaLdcTnrParameters::maxBeta
float maxBeta
Holds parameter MaxBeta threshold in Beta Calculation.
Definition: nvmedia_ldc.h:601
NvMediaLdcMaskMapParameters::useMaskColor
bool useMaskColor
Indicates whether to fill the masked pixel with the mask color.
Definition: nvmedia_ldc.h:475
NvMediaRect
Holds a rectangular region of a surface.
Definition: nvmedia_core.h:89
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaLdcAttributes::maxParameters
uint32_t maxParameters
Number of parameters objects to allocate.
Definition: nvmedia_ldc.h:130
NvMediaLdcRegionParameters
Holds the NvMedia LDC region configuration.
Definition: nvmedia_ldc.h:331
NvMediaLdcMaskMapParameters::maskColorV
float maskColorV
Holds the V channel value of the mask color.
Definition: nvmedia_ldc.h:493
NvMediaLdcSetGeometry
NvMediaStatus NvMediaLdcSetGeometry(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaRect const *const srcRect, NvMediaRect const *const dstRect)
Sets source and destination rectangles for LDC operation.
NvMediaLdcTnrParameters::minBeta
float minBeta
Holds parameter BetaX2 in Beta Calculation.
Definition: nvmedia_ldc.h:607
NvMediaLdcTnrParameters::alphaIncreaseCap
float alphaIncreaseCap
Holds the temporal alpha restrict increase capablility.
Definition: nvmedia_ldc.h:553
NvMediaLdcParametersAttributes::maxWarpMapWidth
uint32_t maxWarpMapWidth
Maximum allowed number of control points horizontally in a warp map.
Definition: nvmedia_ldc.h:166
NvMediaLdcWarpMapParameters::controlPoints
const NvMediaLdcControlPoint * controlPoints
Array of control points across all the regions stored in a row-major order.
Definition: nvmedia_ldc.h:451
NvMediaLdcTnrParameters::alphaMinChroma
float alphaMinChroma
Holds the min chroma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:583
NvMediaLdcParametersAttributes::maxDstWidth
uint32_t maxDstWidth
Maximum allowed destination rectangle width.
Definition: nvmedia_ldc.h:192
NvMediaLdcTnrParameters::spatialSigmaChroma
uint32_t spatialSigmaChroma
Holds the sigma of the chroma for spatial filter.
Definition: nvmedia_ldc.h:520
NvMediaLdcTnrParameters::alphaMaxChroma
float alphaMaxChroma
Holds the max chroma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:577
NVMEDIA_LDC_MAX_REGIONS_X
#define NVMEDIA_LDC_MAX_REGIONS_X
Maximum number of horizontal regions.
Definition: nvmedia_ldc.h:243
NvMediaLdcControlPoint
Represents a control point.
Definition: nvmedia_ldc.h:374
NvMediaLdcGetChecksum
NvMediaStatus NvMediaLdcGetChecksum(NvMediaLdc const *const handle, NvMediaLdcResult const *const result, NvMediaLdcChecksum *const checksum)
Gets a checksum calculated for an NvMediaLdcProcess() operation.
NvMediaLdcControlPoint::x
float x
Horizontal coordinate.
Definition: nvmedia_ldc.h:380
NvMediaLdcSetChecksumMode
NvMediaStatus NvMediaLdcSetChecksumMode(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcChecksumMode const checksumMode)
Sets checksum calculation mode.
NvMediaLdcMaskMapParameters::maskColorU
float maskColorU
Holds the U channel value of the mask color.
Definition: nvmedia_ldc.h:487
NvMediaLdcResult::operationId
uint64_t operationId
ID number for operation that was submitted to NvMediaLdcProcess().
Definition: nvmedia_ldc.h:223
NvMediaLdcParametersAttributes
Attributes that specify resources needed for NvMediaLdcParameters instance.
Definition: nvmedia_ldc.h:157
NvMediaLdcSetFilter
NvMediaStatus NvMediaLdcSetFilter(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcFilter const filter)
Sets the filter mode to use for LDC pixel interpolation.
NvMediaLdcWarpMapParameters
Holds the NvMedia LDC definition of a Warp Map.
Definition: nvmedia_ldc.h:438
NvMediaLdcCreateParameters
NvMediaStatus NvMediaLdcCreateParameters(NvMediaLdc const *const handle, NvMediaLdcParametersAttributes const *const attr, NvMediaLdcParameters *const params)
Creates and returns an NvMediaLdcParameters instance.
NvMediaLdcCreate
NvMediaStatus NvMediaLdcCreate(NvMediaLdc **const handle, NvMediaLdcAttributes const *const attr)
Creates a new NvMediaLdc context.
NVMEDIA_LDC_CHECKSUM_NUM_BYTES
#define NVMEDIA_LDC_CHECKSUM_NUM_BYTES
Number of bytes in NvMedia LDC checksums.
Definition: nvmedia_ldc.h:611
NvMediaLdcSetMaskMapParameters
NvMediaStatus NvMediaLdcSetMaskMapParameters(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcMaskMapParameters const *const maskMapParams)
Sets parameters for LDC Mask Map.
NvMediaLdcTnrParameters::sadWeightLuma
float sadWeightLuma
Holds the weight of luma when calculating SAD.
Definition: nvmedia_ldc.h:544
NvMediaLdc
struct NvMediaLdc NvMediaLdc
NvMediaLdc context.
Definition: nvmedia_ldc.h:79
NvMediaLdcSetWarpMapParameters
NvMediaStatus NvMediaLdcSetWarpMapParameters(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcWarpMapParameters const *const warpMapParams)
Sets parameters for LDC Warp Map.
NvMediaLdcWarpMapParameters::numControlPoints
uint32_t numControlPoints
Number of control points in the controlPoints array.
Definition: nvmedia_ldc.h:447
NvMediaLdcTnrParameters::rangeSigmaLuma
uint32_t rangeSigmaLuma
Holds the sigma of the luma for range filter.
Definition: nvmedia_ldc.h:526
NvMediaLdcIptParameters::regionParams
NvMediaLdcRegionParameters regionParams
Specifies the regions parameters.
Definition: nvmedia_ldc.h:363
NvMediaLdcSetIptParameters
NvMediaStatus NvMediaLdcSetIptParameters(NvMediaLdc const *const handle, NvMediaLdcParameters const params, NvMediaLdcIptParameters const *const iptParams)
Sets parameters for LDC Inverse Perspective Transform (IPT) operation.
NVMEDIA_LDC_FILTER_LOW
@ NVMEDIA_LDC_FILTER_LOW
Low quality filtering.
Definition: nvmedia_ldc.h:236
NVMEDIA_LDC_FILTER_MEDIUM
@ NVMEDIA_LDC_FILTER_MEDIUM
Medium quality filtering.
Definition: nvmedia_ldc.h:239
NvMediaLdcResult
Stores information returned from NvMediaLdcProcess().
Definition: nvmedia_ldc.h:215
NvMediaLdcGetVersion
NvMediaStatus NvMediaLdcGetVersion(NvMediaVersion *const version)
Returns the version number of the NvMedia LDC library.
NvMediaLdcDestroyParameters
NvMediaStatus NvMediaLdcDestroyParameters(NvMediaLdc const *const handle, NvMediaLdcParameters const params)
Destroys an NvMediaLdcParameters instance.
NvMediaLdcControlPoint::y
float y
Vertical coordinate.
Definition: nvmedia_ldc.h:386
NvMediaLdcMaskMapParameters::width
uint32_t width
Holds the width in pixels of the mask map surface, which must be equal to the width of the destinatio...
Definition: nvmedia_ldc.h:467
NvMediaLdcRegionParameters::numRegionsY
uint32_t numRegionsY
Holds the number of vertical regions.
Definition: nvmedia_ldc.h:339
NVMEDIA_LDC_CHECKSUM_MODE_SRC_SURFACE
@ NVMEDIA_LDC_CHECKSUM_MODE_SRC_SURFACE
Checksum calculated from source surface pixel data.
Definition: nvmedia_ldc.h:631
NVMEDIA_LDC_MAX_REGIONS_Y
#define NVMEDIA_LDC_MAX_REGIONS_Y
Maximum number of vertical regions.
Definition: nvmedia_ldc.h:246