NVIDIA DRIVE OS Linux SDK API Reference

6.0.4 Release
nvmedia_iep.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 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_encode.h"
33 
45 #define NVMEDIA_IEP_VERSION_MAJOR 1
46 
47 #define NVMEDIA_IEP_VERSION_MINOR 0
48 
49 #define NVMEDIA_IEP_VERSION_PATCH 1
50 
55 #define NVMEDIA_IEP_MAX_PRENVSCISYNCFENCES (16U)
56 
60 typedef enum {
71 
75 typedef struct NvMediaIEP NvMediaIEP;
76 
103 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
106  NvMediaVersion *version
107 );
108 
194 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
195 NvMediaIEP *
197  NvMediaIEPType encodeType,
198  const void *initParams,
199  NvSciBufAttrList bufAttrList,
200  uint8_t maxBuffering,
201  NvMediaEncoderInstanceId instanceId
202 );
203 
204 #if !NV_IS_SAFETY
205 
227 NvMediaIEP *
229  void
230 );
231 
302  const NvMediaIEP *encoder,
303  NvMediaIEPType encodeType,
304  const void *initParams,
305  NvSciBufAttrList bufAttrList,
306  uint8_t maxBuffering,
307  NvMediaEncoderInstanceId instanceId
308 );
309 #endif /* !NV_IS_SAFETY */
310 
335 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
336 void NvMediaIEPDestroy(const NvMediaIEP *encoder);
337 
410 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
413  const NvMediaIEP *encoder,
414  NvSciBufObj bufObj,
415  const void *picParams,
416  NvMediaEncoderInstanceId instanceId
417 );
418 
454 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
457  const NvMediaIEP *encoder,
458  const void *configuration
459 );
460 
554 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
557  const NvMediaIEP *encoder,
558  uint32_t *numBytes,
559  uint32_t numBitstreamBuffers,
560  const NvMediaBitstreamBuffer *bitstreams,
561  void *extradata
562 );
563 
627 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
630  const NvMediaIEP *encoder,
631  uint32_t *numBytesAvailable,
632  NvMediaBlockingType blockingType,
633  uint32_t millisecondTimeout
634 );
635 
636 
676 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
679  const NvMediaIEP *encoder,
680  NvMediaEncAttrType attrType,
681  uint32_t attrSize,
682  void *AttributeData
683 );
684 
740  const NvMediaIEP *encoder,
741  NvSciBufObj bufObj
742 );
743 
797 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
800  const NvMediaIEP *encoder,
801  NvSciBufObj bufObj
802 );
803 
804 
847  NvMediaEncoderInstanceId instanceId,
848  NvSciBufAttrList attrlist
849 );
850 
851 
901  const NvMediaIEP *encoder,
902  NvSciSyncAttrList attrlist,
903  NvMediaNvSciSyncClientType clienttype
904 );
905 
906 
962  const NvMediaIEP *encoder,
963  NvMediaNvSciSyncObjType syncobjtype,
964  NvSciSyncObj nvscisync
965 );
966 
1028  const NvMediaIEP *encoder,
1029  NvSciSyncObj nvscisync
1030 );
1031 
1078  const NvMediaIEP *encoder,
1079  NvSciSyncObj nvscisyncEOF
1080 );
1081 
1142  const NvMediaIEP *encoder,
1143  const NvSciSyncFence *prenvscisyncfence
1144 );
1145 
1205  const NvMediaIEP *encoder,
1206  NvSciSyncObj eofnvscisyncobj,
1207  NvSciSyncFence *eofnvscisyncfence
1208 );
1209 
1255  const NvMediaIEP *encoder,
1256  NvSciSyncObj nvscisyncSOF
1257 );
1258 
1308  const NvMediaIEP *encoder,
1309  NvSciSyncObj sofnvscisyncobj,
1310  NvSciSyncFence *sofnvscisyncfence
1311 );
1312 
1313 /*
1314  * @defgroup 6x_history_nvmedia_iep History
1315  * Provides change history for the NvMedia IEP API.
1316  *
1317  * \section 6x_history_nvmedia_iep Version History
1318  *
1319  * <b> Version 1.0 </b> September 28, 2021
1320  * - Initial release
1321  *
1322  */
1323 
1326 #ifdef __cplusplus
1327 } /* extern "C" */
1328 #endif
1329 
1330 #endif /* NVMEDIA_IEP_H */
NVMEDIA_IMAGE_ENCODE_H264
@ NVMEDIA_IMAGE_ENCODE_H264
H.264 encode.
Definition: nvmedia_iep.h:62
NvMediaEncAttrType
NvMediaEncAttrType
Specifies the encoder get attribute type.
Definition: nvmedia_common_encode.h:543
NvMediaIEPDestroy
void NvMediaIEPDestroy(const NvMediaIEP *encoder)
Destroys an NvMediaIEP object instance.
NvMediaIEPFillNvSciSyncAttrList
NvMediaStatus NvMediaIEPFillNvSciSyncAttrList(const NvMediaIEP *encoder, NvSciSyncAttrList attrlist, NvMediaNvSciSyncClientType clienttype)
Fills the NvMediaIEP specific NvSciSync attributes.
NvMediaIEPSetNvSciSyncObjforEOF
NvMediaStatus NvMediaIEPSetNvSciSyncObjforEOF(const NvMediaIEP *encoder, NvSciSyncObj nvscisyncEOF)
Specifies the NvSciSyncObj to be used for an EOF NvSciSyncFence.
NvMediaBlockingType
NvMediaBlockingType
Blocking type.
Definition: nvmedia_common_encode.h:201
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.
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMediaNvSciSyncObjType
NvMediaNvSciSyncObjType
Defines NvMedia NvSciSyncObj types.
Definition: nvmedia_core.h:187
NvMediaNvSciSyncClientType
NvMediaNvSciSyncClientType
NvMedia NvSciSync Client Type.
Definition: nvmedia_core.h:174
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:314
NvMediaIEP
struct NvMediaIEP NvMediaIEP
Opaque NvMediaIEP object created by NvMediaIEPCreate.
Definition: nvmedia_iep.h:75
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
A memory object is a container holding the reconciled NvSciBufAttrList defining constraints of the bu...
Definition: nvscibuf.h:2717
nvscisync.h
NVIDIA Software Communications Interface (SCI) : NvSciSync
NvMediaIEPRegisterNvSciSyncObj
NvMediaStatus NvMediaIEPRegisterNvSciSyncObj(const NvMediaIEP *encoder, NvMediaNvSciSyncObjType syncobjtype, NvSciSyncObj nvscisync)
Registers an NvSciSyncObj with NvMediaIEP.
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:149
NvMediaIEPType
NvMediaIEPType
Image encode type.
Definition: nvmedia_iep.h:60
NvMediaEncoderInstanceId
NvMediaEncoderInstanceId
Specifies the encoder instance ID.
Definition: nvmedia_common_encode.h:56
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...
NvMediaIEPSetNvSciSyncObjforSOF
NvMediaStatus NvMediaIEPSetNvSciSyncObjforSOF(const NvMediaIEP *encoder, NvSciSyncObj nvscisyncSOF)
Specifies the NvSciSyncObj to be used for an SOF NvSciSyncFence.
NvMediaIEPGetVersion
NvMediaStatus NvMediaIEPGetVersion(NvMediaVersion *version)
Retrieves the version information for the NvMedia IEP library.
NvMediaIEPFeedFrame
NvMediaStatus NvMediaIEPFeedFrame(const NvMediaIEP *encoder, NvSciBufObj bufObj, const void *picParams, NvMediaEncoderInstanceId instanceId)
Submits the specified frame for encoding.
NVMEDIA_IMAGE_ENCODE_AV1
@ NVMEDIA_IMAGE_ENCODE_AV1
AV1 codec.
Definition: nvmedia_iep.h:68
NvMediaIEPSetConfiguration
NvMediaStatus NvMediaIEPSetConfiguration(const NvMediaIEP *encoder, const void *configuration)
Sets the encoder configuration.
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaIEPRegisterNvSciBufObj
NvMediaStatus NvMediaIEPRegisterNvSciBufObj(const NvMediaIEP *encoder, NvSciBufObj bufObj)
Registers NvSciBufObj for use with a NvMediaIEP handle.
NvMediaIEPUnregisterNvSciBufObj
NvMediaStatus NvMediaIEPUnregisterNvSciBufObj(const NvMediaIEP *encoder, NvSciBufObj bufObj)
Un-registers NvSciBufObj which was previously registered with NvMediaIEP using NvMediaIEPRegisterNvSc...
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:87
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
A container constituting an attribute list which contains.
Definition: nvscibuf.h:2735
NvMediaIEPInit
NvMediaStatus NvMediaIEPInit(const NvMediaIEP *encoder, NvMediaIEPType encodeType, const void *initParams, NvSciBufAttrList bufAttrList, uint8_t maxBuffering, NvMediaEncoderInstanceId instanceId)
Initialize an NvMediaIEP object instance.
NvMediaIEPGetSOFNvSciSyncFence
NvMediaStatus NvMediaIEPGetSOFNvSciSyncFence(const NvMediaIEP *encoder, NvSciSyncObj sofnvscisyncobj, NvSciSyncFence *sofnvscisyncfence)
Gets SOF NvSciSyncFence for an NvMediaIEPFeedFrame() operation.
NVMEDIA_IMAGE_ENCODE_VP9
@ NVMEDIA_IMAGE_ENCODE_VP9
VP9 codec.
Definition: nvmedia_iep.h:66
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:240
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
NvMediaIEPCreate
NvMediaIEP * NvMediaIEPCreate(NvMediaIEPType encodeType, const void *initParams, NvSciBufAttrList bufAttrList, uint8_t maxBuffering, NvMediaEncoderInstanceId instanceId)
Create an NvMediaIEP object instance.
NVMEDIA_IMAGE_ENCODE_END
@ NVMEDIA_IMAGE_ENCODE_END
Definition: nvmedia_iep.h:69
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:64
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:295
NvMediaIEPUnregisterNvSciSyncObj
NvMediaStatus NvMediaIEPUnregisterNvSciSyncObj(const NvMediaIEP *encoder, NvSciSyncObj nvscisync)
Unregisters an NvSciSyncObj with NvMediaIEP.
NvMediaIEPFillNvSciBufAttrList
NvMediaStatus NvMediaIEPFillNvSciBufAttrList(NvMediaEncoderInstanceId instanceId, NvSciBufAttrList attrlist)
Fills the NvMediaIEP specific NvSciBuf attributes which than then be used to allocate an NvSciBufObj ...