NVIDIA DriveOS Linux NSR SDK API Reference

7.0.3.0 Release
nvmedia_iep.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-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 
20 #ifndef NVMEDIA_IEP_H
21 #define NVMEDIA_IEP_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include <stdint.h>
28 
29 #include "nvmedia_core.h"
30 #include "nvscisync.h"
31 #include "nvscibuf.h"
32 #include "nvmedia_common_video.h"
33 #include "nvmedia_common_encode.h"
34 
46 #define NVMEDIA_IEP_VERSION_MAJOR 1
47 
48 #define NVMEDIA_IEP_VERSION_MINOR 1
49 
50 #define NVMEDIA_IEP_VERSION_PATCH 0
51 
56 #define NVMEDIA_IEP_MAX_PRENVSCISYNCFENCES (16U)
57 
61 typedef enum {
72 
76 typedef struct NvMediaIEP NvMediaIEP;
77 
104 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
107  NvMediaVersion *version
108 );
109 
195 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
196 NvMediaIEP *
198  NvMediaIEPType encodeType,
199  const void *initParams,
200  NvSciBufAttrList bufAttrList,
201  uint8_t maxInOutBuffering,
202  NvMediaEncoderInstanceId instanceId
203 );
204 
290 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
291 NvMediaIEP *
293  NvMediaIEPType encodeType,
294  const void *initParams,
295  const NvSciBufSurfSampleType subsampleType,
296  const NvSciBufSurfBPC bitdepth,
297  uint8_t maxInOutBuffering,
298  NvMediaEncoderInstanceId instanceId
299 );
300 
301 #if !NV_IS_SAFETY
302 
324 NvMediaIEP *
326  void
327 );
328 
399  const NvMediaIEP *encoder,
400  NvMediaIEPType encodeType,
401  const void *initParams,
402  NvSciBufAttrList bufAttrList,
403  uint8_t maxBuffering,
404  NvMediaEncoderInstanceId instanceId
405 );
406 #endif /* !NV_IS_SAFETY */
407 
432 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
433 void NvMediaIEPDestroy(NvMediaIEP *encoder);
434 
508 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
511  NvMediaIEP *encoder,
512  const NvSciBufObj frame,
513  const void *picParams,
514  NvMediaEncoderInstanceId instanceId
515 );
516 
552 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
555  NvMediaIEP *encoder,
556  const void *configuration
557 );
558 
652 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
655  const NvMediaIEP *encoder,
656  uint32_t *numBytes,
657  uint32_t numBitstreamBuffers,
658  const NvMediaBitstreamBuffer *bitstreams,
659  void *extradata
660 );
661 
725 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
728  const NvMediaIEP *encoder,
729  uint32_t *numBytesAvailable,
730  NvMediaBlockingType blockingType,
731  uint32_t millisecondTimeout
732 );
733 
734 
774 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
777  const NvMediaIEP *encoder,
778  NvMediaEncAttrType attrType,
779  uint32_t attrSize,
780  void *AttributeData
781 );
782 
838  NvMediaIEP *encoder,
839  const NvSciBufObj bufObj
840 );
841 
896 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
899  const NvMediaIEP *encoder,
900  const NvSciBufObj bufObj
901 );
902 
903 
953  NvMediaEncoderInstanceId instanceId,
954  NvSciBufAttrList attrlist
955 );
956 
957 
1015  const NvMediaIEP *encoder,
1016  NvSciSyncAttrList attrlist,
1017  NvMediaNvSciSyncClientType clienttype
1018 );
1019 
1020 
1077  const NvMediaIEP *encoder,
1078  NvMediaNvSciSyncObjType syncobjtype,
1079  NvSciSyncObj syncObj
1080 );
1081 
1144  const NvMediaIEP *encoder,
1145  NvSciSyncObj syncObj
1146 );
1147 
1194  const NvMediaIEP *encoder,
1195  NvSciSyncObj nvscisyncEOF
1196 );
1197 
1258  const NvMediaIEP *encoder,
1259  const NvSciSyncFence *prenvscisyncfence
1260 );
1261 
1321  const NvMediaIEP *encoder,
1322  NvSciSyncObj eofnvscisyncobj,
1323  NvSciSyncFence *eofnvscisyncfence
1324 );
1325 
1354  NvMediaDeviceList *deviceList
1355 );
1356 
1357 /*
1358  * @defgroup 6x_history_nvmedia_iep History
1359  * Provides change history for the NvMedia IEP API.
1360  *
1361  * \section 6x_history_nvmedia_iep Version History
1362  *
1363  * <b> Version 1.0.0 </b> September 28, 2021
1364  * - Initial release
1365  *
1366  * <b> Version 1.0.1 </b> August 03, 2022
1367  * - Added new quality preset API, NvMediaEncPreset
1368  *
1369  * <b> Version 1.0.2</b> March 07, 2023
1370  * - Added new create API NvMediaIEPCreateEx which does not depends on reconciled attribute list
1371  *
1372  * <b> Version 1.1.0</b> May 02, 2024
1373  * - Added support for NvMediaIEPQueryDevices API
1374  *
1375  */
1376 
1379 #ifdef __cplusplus
1380 } /* extern "C" */
1381 #endif
1382 
1383 #endif /* NVMEDIA_IEP_H */
NvMediaIEPCreateEx
NvMediaIEP * NvMediaIEPCreateEx(NvMediaIEPType encodeType, const void *initParams, const NvSciBufSurfSampleType subsampleType, const NvSciBufSurfBPC bitdepth, uint8_t maxInOutBuffering, NvMediaEncoderInstanceId instanceId)
Create an NvMediaIEP object instance.
NVMEDIA_IMAGE_ENCODE_H264
@ NVMEDIA_IMAGE_ENCODE_H264
H.264 encode.
Definition: nvmedia_iep.h:63
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
Definition: wfdext.h:86
NvMediaEncAttrType
NvMediaEncAttrType
Specifies the encoder get attribute type.
Definition: nvmedia_common_encode.h:626
NvMediaIEPFillNvSciSyncAttrList
NvMediaStatus NvMediaIEPFillNvSciSyncAttrList(const NvMediaIEP *encoder, NvSciSyncAttrList attrlist, NvMediaNvSciSyncClientType clienttype)
Fills the NvMediaIEP specific NvSciSync attributes.
NvMediaIEPCreate
NvMediaIEP * NvMediaIEPCreate(NvMediaIEPType encodeType, const void *initParams, NvSciBufAttrList bufAttrList, uint8_t maxInOutBuffering, NvMediaEncoderInstanceId instanceId)
Create an NvMediaIEP object instance.
NvMediaIEPSetNvSciSyncObjforEOF
NvMediaStatus NvMediaIEPSetNvSciSyncObjforEOF(const NvMediaIEP *encoder, NvSciSyncObj nvscisyncEOF)
Specifies the NvSciSyncObj to be used for an EOF NvSciSyncFence.
NvMediaIEPSetConfiguration
NvMediaStatus NvMediaIEPSetConfiguration(NvMediaIEP *encoder, const void *configuration)
Sets the encoder configuration.
NvMediaBlockingType
NvMediaBlockingType
Blocking type.
Definition: nvmedia_common_encode.h:212
NvSciBufSurfBPC
NvSciBufSurfBPC
Bits Per Component.
Definition: nvscibuf.h:3262
NvMediaIEPCreateCtx
NvMediaIEP * NvMediaIEPCreateCtx(void)
Create an NvMediaIEP object instance.
NvMediaIEPGetEOFNvSciSyncFence
NvMediaStatus NvMediaIEPGetEOFNvSciSyncFence(const NvMediaIEP *encoder, NvSciSyncObj eofnvscisyncobj, NvSciSyncFence *eofnvscisyncfence)
Gets EOF NvSciSyncFence for an NvMediaIEPFeedFrame() operation.
bufObj
const WFDPipeline NvSciBufObj *const bufObj
Definition: wfdext.h:82
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:108
NvMediaIEPRegisterNvSciBufObj
NvMediaStatus NvMediaIEPRegisterNvSciBufObj(NvMediaIEP *encoder, const NvSciBufObj bufObj)
Registers NvSciBufObj for use with a NvMediaIEP handle.
NvMediaNvSciSyncObjType
NvMediaNvSciSyncObjType
Defines NvMedia NvSciSyncObj types.
Definition: nvmedia_core.h:206
NvMediaNvSciSyncClientType
NvMediaNvSciSyncClientType
NvMedia NvSciSync Client Type.
Definition: nvmedia_core.h:193
NvMediaIEPQueryDevices
NvMediaStatus NvMediaIEPQueryDevices(NvMediaDeviceList *deviceList)
Queries the IEP device list.
NvMediaIEP
struct NvMediaIEP NvMediaIEP
Opaque NvMediaIEP object created by NvMediaIEPCreate.
Definition: nvmedia_iep.h:76
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
Definition: wfdext.h:71
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
Definition: wfdext.h:73
nvscisync.h
NVIDIA Software Communications Interface (SCI) : NvSciSync
NvMediaIEPInsertPreNvSciSyncFence
NvMediaStatus NvMediaIEPInsertPreNvSciSyncFence(const NvMediaIEP *encoder, const NvSciSyncFence *prenvscisyncfence)
Sets an NvSciSyncFence as a prefence for an NvMediaIEPFeedFrame() NvSciSyncFence operation.
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:168
NvMediaIEPType
NvMediaIEPType
Image encode type.
Definition: nvmedia_iep.h:61
NvMediaEncoderInstanceId
NvMediaEncoderInstanceId
Specifies the encoder instance ID.
Definition: nvmedia_common_encode.h:59
NvMediaIEPBitsAvailable
NvMediaStatus NvMediaIEPBitsAvailable(const NvMediaIEP *encoder, uint32_t *numBytesAvailable, NvMediaBlockingType blockingType, uint32_t millisecondTimeout)
Returns the status of an encoding task submitted using NvMediaIEPFeedFrame, whose encoded output is t...
NvMediaIEPFeedFrame
NvMediaStatus NvMediaIEPFeedFrame(NvMediaIEP *encoder, const NvSciBufObj frame, const void *picParams, NvMediaEncoderInstanceId instanceId)
Submits the specified frame for encoding.
NvMediaIEPGetVersion
NvMediaStatus NvMediaIEPGetVersion(NvMediaVersion *version)
Retrieves the version information for the NvMedia IEP library.
NvSciBufSurfSampleType
NvSciBufSurfSampleType
Subsampling type.
Definition: nvscibuf.h:3243
NVMEDIA_IMAGE_ENCODE_AV1
@ NVMEDIA_IMAGE_ENCODE_AV1
AV1 codec.
Definition: nvmedia_iep.h:69
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaIEPGetAttribute
NvMediaStatus NvMediaIEPGetAttribute(const NvMediaIEP *encoder, NvMediaEncAttrType attrType, uint32_t attrSize, void *AttributeData)
Gets the encoder attribute for the current encoding session.
NvMediaBitstreamBuffer
Holds an application data buffer containing compressed video data.
Definition: nvmedia_common_encode_decode.h:91
NvMediaIEPInit
NvMediaStatus NvMediaIEPInit(const NvMediaIEP *encoder, NvMediaIEPType encodeType, const void *initParams, NvSciBufAttrList bufAttrList, uint8_t maxBuffering, NvMediaEncoderInstanceId instanceId)
Initialize an NvMediaIEP object instance.
NvMediaIEPUnregisterNvSciBufObj
NvMediaStatus NvMediaIEPUnregisterNvSciBufObj(const NvMediaIEP *encoder, const NvSciBufObj bufObj)
Un-registers NvSciBufObj which was previously registered with NvMediaIEP using NvMediaIEPRegisterNvSc...
NVMEDIA_IMAGE_ENCODE_VP9
@ NVMEDIA_IMAGE_ENCODE_VP9
VP9 codec.
Definition: nvmedia_iep.h:67
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:256
NvMediaIEPGetBits
NvMediaStatus NvMediaIEPGetBits(const NvMediaIEP *encoder, uint32_t *numBytes, uint32_t numBitstreamBuffers, const NvMediaBitstreamBuffer *bitstreams, void *extradata)
Returns the bitstream for a slice or a frame.
nvscibuf.h
NVIDIA Software Communications Interface (SCI) : NvSciBuf
NvMediaIEPUnregisterNvSciSyncObj
NvMediaStatus NvMediaIEPUnregisterNvSciSyncObj(const NvMediaIEP *encoder, NvSciSyncObj syncObj)
Unregisters an NvSciSyncObj with NvMediaIEP.
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
Definition: wfdext.h:88
NVMEDIA_IMAGE_ENCODE_END
@ NVMEDIA_IMAGE_ENCODE_END
Definition: nvmedia_iep.h:70
nvmedia_common_encode.h
NVIDIA Media Interface: Common Types for Encoding
NVMEDIA_IMAGE_ENCODE_HEVC
@ NVMEDIA_IMAGE_ENCODE_HEVC
HEVC codec.
Definition: nvmedia_iep.h:65
NvMediaIEPFillNvSciBufAttrList
NvMediaStatus NvMediaIEPFillNvSciBufAttrList(NvMediaEncoderInstanceId instanceId, NvSciBufAttrList attrlist)
Fills the NvMediaIEP specific NvSciBuf attributes which than then be used to allocate an NvSciBufObj ...
NvMediaIEPDestroy
void NvMediaIEPDestroy(NvMediaIEP *encoder)
Destroys an NvMediaIEP object instance.
NvMediaIEPRegisterNvSciSyncObj
NvMediaStatus NvMediaIEPRegisterNvSciSyncObj(const NvMediaIEP *encoder, NvMediaNvSciSyncObjType syncobjtype, NvSciSyncObj syncObj)
Registers an NvSciSyncObj with NvMediaIEP.