NVIDIA DRIVE OS Linux SDK API Reference

6.0.6 Release
nvmedia_ijpe.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 
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 1
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 
238 NvMediaIJPE *
240  //NvMediaSurfaceType inputFormat,
241  NvSciBufAttrList bufAttrList,
242  uint8_t maxOutputBuffering,
243  uint32_t maxBitstreamBytes,
244  NvMediaJPEGInstanceId instanceId
245 );
246 
270 void NvMediaIJPEDestroy(NvMediaIJPE *encoder);
271 
325  const NvMediaIJPE *encoder,
326  NvSciBufObj bufObj,
327  uint8_t quality,
328  NvMediaJPEGInstanceId instanceId
329 );
330 
386  const NvMediaIJPE *encoder,
387  NvSciBufObj bufObj,
388  uint8_t *lumaQuant,
389  uint8_t *chromaQuant,
390  NvMediaJPEGInstanceId instanceId
391 );
392 
452  const NvMediaIJPE *encoder,
453  NvSciBufObj bufObj,
454  uint8_t *lumaQuant,
455  uint8_t *chromaQuant,
456  uint32_t targetImageSize,
457  NvMediaJPEGInstanceId instanceId
458 );
459 
494  const NvMediaIJPE *encoder,
495  uint32_t attributeMask,
496  const void *attributes
497 );
498 
550  const NvMediaIJPE *encoder,
551  uint32_t *numBytes,
552  void *buffer,
553  uint32_t flags
554 );
555 
601  const NvMediaIJPE *encoder,
602  uint32_t *numBytes,
603  uint32_t numBitstreamBuffers,
604  const NvMediaBitstreamBuffer *bitstreams,
605  uint32_t flags
606 );
607 
665  const NvMediaIJPE *encoder,
666  uint32_t *numBytesAvailable,
667  NvMediaBlockingType blockingType,
668  uint32_t millisecondTimeout
669 );
670 
727  const NvMediaIJPE *encoder,
728  NvSciBufObj bufObj
729 );
730 
785 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
788  const NvMediaIJPE *encoder,
789  NvSciBufObj bufObj
790 );
791 
792 
834  NvMediaJPEGInstanceId instanceId,
835  NvSciBufAttrList attrlist
836 );
837 
894  const NvMediaIJPE *encoder,
895  NvSciSyncAttrList attrlist,
896  NvMediaNvSciSyncClientType clienttype
897 );
898 
899 
955  const NvMediaIJPE *encoder,
956  NvMediaNvSciSyncObjType syncobjtype,
957  NvSciSyncObj nvscisync
958 );
959 
1021  const NvMediaIJPE *encoder,
1022  NvSciSyncObj nvscisync
1023 );
1024 
1071  const NvMediaIJPE *encoder,
1072  NvSciSyncObj nvscisyncEOF
1073 );
1074 
1135  const NvMediaIJPE *encoder,
1136  const NvSciSyncFence *prenvscisyncfence
1137 );
1138 
1198  const NvMediaIJPE *encoder,
1199  NvSciSyncObj eofnvscisyncobj,
1200  NvSciSyncFence *eofnvscisyncfence
1201 );
1202 
1248  const NvMediaIJPE *encoder,
1249  NvSciSyncObj nvscisyncSOF
1250 );
1251 
1301  const NvMediaIJPE *encoder,
1302  NvSciSyncObj sofnvscisyncobj,
1303  NvSciSyncFence *sofnvscisyncfence
1304 );
1305 
1306 /*
1307  * @defgroup 6x_history_nvmedia_ijpe History
1308  * Provides change history for the NvMedia Image Jpeg Encode API.
1309  *
1310  * \section 6x_history_nvmedia_ijpe Version History
1311  *
1312  * <b> Version 1.0 </b> September 28, 2021
1313  * - Initial release
1314  *
1315  */
1316 
1319 #ifdef __cplusplus
1320 } /* extern "C" */
1321 #endif
1322 
1323 #endif /* NVMEDIA_IJPE_H */
NvMediaIJPERegisterNvSciSyncObj
NvMediaStatus NvMediaIJPERegisterNvSciSyncObj(const NvMediaIJPE *encoder, NvMediaNvSciSyncObjType syncobjtype, NvSciSyncObj nvscisync)
Registers an NvSciSyncObj with NvMediaIJPE.
NvMediaIJPESetNvSciSyncObjforSOF
NvMediaStatus NvMediaIJPESetNvSciSyncObjforSOF(const NvMediaIJPE *encoder, NvSciSyncObj nvscisyncSOF)
Specifies the NvSciSyncObj to be used for an SOF NvSciSyncFence.
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.
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:322
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
A memory object is a container holding the reconciled NvSciBufAttrList defining constraints of the bu...
Definition: nvscibuf.h:2740
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
NvMediaIJPEGetSOFNvSciSyncFence
NvMediaStatus NvMediaIJPEGetSOFNvSciSyncFence(const NvMediaIJPE *encoder, NvSciSyncObj sofnvscisyncobj, NvSciSyncFence *sofnvscisyncfence)
Gets SOF NvSciSyncFence for an NvMediaIJPEFeedFrame() operation.
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
NvMediaIJPEGetBitsEx
NvMediaStatus NvMediaIJPEGetBitsEx(const NvMediaIJPE *encoder, uint32_t *numBytes, uint32_t numBitstreamBuffers, const NvMediaBitstreamBuffer *bitstreams, uint32_t flags)
Performs the same operation as NvMediaIJPEGetBits() except NvMediaIJPEGetBits() consumes an array of ...
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 ...
NvMediaBitstreamBuffer
Holds an application data buffer containing compressed video data.
Definition: nvmedia_common_encode_decode.h:89
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
A container constituting an attribute list which contains.
Definition: nvscibuf.h:2758
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:248
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:303
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).