Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.4 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    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).
    人人超碰97caoporen国产