NVIDIA DRIVE OS Linux SDK API Reference

6.0.7 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 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 
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 
656  const NvMediaIJPE *encoder,
657  uint32_t *numBytes,
658  uint32_t numBitstreamBuffers,
659  const NvMediaBitstreamBuffer *bitstreams,
660  uint32_t flags
661 );
662 
720  const NvMediaIJPE *encoder,
721  uint32_t *numBytesAvailable,
722  NvMediaBlockingType blockingType,
723  uint32_t millisecondTimeout
724 );
725 
782  const NvMediaIJPE *encoder,
783  NvSciBufObj bufObj
784 );
785 
840 // coverity[misra_c_2012_rule_8_7_violation : FALSE]
843  const NvMediaIJPE *encoder,
844  NvSciBufObj bufObj
845 );
846 
847 
895  NvMediaJPEGInstanceId instanceId,
896  NvSciBufAttrList attrlist
897 );
898 
955  const NvMediaIJPE *encoder,
956  NvSciSyncAttrList attrlist,
957  NvMediaNvSciSyncClientType clienttype
958 );
959 
960 
1016  const NvMediaIJPE *encoder,
1017  NvMediaNvSciSyncObjType syncobjtype,
1018  NvSciSyncObj nvscisync
1019 );
1020 
1082  const NvMediaIJPE *encoder,
1083  NvSciSyncObj nvscisync
1084 );
1085 
1132  const NvMediaIJPE *encoder,
1133  NvSciSyncObj nvscisyncEOF
1134 );
1135 
1196  const NvMediaIJPE *encoder,
1197  const NvSciSyncFence *prenvscisyncfence
1198 );
1199 
1259  const NvMediaIJPE *encoder,
1260  NvSciSyncObj eofnvscisyncobj,
1261  NvSciSyncFence *eofnvscisyncfence
1262 );
1263 
1264 
1267 #ifdef __cplusplus
1268 } /* extern "C" */
1269 #endif
1270 
1271 #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:323
NvSciBufObj
struct NvSciBufObjRefRec * NvSciBufObj
A memory object is a container holding the reconciled NvSciBufAttrList defining constraints of the bu...
Definition: nvscibuf.h:3105
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
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:3123
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:249
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:304
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).