NVIDIA DRIVE OS Linux SDK API Reference

6.0.7 Release
nvmedia_ldc.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2023, NVIDIA CORPORATION. All rights reserved.
3  *
4  * NVIDIA CORPORATION and its licensors retain all intellectual property
5  * and proprietary rights in and to this software, related documentation
6  * and any modifications thereto. Any use, reproduction, disclosure or
7  * distribution of this software and related documentation without an express
8  * license agreement from NVIDIA CORPORATION is strictly prohibited.
9  */
10 
17 
18 #ifndef NVMEDIA_LDC_H
19 #define NVMEDIA_LDC_H
20 
21 #include "nvmedia_core.h"
22 #include <stdbool.h>
23 #include <stdint.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
37 
46 #define NVMEDIA_LDC_VERSION_MAJOR 8
47 
56 #define NVMEDIA_LDC_VERSION_MINOR 0
57 
67 #define NVMEDIA_LDC_VERSION_PATCH 0
68 
77 typedef struct NvMediaLdc NvMediaLdc;
78 
104 typedef uint32_t NvMediaLdcParameters;
105 
117 typedef struct
118 {
126  uint32_t maxParameters;
127 
133 
139 
141  uint32_t flags;
143 
149 typedef struct
150 {
155  uint32_t maxWarpMapWidth;
156 
162 
165  bool enableTnr;
166 
169 
175  uint32_t maxDstWidth;
176 
182  uint32_t maxDstHeight;
184 
195 typedef struct
196 {
203  uint64_t operationId;
205 
210 typedef enum
211 {
214 
217 
221 
223 #define NVMEDIA_LDC_MAX_REGIONS_X 4u
224 
226 #define NVMEDIA_LDC_MAX_REGIONS_Y 4u
227 
304 typedef struct
305 {
308  uint32_t numRegionsX;
309 
312  uint32_t numRegionsY;
313 
315  uint32_t regionWidth[NVMEDIA_LDC_MAX_REGIONS_X];
316 
318  uint32_t regionHeight[NVMEDIA_LDC_MAX_REGIONS_Y];
319 
322  uint32_t controlPointXSpacingLog2[NVMEDIA_LDC_MAX_REGIONS_X];
323 
326  uint32_t controlPointYSpacingLog2[NVMEDIA_LDC_MAX_REGIONS_Y];
328 
333 typedef struct
334 {
337 
343  float matrixCoeffs[3][3];
345 
347 typedef struct
348 {
350  float x;
351 
353  float y;
355 
405 typedef struct
406 {
409 
412 
417 
427 typedef struct
428 {
431  uint32_t width;
432 
435  uint32_t height;
436 
440 
442  float maskColorY;
443 
445  float maskColorU;
446 
448  float maskColorV;
449 
456  bool const *pixelMasks;
458 
463 typedef struct
464 {
467 
470 
472  uint32_t rangeSigmaLuma;
473 
476 
479 
482 
485 
488 
491 
494 
497 
500 
503 
505  float betaX1;
506 
508  float betaX2;
509 
511  float maxBeta;
513  float minBeta;
515 
557 NvMediaLdcGetVersion(NvMediaVersion *const version);
558 
611 NvMediaLdcCreate(NvMediaLdc **const handle, NvMediaLdcAttributes const *const attr);
612 
660 NvMediaLdcDestroy(NvMediaLdc *const handle);
661 
730  NvMediaLdcParametersAttributes const *const attr,
731  NvMediaLdcParameters *const params);
732 
782 NvMediaLdcDestroyParameters(NvMediaLdc *const handle, NvMediaLdcParameters const params);
783 
823 NvMediaLdcSetFilter(NvMediaLdc *const handle,
824  NvMediaLdcParameters const params,
825  NvMediaLdcFilter const filter);
826 
867 NvMediaLdcSetGeometry(NvMediaLdc *const handle,
868  NvMediaLdcParameters const params,
869  NvMediaRect const *const srcRect,
870  NvMediaRect const *const dstRect);
871 
915  NvMediaLdcParameters const params,
916  NvMediaLdcIptParameters const *const iptParams);
917 
960  NvMediaLdcParameters const params,
961  NvMediaLdcWarpMapParameters const *const warpMapParams);
962 
1006  NvMediaLdcParameters const params,
1007  NvMediaLdcMaskMapParameters const *const maskMapParams);
1008 
1051  NvMediaLdcParameters const params,
1052  NvMediaLdcTnrParameters const *const tnrParams);
1053 
1092 NvMediaLdcResetTnr(NvMediaLdc *const handle, NvMediaLdcParameters const params);
1093 
1232 NvMediaLdcProcess(NvMediaLdc *const handle,
1233  NvMediaLdcParameters const params,
1234  NvMediaLdcResult *const result);
1235 
1239 
1240 //
1241 // Version History
1242 //
1243 // Version 1.0 May 1, 2017
1244 // - Initial release.
1245 //
1246 // Version 1.1 March 16, 2018
1247 // - Add support of TNR2
1248 //
1249 // Version 1.2 September 4, 2018
1250 // - New member variable srcSurfaceType is added to NvMediaLDCInitParams.
1251 //
1252 // Version 1.3 December 26, 2018
1253 // - Adding unsigned tag to macro constants to fix MISRA 10.4 violation.
1254 // - Fixing MISRA 21.1 violations
1255 //
1256 // Version 1.4 January 2, 2019
1257 // - Added deprecated warning message for NvMediaLDCCreate.
1258 // - Added API NvMediaLDCCreateNew
1259 //
1260 // Version 1.5 March 6, 2019
1261 // - Fixing MISRA 8.13 violations.
1262 //
1263 // Version 1.6 March 12, 2019
1264 // - Added required header includes nvmedia_core.h and nvmedia_surface.h
1265 //
1266 // Version 2.0 March 29, 2019
1267 // - Deprecated NvMediaLDCCreate API.
1268 //
1269 // Version 2.1 January 23, 2020
1270 // - Limited destination surface rectangle's top, left corner to (0, 0).
1271 //
1272 // Version 3.0 December 26, 2021
1273 // - Major rework of API, NvMediaImage support was deprecated and
1274 // all functionality related to NvMediaImage has been updated
1275 // in order to support NvSciBuf instead of NvMediaImage.
1276 // - The workflow was changed from setting the parameters
1277 // at the Init stage to using a subset of API that set parameters
1278 // prior to NvMediaLdcProcess() call.
1279 //
1280 // Version 4.0.0 March 28, 2022
1281 // - Add support for NvSciSync task statuses
1282 // - Max pre-fence count changed from 32 to 16
1283 //
1284 // Version 5.0.0 May 10, 2022
1285 // - Re-added the destination rectangle top-left (0, 0) limitation.
1286 //
1287 // Version 6.0.0 June 7, 2022
1288 // - Forbid registering same buffer multiple times
1289 // - Error codes changed for multiple APIs
1290 //
1291 // Version 7.0.0 July 8, 2022
1292 // - New error NVMEDIA_STATUS_INVALID_STATE added for multiple APIs
1293 //
1294 // Version 7.0.1 August 25, 2022
1295 // - Allow NULL context handle in NvMediaLdcFillNvSciBufAttrList
1296 //
1297 // Version 7.0.2 September 2, 2022
1298 // - Always treat parameters handle value 0 as invalid
1299 //
1300 // Version 8.0.0 March 10, 2023
1301 // - NvMediaLdcSetGeometry() and NvMediaLdcSetTnrParameters() no longer reset
1302 // TNR algorithm state
1303 // - New API NvMediaLdcResetTnr() added for explicitly resetting the state
1304 //
1305 
1306 #ifdef __cplusplus
1307 }
1308 #endif
1309 
1310 #endif
NvMediaLdcTnrParameters::alphaMaxLuma
float alphaMaxLuma
Holds the max luma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:493
NVMEDIA_LDC_FILTER_OFF
@ NVMEDIA_LDC_FILTER_OFF
Filtering is disabled.
Definition: nvmedia_ldc.h:213
NvMediaLdcTnrParameters::alphaScaleIIR
float alphaScaleIIR
Holds the alpha scale IIR for strength.
Definition: nvmedia_ldc.h:490
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:435
NvMediaLdcParametersAttributes::maxWarpMapHeight
uint32_t maxWarpMapHeight
Maximum allowed number of control points vertically in a warp map.
Definition: nvmedia_ldc.h:161
NvMediaLdcMaskMapParameters
Holds the Mask Map information.
Definition: nvmedia_ldc.h:427
NvMediaLdcTnrParameters::rangeSigmaChroma
uint32_t rangeSigmaChroma
Holds the sigma of the chroma for range filter.
Definition: nvmedia_ldc.h:475
NvMediaLdcRegionParameters::numRegionsX
uint32_t numRegionsX
Holds the number of horizontal regions.
Definition: nvmedia_ldc.h:308
NvMediaLdcTnrParameters::alphaSmoothEnable
bool alphaSmoothEnable
Holds a flag which enables or disables the spatial alpha smooth.
Definition: nvmedia_ldc.h:484
NvMediaLdcMaskMapParameters::pixelMasks
const bool * pixelMasks
Holds the value for the Mask Map surface.
Definition: nvmedia_ldc.h:456
NvMediaLdcTnrParameters::sadMultiplier
float sadMultiplier
Holds the SAD multiplier parameter.
Definition: nvmedia_ldc.h:478
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:442
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMediaLdcAttributes::maxRegisteredSyncs
uint32_t maxRegisteredSyncs
Maximum number of sync objects that can be registered.
Definition: nvmedia_ldc.h:138
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:466
NvMediaLdcParametersAttributes::enableTnr
bool enableTnr
Whether to allocate memory for data structures required for TNR processing.
Definition: nvmedia_ldc.h:165
NvMediaLdcAttributes::flags
uint32_t flags
Internal use only.
Definition: nvmedia_ldc.h:141
NvMediaLdcAttributes::maxRegisteredBuffers
uint32_t maxRegisteredBuffers
Maximum number of buffers that can be registered.
Definition: nvmedia_ldc.h:132
NvMediaLdcTnrParameters::betaX2
float betaX2
Holds parameter BetaX2 in Beta Calculation.
Definition: nvmedia_ldc.h:508
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:104
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:164
NvMediaLdcTnrParameters::alphaMinLuma
float alphaMinLuma
Holds the min luma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:496
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:333
NvMediaLdcFilter
NvMediaLdcFilter
VIC filter mode.
Definition: nvmedia_ldc.h:210
NvMediaLdcParametersAttributes::enableMaskMap
bool enableMaskMap
Whether to allocate memory for Mask Map.
Definition: nvmedia_ldc.h:168
NvMediaLdcParametersAttributes::maxDstHeight
uint32_t maxDstHeight
Maximum allowed destination rectangle height.
Definition: nvmedia_ldc.h:182
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:505
NvMediaLdcAttributes
Attributes structure for NvMediaLdcCreate().
Definition: nvmedia_ldc.h:117
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:408
NvMediaLdcTnrParameters
Holds the TNR3 initialization parameters.
Definition: nvmedia_ldc.h:463
NvMediaLdcTnrParameters::maxBeta
float maxBeta
Holds parameter MaxBeta threshold in Beta Calculation.
Definition: nvmedia_ldc.h:511
NvMediaLdcMaskMapParameters::useMaskColor
bool useMaskColor
Indicates whether to fill the masked pixel with the mask color.
Definition: nvmedia_ldc.h:439
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:126
NvMediaLdcRegionParameters
Holds the NvMedia LDC region configuration.
Definition: nvmedia_ldc.h:304
NvMediaLdcMaskMapParameters::maskColorV
float maskColorV
Holds the V channel value of the mask color.
Definition: nvmedia_ldc.h:448
NvMediaLdcTnrParameters::minBeta
float minBeta
Holds parameter BetaX2 in Beta Calculation.
Definition: nvmedia_ldc.h:513
NvMediaLdcTnrParameters::alphaIncreaseCap
float alphaIncreaseCap
Holds the temporal alpha restrict increase capablility.
Definition: nvmedia_ldc.h:487
NvMediaLdcParametersAttributes::maxWarpMapWidth
uint32_t maxWarpMapWidth
Maximum allowed number of control points horizontally in a warp map.
Definition: nvmedia_ldc.h:155
NvMediaLdcWarpMapParameters::controlPoints
const NvMediaLdcControlPoint * controlPoints
Array of control points across all the regions stored in a row-major order.
Definition: nvmedia_ldc.h:415
NvMediaLdcTnrParameters::alphaMinChroma
float alphaMinChroma
Holds the min chroma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:502
NvMediaLdcParametersAttributes::maxDstWidth
uint32_t maxDstWidth
Maximum allowed destination rectangle width.
Definition: nvmedia_ldc.h:175
NvMediaLdcTnrParameters::spatialSigmaChroma
uint32_t spatialSigmaChroma
Holds the sigma of the chroma for spatial filter.
Definition: nvmedia_ldc.h:469
NvMediaLdcTnrParameters::alphaMaxChroma
float alphaMaxChroma
Holds the max chroma value in Alpha Clip Calculation.
Definition: nvmedia_ldc.h:499
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:223
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:347
NvMediaLdcControlPoint::x
float x
Horizontal coordinate.
Definition: nvmedia_ldc.h:350
NvMediaLdcMaskMapParameters::maskColorU
float maskColorU
Holds the U channel value of the mask color.
Definition: nvmedia_ldc.h:445
NvMediaLdcResult::operationId
uint64_t operationId
ID number for operation that was submitted to NvMediaLdcProcess().
Definition: nvmedia_ldc.h:203
NvMediaLdcParametersAttributes
Attributes that specify resources needed for NvMediaLdcParameters instance.
Definition: nvmedia_ldc.h:149
NvMediaLdcWarpMapParameters
Holds the NvMedia LDC definition of a Warp Map.
Definition: nvmedia_ldc.h:405
NvMediaLdcCreate
NvMediaStatus NvMediaLdcCreate(NvMediaLdc **const handle, NvMediaLdcAttributes const *const attr)
Creates a new NvMediaLdc context.
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:481
NvMediaLdc
struct NvMediaLdc NvMediaLdc
NvMediaLdc context.
Definition: nvmedia_ldc.h:77
NvMediaLdcWarpMapParameters::numControlPoints
uint32_t numControlPoints
Number of control points.
Definition: nvmedia_ldc.h:411
NvMediaLdcTnrParameters::rangeSigmaLuma
uint32_t rangeSigmaLuma
Holds the sigma of the luma for range filter.
Definition: nvmedia_ldc.h:472
NvMediaLdcIptParameters::regionParams
NvMediaLdcRegionParameters regionParams
Specifies the regions parameters.
Definition: nvmedia_ldc.h:336
NVMEDIA_LDC_FILTER_LOW
@ NVMEDIA_LDC_FILTER_LOW
Low quality filtering.
Definition: nvmedia_ldc.h:216
NVMEDIA_LDC_FILTER_MEDIUM
@ NVMEDIA_LDC_FILTER_MEDIUM
Medium quality filtering.
Definition: nvmedia_ldc.h:219
NvMediaLdcResult
Stores information returned from NvMediaLdcProcess().
Definition: nvmedia_ldc.h:195
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:353
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:431
NvMediaLdcRegionParameters::numRegionsY
uint32_t numRegionsY
Holds the number of vertical regions.
Definition: nvmedia_ldc.h:312
NVMEDIA_LDC_MAX_REGIONS_Y
#define NVMEDIA_LDC_MAX_REGIONS_Y
Maximum number of vertical regions.
Definition: nvmedia_ldc.h:226