NVIDIA DRIVE OS Linux SDK API Reference

6.0.9 Release
nvmedia_ijpe.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2023 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 
21 #ifndef NVMEDIA_IJPE_H
22 #define NVMEDIA_IJPE_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include <stdint.h>
29 
30 #include "nvmedia_core.h"
31 #include "nvscibuf.h"
32 #include "nvscisync.h"
34 #include "nvmedia_common_encode.h"
46 #define NVMEDIA_IJPE_VERSION_MAJOR 2
47 
48 #define NVMEDIA_IJPE_VERSION_MINOR 0
49 
50 #define NVMEDIA_IJPE_VERSION_PATCH 0
51 
56 #define NVMEDIA_IJPE_MAX_PRENVSCISYNCFENCES (16U)
57 
62 #define NVMEDIA_JPEG_ENC_FLAG_NONE (0 << 0)
63 
69 #define NVMEDIA_JPEG_ENC_FLAG_SKIP_SOI (1 << 0)
70 
75 #define NVMEDIA_IMAGE_JPEG_ATTRIBUTE_QUALITY (1 << 0)
76 
80 #define NVMEDIA_IMAGE_JPEG_ATTRIBUTE_RESTARTINTERVAL (1 << 1)
81 
85 #define NVMEDIA_IMAGE_JPEG_ATTRIBUTE_TARGETSIZE (1 << 2)
86 
90 #define NVMEDIA_IMAGE_JPEG_ATTRIBUTE_QUANTTABLE (1 << 3)
91 
95 #define NVMEDIA_IMAGE_JPEG_ATTRIBUTE_HUFFTABLE (1 << 4)
96 
100 typedef struct {
101  uint8_t length[16];
102  uint8_t *values;
104 
108 typedef struct {
114  uint8_t quality;
118  uint32_t restartInterval;
122  uint32_t targetImageSize;
126  uint8_t lumaQuant[64];
130  uint8_t chromaQuant[64];
156 
160 typedef struct NvMediaIJPE NvMediaIJPE;
161 
189  NvMediaVersion *version
190 );
191 
245 NvMediaIJPE *
247  //NvMediaSurfaceType inputFormat,
248  NvSciBufAttrList bufAttrList,
249  uint8_t maxOutputBuffering,
250  uint32_t maxBitstreamBytes,
251  NvMediaJPEGInstanceId instanceId
252 );
253 
295 NvMediaIJPE *
297  uint8_t maxOutputBuffering,
298  uint32_t maxBitstreamBytes,
299  NvMediaJPEGInstanceId instanceId
300 );
301 
325 void NvMediaIJPEDestroy(NvMediaIJPE *encoder);
326 
380  const NvMediaIJPE *encoder,
381  NvSciBufObj bufObj,
382  uint8_t quality,
383  NvMediaJPEGInstanceId instanceId
384 );
385 
441  const NvMediaIJPE *encoder,
442  NvSciBufObj bufObj,
443  uint8_t *lumaQuant,
444  uint8_t *chromaQuant,
445  NvMediaJPEGInstanceId instanceId
446 );
447 
507  const NvMediaIJPE *encoder,
508  NvSciBufObj bufObj,
509  uint8_t *lumaQuant,
510  uint8_t *chromaQuant,
511  uint32_t targetImageSize,
512  NvMediaJPEGInstanceId instanceId
513 );
514 
549  const NvMediaIJPE *encoder,
550  uint32_t attributeMask,
551  const void *attributes
552 );
553 
605  const NvMediaIJPE *encoder,
606  uint32_t *numBytes,
607  void *buffer,
608  uint32_t flags
609 );
610 
668  const NvMediaIJPE *encoder,
669  uint32_t *numBytesAvailable,
670  NvMediaBlockingType blockingType,
671  uint32_t millisecondTimeout
672 );
673 
730  const NvMediaIJPE *encoder,
731  NvSciBufObj bufObj
732 );
733 
788 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
791  const NvMediaIJPE *encoder,
792  NvSciBufObj bufObj
793 );
794 
795 
843  NvMediaJPEGInstanceId instanceId,
844  NvSciBufAttrList attrlist
845 );
846 
903  const NvMediaIJPE *encoder,
904  NvSciSyncAttrList attrlist,
905  NvMediaNvSciSyncClientType clienttype
906 );
907 
908 
964  const NvMediaIJPE *encoder,
965  NvMediaNvSciSyncObjType syncobjtype,
966  NvSciSyncObj nvscisync
967 );
968 
1030  const NvMediaIJPE *encoder,
1031  NvSciSyncObj nvscisync
1032 );
1033 
1080  const NvMediaIJPE *encoder,
1081  NvSciSyncObj nvscisyncEOF
1082 );
1083 
1144  const NvMediaIJPE *encoder,
1145  const NvSciSyncFence *prenvscisyncfence
1146 );
1147 
1207  const NvMediaIJPE *encoder,
1208  NvSciSyncObj eofnvscisyncobj,
1209  NvSciSyncFence *eofnvscisyncfence
1210 );
1211 
1212 /*
1213  * @defgroup 6x_history_nvmedia_iipe History
1214  * Provides change history for the NvMedia IJPE API.
1215  *
1216  * \section 6x_history_nvmedia_ijpe Version History
1217  *
1218  * <b> Version 1.0 </b> September 28, 2021
1219  * - Initial release
1220  *
1221  * <b> Version 2.0 </b> March 31, 2023
1222  * - Deprecate NvMediaIJPEGetBitsEx() API
1223  *
1224  */
1225 
1228 #ifdef __cplusplus
1229 } /* extern "C" */
1230 #endif
1231 
1232 #endif /* NVMEDIA_IJPE_H */
NvMediaIJPERegisterNvSciSyncObj
NvMediaStatus NvMediaIJPERegisterNvSciSyncObj(const NvMediaIJPE *encoder, NvMediaNvSciSyncObjType syncobjtype, NvSciSyncObj nvscisync)
Registers an NvSciSyncObj with NvMediaIJPE.
NvMediaIJPESetNvSciSyncObjforEOF
NvMediaStatus NvMediaIJPESetNvSciSyncObjforEOF(const NvMediaIJPE *encoder, NvSciSyncObj nvscisyncEOF)
Specifies the NvSciSyncObj to be used for an EOF NvSciSyncFence.
nvmedia_common_encode_decode.h
NVIDIA Media Interface: Common Types for Encode and Decode
NvMediaIJPEUnregisterNvSciBufObj
NvMediaStatus NvMediaIJPEUnregisterNvSciBufObj(const NvMediaIJPE *encoder, NvSciBufObj bufObj)
Un-registers NvSciBufObj which was previously registered with NvMediaIJPE using NvMediaIJPERegisterNv...
NvMediaIJPEFeedFrameRateControl
NvMediaStatus NvMediaIJPEFeedFrameRateControl(const NvMediaIJPE *encoder, NvSciBufObj bufObj, uint8_t *lumaQuant, uint8_t *chromaQuant, uint32_t targetImageSize, NvMediaJPEGInstanceId instanceId)
Encodes the specified bufObj with input Luma and Chroma quant tables and targetImageSize.
NvMediaIJPECreateEx
NvMediaIJPE * NvMediaIJPECreateEx(uint8_t maxOutputBuffering, uint32_t maxBitstreamBytes, NvMediaJPEGInstanceId instanceId)
Creates a JPEG encoder object capable of turning a stream of surfaces of the inputFormat into a JPEG ...
NvMediaBlockingType
NvMediaBlockingType
Blocking type.
Definition: nvmedia_common_encode.h:201
NvMediaIJPEFillNvSciSyncAttrList
NvMediaStatus NvMediaIJPEFillNvSciSyncAttrList(const NvMediaIJPE *encoder, NvSciSyncAttrList attrlist, NvMediaNvSciSyncClientType clienttype)
Fills the NvMediaIJPE specific NvSciSync attributes.
NvMediaIJPERegisterNvSciBufObj
NvMediaStatus NvMediaIJPERegisterNvSciBufObj(const NvMediaIJPE *encoder, NvSciBufObj bufObj)
Registers NvSciBufObj for use with a NvMediaIJPE handle.
NvMediaIJPEGetVersion
NvMediaStatus NvMediaIJPEGetVersion(NvMediaVersion *version)
Retrieves the version information for the NvMedia IJPE library.
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMediaJPEncAttributes::quality
uint8_t quality
A value clamped to between 1 and 100, set to generate luma/chroma Quant tables.
Definition: nvmedia_ijpe.h:114
NvMediaNvSciSyncObjType
NvMediaNvSciSyncObjType
Defines NvMedia NvSciSyncObj types.
Definition: nvmedia_core.h:202
NvMediaNvSciSyncClientType
NvMediaNvSciSyncClientType
NvMedia NvSciSync Client Type.
Definition: nvmedia_core.h:189
NvMediaJPEncAttributes::restartInterval
uint32_t restartInterval
A value to specify restart interval, initialized to 0 at NvMediaIJPE creation.
Definition: nvmedia_ijpe.h:118
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:330
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
A memory object is a container holding the reconciled NvSciBufAttrList defining constraints of the bu...
Definition: nvscibuf.h:3108
NvMediaJPEncAttributes::chromaDC
NvMediaJPHuffmanTableSpecfication * chromaDC
A Huffmann table for Chroma DC sample, initialized to NULL for using default table in JPEG specificat...
Definition: nvmedia_ijpe.h:148
nvscisync.h
NVIDIA Software Communications Interface (SCI) : NvSciSync
NvMediaIJPESetAttributes
NvMediaStatus NvMediaIJPESetAttributes(const NvMediaIJPE *encoder, uint32_t attributeMask, const void *attributes)
Sets the JPEG encoder attributes.
NvMediaIJPEUnregisterNvSciSyncObj
NvMediaStatus NvMediaIJPEUnregisterNvSciSyncObj(const NvMediaIJPE *encoder, NvSciSyncObj nvscisync)
Unregisters an NvSciSyncObj with NvMediaIJPE.
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:164
NvMediaIJPEInsertPreNvSciSyncFence
NvMediaStatus NvMediaIJPEInsertPreNvSciSyncFence(const NvMediaIJPE *encoder, const NvSciSyncFence *prenvscisyncfence)
Sets an NvSciSyncFence as a prefence for an NvMediaIJPEFeedFrame() NvSciSyncFence operation.
NvMediaJPEGInstanceId
NvMediaJPEGInstanceId
Specifies NVJPG HW instance ID.
Definition: nvmedia_common_encode_decode.h:42
NvMediaIJPEGetEOFNvSciSyncFence
NvMediaStatus NvMediaIJPEGetEOFNvSciSyncFence(const NvMediaIJPE *encoder, NvSciSyncObj eofnvscisyncobj, NvSciSyncFence *eofnvscisyncfence)
Gets EOF NvSciSyncFence for an NvMediaIJPEFeedFrame() operation.
NvMediaIJPEFeedFrameQuant
NvMediaStatus NvMediaIJPEFeedFrameQuant(const NvMediaIJPE *encoder, NvSciBufObj bufObj, uint8_t *lumaQuant, uint8_t *chromaQuant, NvMediaJPEGInstanceId instanceId)
Encodes the specified bufObj with input Luma and Chroma quant tables.
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaIJPECreate
NvMediaIJPE * NvMediaIJPECreate(NvSciBufAttrList bufAttrList, uint8_t maxOutputBuffering, uint32_t maxBitstreamBytes, NvMediaJPEGInstanceId instanceId)
Creates a JPEG encoder object capable of turning a stream of surfaces of the inputFormat into a JPEG ...
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
A container constituting an attribute list which contains.
Definition: nvscibuf.h:3126
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:256
NvMediaIJPE
struct NvMediaIJPE NvMediaIJPE
An opaque NvMediaIJPE object created by NvMediaIJPECreate.
Definition: nvmedia_ijpe.h:160
nvscibuf.h
NVIDIA Software Communications Interface (SCI) : NvSciBuf
NvMediaJPEncAttributes::targetImageSize
uint32_t targetImageSize
A value to specify target encode size, initialized to 0xffffffff at NvMediaIJPE creation.
Definition: nvmedia_ijpe.h:122
NvMediaJPHuffmanTableSpecfication
image JPEG encoder HuffmanTable.
Definition: nvmedia_ijpe.h:100
NvMediaIJPEFillNvSciBufAttrList
NvMediaStatus NvMediaIJPEFillNvSciBufAttrList(NvMediaJPEGInstanceId instanceId, NvSciBufAttrList attrlist)
Fills the NvMediaIJPE specific NvSciBuf attributes which than then be used to allocate an NvSciBufObj...
NvMediaJPHuffmanTableSpecfication::values
uint8_t * values
Definition: nvmedia_ijpe.h:102
NvMediaJPEncAttributes
image JPEG encoder attributes.
Definition: nvmedia_ijpe.h:108
NvMediaIJPEDestroy
void NvMediaIJPEDestroy(NvMediaIJPE *encoder)
Destroys an NvMedia image JPEG encoder.
NvMediaJPEncAttributes::chromaAC
NvMediaJPHuffmanTableSpecfication * chromaAC
A Huffmann table for Chroma AC sample, initialized to NULL for using default table in JPEG specificat...
Definition: nvmedia_ijpe.h:154
NvMediaIJPEFeedFrame
NvMediaStatus NvMediaIJPEFeedFrame(const NvMediaIJPE *encoder, NvSciBufObj bufObj, uint8_t quality, NvMediaJPEGInstanceId instanceId)
Encodes the specified bufObj with input quality.
NvMediaJPEncAttributes::lumaAC
NvMediaJPHuffmanTableSpecfication * lumaAC
A Huffmann table for Luma AC sample, initialized to NULL for using default table in JPEG specificatio...
Definition: nvmedia_ijpe.h:142
nvmedia_common_encode.h
NVIDIA Media Interface: Common Types for Encoding
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:311
NvMediaIJPEGetBits
NvMediaStatus NvMediaIJPEGetBits(const NvMediaIJPE *encoder, uint32_t *numBytes, void *buffer, uint32_t flags)
Returns a frame's worth of bitstream into the provided buffer.
NvMediaJPEncAttributes::lumaDC
NvMediaJPHuffmanTableSpecfication * lumaDC
A Huffmann table for Luma DC sample, initialized to NULL for using default table in JPEG specificatio...
Definition: nvmedia_ijpe.h:136
NvMediaIJPEBitsAvailable
NvMediaStatus NvMediaIJPEBitsAvailable(const NvMediaIJPE *encoder, uint32_t *numBytesAvailable, NvMediaBlockingType blockingType, uint32_t millisecondTimeout)
Returns the encode status and number of bytes available for the next frame (if any).