NVIDIA DRIVE OS Linux SDK API Reference

5.2.3 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 
159 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
160 NvMediaIEP *
162  const NvMediaDevice *device,
163  NvMediaIEPType encodeType,
164  const void *initParams,
165  NvMediaSurfaceType inputFormat,
166  uint8_t maxInputBuffering,
167  uint8_t maxOutputBuffering,
168  NvMediaEncoderInstanceId instanceId
169 );
170 
171 #if !NV_IS_SAFETY
172 
182 NvMediaIEP *
184  void
185 );
186 
238  const NvMediaIEP *encoder,
239  const NvMediaDevice *device,
240  NvMediaIEPType encodeType,
241  const void *initParams,
242  NvMediaSurfaceType inputFormat,
243  uint8_t maxInputBuffering,
244  uint8_t maxOutputBuffering,
245  NvMediaEncoderInstanceId instanceId
246 );
247 #endif
248 
261 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
262 void NvMediaIEPDestroy(const NvMediaIEP *encoder);
263 
327 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
330  const NvMediaIEP *encoder,
331  const NvMediaImage *frame,
332  NvMediaRect *sourceRect,
333  const void *picParams,
334  NvMediaEncoderInstanceId instanceId
335 );
336 
359 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
362  const NvMediaIEP *encoder,
363  const void *configuration
364 );
365 
425 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
428  const NvMediaIEP *encoder,
429  uint32_t *numBytes,
430  uint32_t numBitstreamBuffers,
431  const NvMediaBitstreamBuffer *bitstreams,
432  void *extradata
433 );
434 
483 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
486  const NvMediaIEP *encoder,
487  uint32_t *numBytesAvailable,
488  NvMediaBlockingType blockingType,
489  uint32_t millisecondTimeout
490 );
491 
492 
518 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
521  const NvMediaIEP *encoder,
522  NvMediaEncAttrType attrType,
523  uint32_t attrSize,
524  void *AttributeData
525 );
526 
565  const NvMediaIEP *encoder,
566  const NvMediaImage *image,
567  NvMediaAccessMode accessMode
568 );
569 
613 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
616  const NvMediaIEP *encoder,
617  const NvMediaImage *image
618 );
619 
620 /*
621  * \defgroup history_nvmedia_iep History
622  * Provides change history for the NvMedia IEP API.
623  *
624  * \section history_nvmedia_iep Version History
625  *
626  * <b> Version 1.0 </b> March 14, 2016
627  * - Initial release
628  *
629  * <b> Version 1.1 </b> May 11, 2016
630  * - Added \ref NvMediaICPCheckVersion API
631  *
632  * <b> Version 1.2 </b> May 5, 2017
633  * - Added \ref NvMediaIEPGetBitsEx and \ref NvMediaIEPSetInputExtraData API
634  * - Added \ref NvMediaIEPGetAttribute
635  *
636  * <b> Version 2.0 </b> May 9, 2017
637  * - Added instance ID parameter to NvMediaIEPCreate() and NvMediaIEPFeedFrame()
638  * - optionalDevice parameter is removed from NvMediaIEPCreate()
639  * - NvMediaIEPGetVersion() is added to get the version of NvMedia Image Encoder library
640  * - NvMediaIEPGetBits() is deprecated. Use NvMediaIEPGetBitsEx() instead.
641  * - All NvMedia data types are moved to standard data types
642  *
643  * <b> Version 2.1 </b> June 30, 2017
644  * - Removed \ref NvMediaIEPSetInputExtraData API
645  *
646  * <b> Version 2.2 </b> Sept 1, 2017
647  * - Added NVMEDIA_IMAGE_ENCODE_VP8 in \ref NvMediaIEPType enum
648  *
649  * <b> Version 2.3 </b> Dec 14, 2018
650  * - Fix MISRA violations 21.1 and 21.2
651  *
652  * <b> Version 2.4 </b> January 15, 2019
653  * - Fix MISRA violations 8.13
654  *
655  * <b> Version 2.5 </b> Feb 7, 2019
656  * - Added opaque handle for encoder
657  * internal usage into Image encoder object
658  * - Fix MISRA violations 11.3
659  * - Fix MISRA violations 8.13
660  *
661  * <b> Version 2.6 </b> Feb 28, 2019
662  * - Added required header includes nvmedia_core.h and nvmedia_surface.h
663  *
664  * <b> Version 2.7 </b> July 10, 2019
665  * - Header include nvmedia_common.h is replaced with nvmedia_common_encode.h
666  *
667  * <b> Version 2.8 </b> July 13, 2019
668  * - Corrected parameter description for \ref NvMediaIEPCreate and
669  * \ref NvMediaIEPFeedFrame.
670  *
671  * <b> Version 2.9 </b> July 15, 2019
672  * - Fix MISRA violations 8.13
673  *
674  * <b> Version 2.10 </b> Jul 16, 2019
675  * - Added \ref NvMediaIEPImageRegister API
676  * - Added \ref NvMediaIEPImageUnRegister API
677  *
678  * <b> Version 2.11 </b> October 5, 2019
679  * - Fix MISRA violations 8.13
680  * - Added Coverity Code annotations to suppress partial 8.7 violations
681  *
682  * <b> Version 2.12 </b> November 25, 2019
683  * - Fix MISRA violations 8.13
684  *
685  * <b> Version 2.13 </b> September 3, 2020
686  * - Added \ref NvMediaIEPCreateCtx API (non-safety build)
687  * - Added \ref NvMediaIEPInit API (non-safety build)
688  *
689  * <b> Version 2.14 </b> November 20, 2020
690  * - Updated input format requirements for all supported codecs only
691  * in comments section of \ref NvMediaIEPCreate as part of documentation
692  */
693 
696 #ifdef __cplusplus
697 }; /* extern "C" */
698 #endif
699 
700 #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.