NVIDIA DRIVE OS Linux SDK API Reference

6.0.9 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 10
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 handle);
779 
848  NvMediaLdcParametersAttributes const *const attr,
849  NvMediaLdcParameters *const params);
850 
900 NvMediaLdcDestroyParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params);
901 
941 NvMediaLdcSetFilter(NvMediaLdc *const handle,
942  NvMediaLdcParameters const params,
943  NvMediaLdcFilter const filter);
944 
985 NvMediaLdcSetGeometry(NvMediaLdc *const handle,
986  NvMediaLdcParameters const params,
987  NvMediaRect const *const srcRect,
988  NvMediaRect const *const dstRect);
989 
1033  NvMediaLdcParameters const params,
1034  NvMediaLdcIptParameters const *const iptParams);
1035 
1080  NvMediaLdcParameters const params,
1081  NvMediaLdcWarpMapParameters const *const warpMapParams);
1082 
1128  NvMediaLdcParameters const params,
1129  NvMediaLdcMaskMapParameters const *const maskMapParams);
1130 
1173  NvMediaLdcParameters const params,
1174  NvMediaLdcTnrParameters const *const tnrParams);
1175 
1214 NvMediaLdcResetTnr(NvMediaLdc *const handle, NvMediaLdcParameters const params);
1215 
1263  NvMediaLdcParameters const params,
1264  NvMediaLdcChecksumMode const checksumMode);
1265 
1319 NvMediaLdcGetChecksum(NvMediaLdc *const handle,
1320  NvMediaLdcResult const *const result,
1321  NvMediaLdcChecksum *const checksum);
1322 
1471 NvMediaLdcProcess(NvMediaLdc *const handle,
1472  NvMediaLdcParameters const params,
1473  NvMediaLdcResult *const result);
1474 
1478 
1479 //
1480 // Version History
1481 //
1482 // Version 1.0 May 1, 2017
1483 // - Initial release.
1484 //
1485 // Version 1.1 March 16, 2018
1486 // - Add support of TNR2
1487 //
1488 // Version 1.2 September 4, 2018
1489 // - New member variable srcSurfaceType is added to NvMediaLDCInitParams.
1490 //
1491 // Version 1.3 December 26, 2018
1492 // - Adding unsigned tag to macro constants to fix MISRA 10.4 violation.
1493 // - Fixing MISRA 21.1 violations
1494 //
1495 // Version 1.4 January 2, 2019
1496 // - Added deprecated warning message for NvMediaLDCCreate.
1497 // - Added API NvMediaLDCCreateNew
1498 //
1499 // Version 1.5 March 6, 2019
1500 // - Fixing MISRA 8.13 violations.
1501 //
1502 // Version 1.6 March 12, 2019
1503 // - Added required header includes nvmedia_core.h and nvmedia_surface.h
1504 //
1505 // Version 2.0 March 29, 2019
1506 // - Deprecated NvMediaLDCCreate API.
1507 //
1508 // Version 2.1 January 23, 2020
1509 // - Limited destination surface rectangle's top, left corner to (0, 0).
1510 //
1511 // Version 3.0 December 26, 2021
1512 // - Major rework of API, NvMediaImage support was deprecated and
1513 // all functionality related to NvMediaImage has been updated
1514 // in order to support NvSciBuf instead of NvMediaImage.
1515 // - The workflow was changed from setting the parameters
1516 // at the Init stage to using a subset of API that set parameters
1517 // prior to NvMediaLdcProcess() call.
1518 //
1519 // Version 4.0.0 March 28, 2022
1520 // - Add support for NvSciSync task statuses
1521 // - Max pre-fence count changed from 32 to 16
1522 //
1523 // Version 5.0.0 May 10, 2022
1524 // - Re-added the destination rectangle top-left (0, 0) limitation.
1525 //
1526 // Version 6.0.0 June 7, 2022
1527 // - Forbid registering same buffer multiple times
1528 // - Error codes changed for multiple APIs
1529 //
1530 // Version 7.0.0 July 8, 2022
1531 // - New error NVMEDIA_STATUS_INVALID_STATE added for multiple APIs
1532 //
1533 // Version 7.0.1 August 25, 2022
1534 // - Allow NULL context handle in NvMediaLdcFillNvSciBufAttrList
1535 //
1536 // Version 7.0.2 September 2, 2022
1537 // - Always treat parameters handle value 0 as invalid
1538 //
1539 // Version 8.0.0 March 10, 2023
1540 // - NvMediaLdcSetGeometry() and NvMediaLdcSetTnrParameters() no longer reset
1541 // TNR algorithm state
1542 // - New API NvMediaLdcResetTnr() added for explicitly resetting the state
1543 //
1544 // Version 8.1.0 June 2, 2023
1545 // - New checksum API added
1546 //
1547 // Version 9.0.0 September 8, 2023
1548 // - Reject odd rectangle coordinates regardless of surface format
1549 // - Reject destination rectangles smaller than 64x16 pixels
1550 //
1551 // Version 10.0.0 October 11, 2023
1552 // - Add restrictions on xSobel output surfaces
1553 //
1554 
1555 #ifdef __cplusplus
1556 }
1557 #endif
1558 
1559 #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
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 handle)
Destroys the NvMediaLdc context.
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
NvMediaLdcProcess
NvMediaStatus NvMediaLdcProcess(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcResult *const result)
Performs LDC operation.
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
NvMediaLdcDestroyParameters
NvMediaStatus NvMediaLdcDestroyParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params)
Destroys an NvMediaLdcParameters instance.
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
NvMediaLdcSetGeometry
NvMediaStatus NvMediaLdcSetGeometry(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaRect const *const srcRect, NvMediaRect const *const dstRect)
Sets source and destination rectangles for LDC operation.
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
NvMediaLdcSetFilter
NvMediaStatus NvMediaLdcSetFilter(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcFilter const filter)
Sets the filter mode to use for LDC pixel interpolation.
NvMediaLdcResetTnr
NvMediaStatus NvMediaLdcResetTnr(NvMediaLdc *const handle, NvMediaLdcParameters const params)
Resets TNR algorithm state.
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
NvMediaLdcSetTnrParameters
NvMediaStatus NvMediaLdcSetTnrParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcTnrParameters const *const tnrParams)
Sets Temporal Noise Reduction (TNR) parameters.
NvMediaLdcSetIptParameters
NvMediaStatus NvMediaLdcSetIptParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcIptParameters const *const iptParams)
Sets parameters for LDC Inverse Perspective Transform (IPT) operation.
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
NvMediaLdcSetChecksumMode
NvMediaStatus NvMediaLdcSetChecksumMode(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcChecksumMode const checksumMode)
Sets checksum calculation mode.
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
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
NvMediaLdcGetChecksum
NvMediaStatus NvMediaLdcGetChecksum(NvMediaLdc *const handle, NvMediaLdcResult const *const result, NvMediaLdcChecksum *const checksum)
Gets a checksum calculated for an NvMediaLdcProcess() operation.
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
NvMediaLdcCreateParameters
NvMediaStatus NvMediaLdcCreateParameters(NvMediaLdc *const handle, NvMediaLdcParametersAttributes const *const attr, NvMediaLdcParameters *const params)
Creates and returns an NvMediaLdcParameters instance.
NVMEDIA_LDC_MAX_REGIONS_X
#define NVMEDIA_LDC_MAX_REGIONS_X
Maximum number of horizontal regions.
Definition: nvmedia_ldc.h:243
NvMediaLdcSetWarpMapParameters
NvMediaStatus NvMediaLdcSetWarpMapParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params, NvMediaLdcWarpMapParameters const *const warpMapParams)
Sets parameters for LDC Warp Map.
NvMediaLdcControlPoint
Represents a control point.
Definition: nvmedia_ldc.h:374
NvMediaLdcControlPoint::x
float x
Horizontal coordinate.
Definition: nvmedia_ldc.h:380
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
NvMediaLdcWarpMapParameters
Holds the NvMedia LDC definition of a Warp Map.
Definition: nvmedia_ldc.h:438
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 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
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
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.
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