NVIDIA DRIVE OS Linux SDK API Reference

6.0.4 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 
237 NvMediaIJPE *
239  //NvMediaSurfaceType inputFormat,
240  NvSciBufAttrList bufAttrList,
241  uint8_t maxOutputBuffering,
242  uint32_t maxBitstreamBytes,
243  NvMediaJPEGInstanceId instanceId
244 );
245 
269 void NvMediaIJPEDestroy(NvMediaIJPE *encoder);
270 
323  const NvMediaIJPE *encoder,
324  NvSciBufObj bufObj,
325  uint8_t quality,
326  NvMediaJPEGInstanceId instanceId
327 );
328 
383  const NvMediaIJPE *encoder,
384  NvSciBufObj bufObj,
385  uint8_t *lumaQuant,
386  uint8_t *chromaQuant,
387  NvMediaJPEGInstanceId instanceId
388 );
389 
448  const NvMediaIJPE *encoder,
449  NvSciBufObj bufObj,
450  uint8_t *lumaQuant,
451  uint8_t *chromaQuant,
452  uint32_t targetImageSize,
453  NvMediaJPEGInstanceId instanceId
454 );
455 
490  const NvMediaIJPE *encoder,
491  uint32_t attributeMask,
492  const void *attributes
493 );
494 
546  const NvMediaIJPE *encoder,
547  uint32_t *numBytes,
548  void *buffer,
549  uint32_t flags
550 );
551 
597  const NvMediaIJPE *encoder,
598  uint32_t *numBytes,
599  uint32_t numBitstreamBuffers,
600  const NvMediaBitstreamBuffer *bitstreams,
601  uint32_t flags
602 );
603 
661  const NvMediaIJPE *encoder,
662  uint32_t *numBytesAvailable,
663  NvMediaBlockingType blockingType,
664  uint32_t millisecondTimeout
665 );
666 
723  const NvMediaIJPE *encoder,
724  NvSciBufObj bufObj
725 );
726 
781 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
784  const NvMediaIJPE *encoder,
785  NvSciBufObj bufObj
786 );
787 
788 
829  NvMediaJPEGInstanceId instanceId,
830  NvSciBufAttrList attrlist
831 );
832 
882  const NvMediaIJPE *encoder,
883  NvSciSyncAttrList attrlist,
884  NvMediaNvSciSyncClientType clienttype
885 );
886 
887 
943  const NvMediaIJPE *encoder,
944  NvMediaNvSciSyncObjType syncobjtype,
945  NvSciSyncObj nvscisync
946 );
947 
1009  const NvMediaIJPE *encoder,
1010  NvSciSyncObj nvscisync
1011 );
1012 
1059  const NvMediaIJPE *encoder,
1060  NvSciSyncObj nvscisyncEOF
1061 );
1062 
1123  const NvMediaIJPE *encoder,
1124  const NvSciSyncFence *prenvscisyncfence
1125 );
1126 
1186  const NvMediaIJPE *encoder,
1187  NvSciSyncObj eofnvscisyncobj,
1188  NvSciSyncFence *eofnvscisyncfence
1189 );
1190 
1236  const NvMediaIJPE *encoder,
1237  NvSciSyncObj nvscisyncSOF
1238 );
1239 
1289  const NvMediaIJPE *encoder,
1290  NvSciSyncObj sofnvscisyncobj,
1291  NvSciSyncFence *sofnvscisyncfence
1292 );
1293 
1294 /*
1295  * @defgroup 6x_history_nvmedia_ijpe History
1296  * Provides change history for the NvMedia Image Jpeg Encode API.
1297  *
1298  * \section 6x_history_nvmedia_ijpe Version History
1299  *
1300  * <b> Version 1.0 </b> September 28, 2021
1301  * - Initial release
1302  *
1303  */
1304 
1307 #ifdef __cplusplus
1308 } /* extern "C" */
1309 #endif
1310 
1311 #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:187
NvMediaNvSciSyncClientType
NvMediaNvSciSyncClientType
NvMedia NvSciSync Client Type.
Definition: nvmedia_core.h:174
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:314
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
A memory object is a container holding the reconciled NvSciBufAttrList defining constraints of the bu...
Definition: nvscibuf.h:2717
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:149
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:87
NvSciBufAttrList
struct NvSciBufAttrListRec * NvSciBufAttrList
A container constituting an attribute list which contains.
Definition: nvscibuf.h:2735
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:240
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:295
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).