NVIDIA DRIVE OS Linux SDK API Reference

5.2.6 Release
For Test and Development only
nvmedia_iep.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2020, NVIDIA CORPORATION. All rights reserved. All
3  * information contained herein is proprietary and confidential to NVIDIA
4  * Corporation. Any use, reproduction, or disclosure without the written
5  * permission of NVIDIA Corporation is prohibited.
6  */
7 
15 #ifndef NVMEDIA_IEP_H
16 #define NVMEDIA_IEP_H
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 #include "nvmedia_common_encode.h"
23 #include "nvmedia_core.h"
24 #include "nvmedia_image.h"
25 #include "nvmedia_surface.h"
26 
38 #define NVMEDIA_IEP_VERSION_MAJOR 2
39 
40 #define NVMEDIA_IEP_VERSION_MINOR 14
41 
45 typedef enum {
55 
59 typedef struct NvMediaIEPRec {
67  struct NvMediaIEPPriv_ *encPriv;
68 } NvMediaIEP;
69 
86 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
89  NvMediaVersion *version
90 );
91 
168 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
169 NvMediaIEP *
171  const NvMediaDevice *device,
172  NvMediaIEPType encodeType,
173  const void *initParams,
174  NvMediaSurfaceType inputFormat,
175  uint8_t maxInputBuffering,
176  uint8_t maxOutputBuffering,
177  NvMediaEncoderInstanceId instanceId
178 );
179 
180 #if !NV_IS_SAFETY
181 
191 NvMediaIEP *
193  void
194 );
195 
247  const NvMediaIEP *encoder,
248  const NvMediaDevice *device,
249  NvMediaIEPType encodeType,
250  const void *initParams,
251  NvMediaSurfaceType inputFormat,
252  uint8_t maxInputBuffering,
253  uint8_t maxOutputBuffering,
254  NvMediaEncoderInstanceId instanceId
255 );
256 #endif
257 
270 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
271 void NvMediaIEPDestroy(const NvMediaIEP *encoder);
272 
336 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
339  const NvMediaIEP *encoder,
340  const NvMediaImage *frame,
341  NvMediaRect *sourceRect,
342  const void *picParams,
343  NvMediaEncoderInstanceId instanceId
344 );
345 
368 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
371  const NvMediaIEP *encoder,
372  const void *configuration
373 );
374 
434 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
437  const NvMediaIEP *encoder,
438  uint32_t *numBytes,
439  uint32_t numBitstreamBuffers,
440  const NvMediaBitstreamBuffer *bitstreams,
441  void *extradata
442 );
443 
492 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
495  const NvMediaIEP *encoder,
496  uint32_t *numBytesAvailable,
497  NvMediaBlockingType blockingType,
498  uint32_t millisecondTimeout
499 );
500 
501 
527 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
530  const NvMediaIEP *encoder,
531  NvMediaEncAttrType attrType,
532  uint32_t attrSize,
533  void *AttributeData
534 );
535 
574  const NvMediaIEP *encoder,
575  const NvMediaImage *image,
576  NvMediaAccessMode accessMode
577 );
578 
622 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
625  const NvMediaIEP *encoder,
626  const NvMediaImage *image
627 );
628 
629 /*
630  * \defgroup history_nvmedia_iep History
631  * Provides change history for the NvMedia IEP API.
632  *
633  * \section history_nvmedia_iep Version History
634  *
635  * <b> Version 1.0 </b> March 14, 2016
636  * - Initial release
637  *
638  * <b> Version 1.1 </b> May 11, 2016
639  * - Added \ref NvMediaICPCheckVersion API
640  *
641  * <b> Version 1.2 </b> May 5, 2017
642  * - Added \ref NvMediaIEPGetBitsEx and \ref NvMediaIEPSetInputExtraData API
643  * - Added \ref NvMediaIEPGetAttribute
644  *
645  * <b> Version 2.0 </b> May 9, 2017
646  * - Added instance ID parameter to NvMediaIEPCreate() and NvMediaIEPFeedFrame()
647  * - optionalDevice parameter is removed from NvMediaIEPCreate()
648  * - NvMediaIEPGetVersion() is added to get the version of NvMedia Image Encoder library
649  * - NvMediaIEPGetBits() is deprecated. Use NvMediaIEPGetBitsEx() instead.
650  * - All NvMedia data types are moved to standard data types
651  *
652  * <b> Version 2.1 </b> June 30, 2017
653  * - Removed \ref NvMediaIEPSetInputExtraData API
654  *
655  * <b> Version 2.2 </b> Sept 1, 2017
656  * - Added NVMEDIA_IMAGE_ENCODE_VP8 in \ref NvMediaIEPType enum
657  *
658  * <b> Version 2.3 </b> Dec 14, 2018
659  * - Fix MISRA violations 21.1 and 21.2
660  *
661  * <b> Version 2.4 </b> January 15, 2019
662  * - Fix MISRA violations 8.13
663  *
664  * <b> Version 2.5 </b> Feb 7, 2019
665  * - Added opaque handle for encoder
666  * internal usage into Image encoder object
667  * - Fix MISRA violations 11.3
668  * - Fix MISRA violations 8.13
669  *
670  * <b> Version 2.6 </b> Feb 28, 2019
671  * - Added required header includes nvmedia_core.h and nvmedia_surface.h
672  *
673  * <b> Version 2.7 </b> July 10, 2019
674  * - Header include nvmedia_common.h is replaced with nvmedia_common_encode.h
675  *
676  * <b> Version 2.8 </b> July 13, 2019
677  * - Corrected parameter description for \ref NvMediaIEPCreate and
678  * \ref NvMediaIEPFeedFrame.
679  *
680  * <b> Version 2.9 </b> July 15, 2019
681  * - Fix MISRA violations 8.13
682  *
683  * <b> Version 2.10 </b> Jul 16, 2019
684  * - Added \ref NvMediaIEPImageRegister API
685  * - Added \ref NvMediaIEPImageUnRegister API
686  *
687  * <b> Version 2.11 </b> October 5, 2019
688  * - Fix MISRA violations 8.13
689  * - Added Coverity Code annotations to suppress partial 8.7 violations
690  *
691  * <b> Version 2.12 </b> November 25, 2019
692  * - Fix MISRA violations 8.13
693  *
694  * <b> Version 2.13 </b> September 3, 2020
695  * - Added \ref NvMediaIEPCreateCtx API (non-safety build)
696  * - Added \ref NvMediaIEPInit API (non-safety build)
697  *
698  * <b> Version 2.14 </b> November 20, 2020
699  * - Updated input format requirements for all supported codecs only
700  * in comments section of \ref NvMediaIEPCreate as part of documentation
701  */
702 
705 #ifdef __cplusplus
706 }; /* extern "C" */
707 #endif
708 
709 #endif /* NVMEDIA_IEP_H */
NvMediaIEPImageUnRegister
NvMediaStatus NvMediaIEPImageUnRegister(const NvMediaIEP *encoder, const NvMediaImage *image)
Un-registers NvMediaImage which is registered with NvMediaIEP.
nvmedia_surface.h
NVIDIA Media Interface: Surface Handling
NvMediaIEPRec::instanceId
NvMediaEncoderInstanceId instanceId
Instance ID.
Definition: nvmedia_iep.h:65
NvMediaIEPCreate
NvMediaIEP * NvMediaIEPCreate(const NvMediaDevice *device, NvMediaIEPType encodeType, const void *initParams, NvMediaSurfaceType inputFormat, uint8_t maxInputBuffering, uint8_t maxOutputBuffering, NvMediaEncoderInstanceId instanceId)
Create an NvMediaIEP object instance.
NvMediaEncAttrType
NvMediaEncAttrType
Specifies the Video encoder get attribute type.
Definition: nvmedia_common_encode.h:524
NVMEDIA_IMAGE_ENCODE_HEVC
@ NVMEDIA_IMAGE_ENCODE_HEVC
HEVC codec.
Definition: nvmedia_iep.h:49
NvMediaIEPGetBitsEx
NvMediaStatus NvMediaIEPGetBitsEx(const NvMediaIEP *encoder, uint32_t *numBytes, uint32_t numBitstreamBuffers, const NvMediaBitstreamBuffer *bitstreams, void *extradata)
Returns the bitstream for a slice or frame.
NvMediaIEPRec
Holds the image encoder object created by NvMediaIEPCreate.
Definition: nvmedia_iep.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...
NvMediaBlockingType
NvMediaBlockingType
Blocking type.
Definition: nvmedia_common_encode.h:189
NvMediaIEPFeedFrame
NvMediaStatus NvMediaIEPFeedFrame(const NvMediaIEP *encoder, const NvMediaImage *frame, NvMediaRect *sourceRect, const void *picParams, NvMediaEncoderInstanceId instanceId)
Submits the specified frame for encoding.
NvMediaDevice
struct NvMediaDevice NvMediaDevice
An opaque handle representing an NvMediaDevice object.
Definition: nvmedia_core.h:348
NvMediaIEPRec::encodeType
NvMediaIEPType encodeType
Codec type.
Definition: nvmedia_iep.h:61
NvMediaIEPSetConfiguration
NvMediaStatus NvMediaIEPSetConfiguration(const NvMediaIEP *encoder, const void *configuration)
Sets the encoder configuration.
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:237
NVMEDIA_IMAGE_ENCODE_VP9
@ NVMEDIA_IMAGE_ENCODE_VP9
VP9 codec.
Definition: nvmedia_iep.h:51
NvMediaImageRec
Holds a handle representing image objects.
Definition: nvmedia_image.h:71
NvMediaIEPCreateCtx
NvMediaIEP * NvMediaIEPCreateCtx(void)
Create an NvMediaIEP object instance.
NvMediaIEPGetAttribute
NvMediaStatus NvMediaIEPGetAttribute(const NvMediaIEP *encoder, NvMediaEncAttrType attrType, uint32_t attrSize, void *AttributeData)
Gets the encoder attribute for the current encoding session.
NvMediaIEP
struct NvMediaIEPRec NvMediaIEP
Holds the image encoder object created by NvMediaIEPCreate.
NVMEDIA_IMAGE_ENCODE_VP8
@ NVMEDIA_IMAGE_ENCODE_VP8
VP8 codec.
Definition: nvmedia_iep.h:53
NvMediaRect
Holds a rectangular region of a surface.
Definition: nvmedia_core.h:133
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaSurfaceType
#define NvMediaSurfaceType
Defines the set of NvMedia surface types.
Definition: nvmedia_surface.h:550
NvMediaIEPRec::inputFormat
NvMediaSurfaceType inputFormat
Input Image surface type.
Definition: nvmedia_iep.h:63
NvMediaAccessMode
NvMediaAccessMode
Definition: nvmedia_core.h:299
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:180
NvMediaBitstreamBuffer
Holds an application data buffer containing compressed video data.
Definition: nvmedia_common_encode_decode.h:75
NvMediaIEPRec::encPriv
struct NvMediaIEPPriv_ * encPriv
An Opaque pointer for internal use.
Definition: nvmedia_iep.h:67
NvMediaIEPDestroy
void NvMediaIEPDestroy(const NvMediaIEP *encoder)
Destroys an NvMedia image encoder.
NvMediaIEPGetVersion
NvMediaStatus NvMediaIEPGetVersion(NvMediaVersion *version)
Checks the version compatibility for the NvMedia IEP library.
NVMEDIA_IMAGE_ENCODE_H264
@ NVMEDIA_IMAGE_ENCODE_H264
H.264 encode.
Definition: nvmedia_iep.h:47
NvMediaEncoderInstanceId
NvMediaEncoderInstanceId
Specifies the encoder instance ID.
Definition: nvmedia_common_encode_ofst.h:36
NvMediaIEPImageRegister
NvMediaStatus NvMediaIEPImageRegister(const NvMediaIEP *encoder, const NvMediaImage *image, NvMediaAccessMode accessMode)
Registers NvMediaImage for use with a NvMediaIEP handle.
nvmedia_common_encode.h
NVIDIA Media Interface: Common Types for Video/Image Encode
nvmedia_image.h
NVIDIA Media Interface: Image Processing
NvMediaIEPType
NvMediaIEPType
Image encode type.
Definition: nvmedia_iep.h:45
NvMediaIEPInit
NvMediaStatus NvMediaIEPInit(const NvMediaIEP *encoder, const NvMediaDevice *device, NvMediaIEPType encodeType, const void *initParams, NvMediaSurfaceType inputFormat, uint8_t maxInputBuffering, uint8_t maxOutputBuffering, NvMediaEncoderInstanceId instanceId)
Initialize an NvMediaIEP object instance.