https://docs.nvidia.com/cuda/npp/group__image__compression.html#gab4e62e3527413293fa3d9e298ec1fe93
NVIDIA 2D Image And Signal Performance Primitives (NPP) Version 10.1.1 |
Modules | Data Structures | Typedefs | Functions
Compression
NPP Image Processing
Image compression primitives. More...
Modules |
|
Quantization Functions | |
Data Structures |
|
struct | NppiJpegFrameDescr |
JPEG frame descriptor. More... | |
struct | NppiJpegScanDescr |
JPEG scan descriptor. More... | |
struct | NppiJpegDecodeJob |
JPEG decode job used by nppiJpegDecodeJob (see that for more documentation) More... | |
struct | NppiJpegDecodeJobMemory |
Memory buffers used by one decode job. More... | |
Typedefs |
|
typedef struct NppiDecodeHuffmanSpec |
NppiDecodeHuffmanSpec |
typedef struct NppiEncodeHuffmanSpec |
NppiEncodeHuffmanSpec |
Functions |
|
NppStatus | nppiDecodeHuffmanSpecGetBufSize_JPEG (int *pSize) |
Returns the length of the NppiDecodeHuffmanSpec structure. More... | |
NppStatus | nppiDecodeHuffmanSpecInitHost_JPEG (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiDecodeHuffmanSpec *pHuffmanSpec) |
Creates a Huffman table in a format that is suitable for the decoder on the host. More... | |
NppStatus | nppiDecodeHuffmanSpecInitAllocHost_JPEG (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiDecodeHuffmanSpec **ppHuffmanSpec) |
Allocates memory and creates a Huffman table in a format that is suitable for the decoder on the host. More... | |
NppStatus | nppiDecodeHuffmanSpecFreeHost_JPEG (NppiDecodeHuffmanSpec *pHuffmanSpec) |
Frees the host memory allocated by nppiDecodeHuffmanSpecInitAllocHost_JPEG. More... | |
NppStatus | nppiDecodeHuffmanScanHost_JPEG_8u16s_P1R_Ctx (const Npp8u *pSrc, Npp32s nLength, Npp32s restartInterval, Npp32s Ss, Npp32s Se, Npp32s Ah, Npp32s Al, Npp16s *pDst, Npp32s nDstStep, NppiDecodeHuffmanSpec *pHuffmanTableDC, NppiDecodeHuffmanSpec *pHuffmanTableAC, NppiSize oSizeROI, NppStreamContext nppStreamCtx) |
Huffman Decoding of the JPEG decoding on the host. More... | |
NppStatus | nppiDecodeHuffmanScanHost_JPEG_8u16s_P1R (const Npp8u *pSrc, Npp32s nLength, Npp32s restartInterval, Npp32s Ss, Npp32s Se, Npp32s Ah, Npp32s Al, Npp16s *pDst, Npp32s nDstStep, NppiDecodeHuffmanSpec *pHuffmanTableDC, NppiDecodeHuffmanSpec *pHuffmanTableAC, NppiSize oSizeROI) |
NppStatus | nppiDecodeHuffmanScanHost_JPEG_8u16s_P3R_Ctx (const Npp8u *pSrc, Npp32s nLength, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp16s *apDst[3], Npp32s aDstStep[3], NppiDecodeHuffmanSpec*apHuffmanDCTable[3], NppiDecodeHuffmanSpec *apHuffmanACTable[3], NppiSize aSizeROI[3], NppStreamContext nppStreamCtx) |
Huffman Decoding of the JPEG decoding on the host. More... | |
NppStatus | nppiDecodeHuffmanScanHost_JPEG_8u16s_P3R (const Npp8u *pSrc, Npp32s nLength, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp16s *apDst[3], Npp32s aDstStep[3], NppiDecodeHuffmanSpec *apHuffmanDCTable[3], NppiDecodeHuffmanSpec *apHuffmanACTable[3], NppiSize aSizeROI[3]) |
NppStatus | nppiEncodeHuffmanSpecGetBufSize_JPEG (int *pSize) |
Returns the length of the NppiEncodeHuffmanSpec structure. More... | |
NppStatus | nppiEncodeHuffmanSpecInit_JPEG_Ctx (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiEncodeHuffmanSpec *pHuffmanSpec, NppStreamContext nppStreamCtx) |
Creates a Huffman table in a format that is suitable for the encoder. More... | |
NppStatus | nppiEncodeHuffmanSpecInit_JPEG (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiEncodeHuffmanSpec *pHuffmanSpec) |
NppStatus | nppiEncodeHuffmanSpecInitAlloc_JPEG_Ctx (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiEncodeHuffmanSpec **ppHuffmanSpec, NppStreamContext nppStreamCtx) |
Allocates memory and creates a Huffman table in a format that is suitable for the encoder. More... | |
NppStatus | nppiEncodeHuffmanSpecInitAlloc_JPEG (const Npp8u *pRawHuffmanTable, NppiHuffmanTableType eTableType, NppiEncodeHuffmanSpec **ppHuffmanSpec) |
NppStatus | nppiEncodeHuffmanSpecFree_JPEG (NppiEncodeHuffmanSpec *pHuffmanSpec) |
Frees the memory allocated by nppiEncodeHuffmanSpecInitAlloc_JPEG. More... | |
NppStatus | nppiEncodeHuffmanScan_JPEG_8u16s_P1R_Ctx (const Npp16s *pSrc, Npp32s nSrcStep, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *nLength, NppiEncodeHuffmanSpec *pHuffmanTableDC, NppiEncodeHuffmanSpec *pHuffmanTableAC, NppiSize oSizeROI, Npp8u *pTempStorage, NppStreamContext nppStreamCtx) |
Huffman Encoding of the JPEG Encoding. More... | |
NppStatus | nppiEncodeHuffmanScan_JPEG_8u16s_P1R (const Npp16s *pSrc, Npp32s nSrcStep, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *nLength, NppiEncodeHuffmanSpec *pHuffmanTableDC, NppiEncodeHuffmanSpec *pHuffmanTableAC, NppiSize oSizeROI, Npp8u *pTempStorage) |
NppStatus | nppiEncodeHuffmanScan_JPEG_8u16s_P3R_Ctx (Npp16s *apSrc[3], Npp32s aSrcStep[3], Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *nLength, NppiEncodeHuffmanSpec *apHuffmanDCTable[3], NppiEncodeHuffmanSpec *apHuffmanACTable[3], NppiSize aSizeROI[3], Npp8u *pTempStorage, NppStreamContext nppStreamCtx) |
Huffman Encoding of the JPEG Encoding. More... | |
NppStatus | nppiEncodeHuffmanScan_JPEG_8u16s_P3R (Npp16s *apSrc[3], Npp32s aSrcStep[3], Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *nLength, NppiEncodeHuffmanSpec *apHuffmanDCTable[3], NppiEncodeHuffmanSpec *apHuffmanACTable[3], NppiSize aSizeROI[3], Npp8u *pTempStorage) |
NppStatus | nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P1R_Ctx (const Npp16s *pSrc, Npp32s nSrcStep, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *pLength, Npp8u *hpCodesDC, Npp8u *hpTableDC, Npp8u*hpCodesAC, Npp8u *hpTableAC, NppiEncodeHuffmanSpec *pHuffmanDCTable, NppiEncodeHuffmanSpec *pHuffmanACTable, NppiSize oSizeROI, Npp8u *pTempStorage, NppStreamContext nppStreamCtx) |
Optimize Huffman Encoding of the JPEG Encoding. More... | |
NppStatus | nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P1R (const Npp16s *pSrc, Npp32s nSrcStep, Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *pLength, Npp8u *hpCodesDC, Npp8u *hpTableDC, Npp8u*hpCodesAC, Npp8u *hpTableAC, NppiEncodeHuffmanSpec *pHuffmanDCTable, NppiEncodeHuffmanSpec *pHuffmanACTable, NppiSize oSizeROI, Npp8u *pTempStorage) |
NppStatus | nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P3R_Ctx (Npp16s *apSrc[3], Npp32s aSrcStep[3], Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *pLength, Npp8u *hpCodesDC[3], Npp8u *hpTableDC[3], Npp8u *hpCodesAC[3], Npp8u *hpTableAC[3], NppiEncodeHuffmanSpec *apHuffmanDCTable[3], NppiEncodeHuffmanSpec *apHuffmanACTable[3], NppiSize oSizeROI[3], Npp8u *pTempStorage, NppStreamContext nppStreamCtx) |
Optimize Huffman Encoding of the JPEG Encoding. More... | |
NppStatus | nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P3R (Npp16s *apSrc[3], Npp32s aSrcStep[3], Npp32s nRestartInterval, Npp32s nSs, Npp32s nSe, Npp32s nAh, Npp32s nAl, Npp8u *pDst, Npp32s *pLength, Npp8u *hpCodesDC[3], Npp8u *hpTableDC[3], Npp8u*hpCodesAC[3], Npp8u *hpTableAC[3], NppiEncodeHuffmanSpec *apHuffmanDCTable[3], NppiEncodeHuffmanSpec *apHuffmanACTable[3], NppiSize oSizeROI[3], Npp8u *pTempStorage) |
NppStatus | nppiEncodeHuffmanGetSize (NppiSize oSize, int nChannels, size_t *pBufSize) |
Calculates the size of the temporary buffer for baseline Huffman encoding. More... | |
NppStatus | nppiEncodeOptimizeHuffmanGetSize (NppiSize oSize, int nChannels, int *pBufSize) |
Calculates the size of the temporary buffer for optimize Huffman coding. More... | |
NppStatus | nppiDCTInv4x4_WebP_16s_C1R_Ctx (const Npp16s *pSrc, int nSrcStep, Npp16s *pDst, int nDstStep, NppiSize oSizeROI, NppStreamContext nppStreamCtx) |
Inverse DCT in WebP decoding. More... | |
NppStatus | nppiDCTInv4x4_WebP_16s_C1R (const Npp16s *pSrc, int nSrcStep, Npp16s *pDst, int nDstStep, NppiSize oSizeROI) |
Hybrid CPU+GPU JPEG Huffman decoding |
|
These functions and structs are used for Huffman decoding part of JPEG decode pipeline. It uses hybrid CPU + GPU approach. See nppiJpegDecodeJob for more documentation and example |
|
enum | NppiJpegDecodeJobKind { NPPI_JPEG_DECODE_SIMPLE, NPPI_JPEG_DECODE_PRE, NPPI_JPEG_DECODE_CPU, NPPI_JPEG_DECODE_GPU, NPPI_JPEG_DECODE_MEMZERO, NPPI_JPEG_DECODE_FINALIZE } |
Type of job to execute. More... | |
NppStatus | nppiJpegDecodeJobMemorySize (const NppiJpegDecodeJob *pJob, size_t *aSize) |
Calculates sizes of additional buffers used by the job. More... | |
NppStatus | nppiJpegDecodeJob_Ctx (const NppiJpegDecodeJob *pJob, const NppiJpegDecodeJobMemory *pMemory, NppStreamContext nppStreamCtx) |
Executes a job – part of decoding. More... | |
NppStatus | nppiJpegDecodeJob (const NppiJpegDecodeJob *pJob, const NppiJpegDecodeJobMemory *pMemory) |
NppStatus | nppiJpegDecodeJobCreateMemzero (NppiJpegDecodeJob *pJob) |
Initializes a job that has to be called at the beginning of decoding. More... | |
NppStatus | nppiJpegDecodeJobCreateFinalize (NppiJpegDecodeJob *pJob) |
Initializes a job that has to be called at the end of decoding, in order to convert temporary representation of DCT coefficients to the final one. More... | |
size_t | nppiJpegDecodeGetScanDeadzoneSize (void) |
This function returns how much additional memory has to be available after the end of compressed scan data. More... | |
size_t | nppiJpegDecodeGetDCTBufferSize (NppiSize oBlocks) |
Returns how much memory has to be allocated for DCT coefficient buffers declared in NppiJpegDecodeJobMemory. More... | |
#define | NPPI_JPEG_DECODE_N_BUFFERS 3 |
Number of additional buffers that may be used by JPEG decode jobs. More... | |
Image compression primitives.
The JPEG standard defines a flow of level shift, DCT and quantization for forward JPEG transform and inverse level shift, IDCT and de-quantization for inverse JPEG transform. This group has the functions for both forward and inverse functions.
These functions can be found in the nppicom library. Linking to only the sub-libraries that you use can significantly save link time, application load time, and CUDA runtime startup time when using dynamic libraries.
#define NPPI_JPEG_DECODE_N_BUFFERS 3 |
Number of additional buffers that may be used by JPEG decode jobs.
This number may change in the future, but it remain small.
See Also
NppiJpegDecodeJobMemory
typedef struct NppiDecodeHuffmanSpec NppiDecodeHuffmanSpec |
typedef struct NppiEncodeHuffmanSpec NppiEncodeHuffmanSpec |
enum NppiJpegDecodeJobKind |
Type of job to execute.
Usually you will need just SIMPLE for each scan, one MEMZERO at the beginning and FINALIZE at the end. See the example in nppiJpegDecodeJob
SIMPLE can be split into multiple jobs: PRE, CPU & GPU. Please note that if you don't use SIMPLE, you man need to add some memcopies and synchronizes as described in nppiJpegDecodeJob.
See Also
nppiJpegDecodeJob
Enumerator | |
---|---|
NPPI_JPEG_DECODE_SIMPLE | Decode whole scan using a single job. |
NPPI_JPEG_DECODE_PRE | Preprocessing scan on GPU. |
NPPI_JPEG_DECODE_CPU | Part of decoding run on CPU. |
NPPI_JPEG_DECODE_GPU | Part of decoding run on GPU. |
NPPI_JPEG_DECODE_MEMZERO | Zeroing memory before decoding. |
NPPI_JPEG_DECODE_FINALIZE | Change memory representation of DCT coefficients to final. |
NppStatus nppiDCTInv4x4_WebP_16s_C1R | ( | const Npp16s * | pSrc, |
int | nSrcStep, | ||
Npp16s * | pDst, | ||
int | nDstStep, | ||
NppiSize | oSizeROI | ||
) |
NppStatus nppiDCTInv4x4_WebP_16s_C1R_Ctx | ( | const Npp16s * | pSrc, |
int | nSrcStep, | ||
Npp16s * | pDst, | ||
int | nDstStep, | ||
NppiSize | oSizeROI, | ||
NppStreamContext | nppStreamCtx | ||
) |
Inverse DCT in WebP decoding.
Input is the bitstream that contains the coefficients of 16x16 blocks. These coefficients are based on a 4x4 sub-block unit, e.g., Coeffs in 0th 4x4 block, 1st 4x4 block 2nd 4x4 block, etc. Output is the coefficients after inverse DCT transform. The output is put in an image format (i.e. raster scan order), different from the input order.
Parameters
pSrc | Source-Image Pointer. |
nSrcStep | Source-Image Line Step. |
pDst | Destination-Image Pointer. |
nDstStep | Destination-Image Line Step. |
oSizeROI | Region-of-Interest (ROI). |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiDecodeHuffmanScanHost_JPEG_8u16s_P1R | ( | const Npp8u * | pSrc, |
Npp32s | nLength, | ||
Npp32s | restartInterval, | ||
Npp32s | Ss, | ||
Npp32s | Se, | ||
Npp32s | Ah, | ||
Npp32s | Al, | ||
Npp16s * | pDst, | ||
Npp32s | nDstStep, | ||
NppiDecodeHuffmanSpec * | pHuffmanTableDC, | ||
NppiDecodeHuffmanSpec * | pHuffmanTableAC, | ||
NppiSize | oSizeROI | ||
) |
NppStatus nppiDecodeHuffmanScanHost_JPEG_8u16s_P1R_Ctx | ( | const Npp8u * | pSrc, |
Npp32s | nLength, | ||
Npp32s | restartInterval, | ||
Npp32s | Ss, | ||
Npp32s | Se, | ||
Npp32s | Ah, | ||
Npp32s | Al, | ||
Npp16s * | pDst, | ||
Npp32s | nDstStep, | ||
NppiDecodeHuffmanSpec * | pHuffmanTableDC, | ||
NppiDecodeHuffmanSpec * | pHuffmanTableAC, | ||
NppiSize | oSizeROI, | ||
NppStreamContext | nppStreamCtx | ||
) |
Huffman Decoding of the JPEG decoding on the host.
Input is expected in byte stuffed huffman encoded JPEG scan and output is expected to be 64x1 macro blocks.
Parameters
pSrc | Byte-stuffed huffman encoded JPEG scan. |
nLength | Byte length of the input. |
restartInterval | Restart Interval, see JPEG standard. |
Ss | Start Coefficient, see JPEG standard. |
Se | End Coefficient, see JPEG standard. |
Ah | Bit Approximation High, see JPEG standard. |
Al | Bit Approximation Low, see JPEG standard. |
pDst | Destination-Image Pointer. |
nDstStep | Destination-Image Line Step. |
pHuffmanTableDC | DC Huffman table. |
pHuffmanTableAC | AC Huffman table. |
oSizeROI | Region-of-Interest (ROI). |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiDecodeHuffmanScanHost_JPEG_8u16s_P3R | ( | const Npp8u * | pSrc, |
Npp32s | nLength, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp16s * | apDst[3], | ||
Npp32s | aDstStep[3], | ||
NppiDecodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiDecodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | aSizeROI[3] | ||
) |
NppStatus nppiDecodeHuffmanScanHost_JPEG_8u16s_P3R_Ctx | ( | const Npp8u * | pSrc, |
Npp32s | nLength, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp16s * | apDst[3], | ||
Npp32s | aDstStep[3], | ||
NppiDecodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiDecodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | aSizeROI[3], | ||
NppStreamContext | nppStreamCtx | ||
) |
Huffman Decoding of the JPEG decoding on the host.
Input is expected in byte stuffed huffman encoded JPEG scan and output is expected to be 64x1 macro blocks.
Parameters
pSrc | Byte-stuffed huffman encoded JPEG scan. |
nLength | Byte length of the input. |
nRestartInterval | Restart Interval, see JPEG standard. |
nSs | Start Coefficient, see JPEG standard. |
nSe | End Coefficient, see JPEG standard. |
nAh | Bit Approximation High, see JPEG standard. |
nAl | Bit Approximation Low, see JPEG standard. |
apDst | Destination-Image Pointer. |
aDstStep | Destination-Image Line Step. |
apHuffmanDCTable | DC Huffman tables. |
apHuffmanACTable | AC Huffman tables. |
aSizeROI | Region-of-Interest (ROI). |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiDecodeHuffmanSpecFreeHost_JPEG | ( | NppiDecodeHuffmanSpec * | pHuffmanSpec | ) |
Frees the host memory allocated by nppiDecodeHuffmanSpecInitAllocHost_JPEG.
Parameters
pHuffmanSpec | Pointer to the Huffman table for the decoder |
NppStatus nppiDecodeHuffmanSpecGetBufSize_JPEG | ( | int * | pSize | ) |
Returns the length of the NppiDecodeHuffmanSpec structure.
Parameters
pSize | Pointer to a variable that will receive the length of the NppiDecodeHuffmanSpec structure. |
Returns
Error codes:
NppStatus nppiDecodeHuffmanSpecInitAllocHost_JPEG | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiDecodeHuffmanSpec ** | ppHuffmanSpec | ||
) |
Allocates memory and creates a Huffman table in a format that is suitable for the decoder on the host.
Parameters
pRawHuffmanTable | Huffman table formated as specified in the JPEG standard. |
eTableType | Enum specifying type of table (nppiDCTable or nppiACTable). |
ppHuffmanSpec | Pointer to returned pointer to the Huffman table for the decoder |
Returns
Error codes:
NppStatus nppiDecodeHuffmanSpecInitHost_JPEG | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiDecodeHuffmanSpec * | pHuffmanSpec | ||
) |
Creates a Huffman table in a format that is suitable for the decoder on the host.
Parameters
pRawHuffmanTable | Huffman table formated as specified in the JPEG standard. |
eTableType | Enum specifying type of table (nppiDCTable or nppiACTable). |
pHuffmanSpec | Pointer to the Huffman table for the decoder |
Returns
Error codes:
NppStatus nppiEncodeHuffmanGetSize | ( | NppiSize | oSize, |
int | nChannels, | ||
size_t * | pBufSize | ||
) |
Calculates the size of the temporary buffer for baseline Huffman encoding.
See Also
nppiEncodeHuffmanScan_JPEG_8u16s_P1R(), nppiEncodeHuffmanScan_JPEG_8u16s_P3R().
Parameters
oSize | Image Dimension. |
nChannels | Number of channels in the image. |
pBufSize | Pointer to variable that returns the size of the temporary buffer. |
Returns
NPP_SUCCESS Indicates no error. Any other value indicates an error or a warning
NPP_SIZE_ERROR Indicates an error condition if any image dimension has zero or negative value
NPP_NULL_POINTER_ERROR Indicates an error condition if pBufSize pointer is NULL
NppStatus nppiEncodeHuffmanScan_JPEG_8u16s_P1R | ( | const Npp16s * | pSrc, |
Npp32s | nSrcStep, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | nLength, | ||
NppiEncodeHuffmanSpec * | pHuffmanTableDC, | ||
NppiEncodeHuffmanSpec * | pHuffmanTableAC, | ||
NppiSize | oSizeROI, | ||
Npp8u * | pTempStorage | ||
) |
NppStatus nppiEncodeHuffmanScan_JPEG_8u16s_P1R_Ctx | ( | const Npp16s * | pSrc, |
Npp32s | nSrcStep, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | nLength, | ||
NppiEncodeHuffmanSpec * | pHuffmanTableDC, | ||
NppiEncodeHuffmanSpec * | pHuffmanTableAC, | ||
NppiSize | oSizeROI, | ||
Npp8u * | pTempStorage, | ||
NppStreamContext | nppStreamCtx | ||
) |
Huffman Encoding of the JPEG Encoding.
Input is expected to be 64x1 macro blocks and output is expected as byte stuffed huffman encoded JPEG scan.
Parameters
pSrc | Destination-Image Pointer. |
nSrcStep | Destination-Image Line Step. |
nRestartInterval | Restart Interval, see JPEG standard. Currently only values <=0 are supported. |
nSs | Start Coefficient, see JPEG standard. |
nSe | End Coefficient, see JPEG standard. |
nAh | Bit Approximation High, see JPEG standard. |
nAl | Bit Approximation Low, see JPEG standard. |
pDst | Byte-stuffed huffman encoded JPEG scan. |
nLength | Byte length of the huffman encoded JPEG scan. |
pHuffmanTableDC | DC Huffman table. |
pHuffmanTableAC | AC Huffman table. |
oSizeROI | Region-of-Interest (ROI). |
pTempStorage | Temporary storage. |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiEncodeHuffmanScan_JPEG_8u16s_P3R | ( | Npp16s * | apSrc[3], |
Npp32s | aSrcStep[3], | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | nLength, | ||
NppiEncodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | aSizeROI[3], | ||
Npp8u * | pTempStorage | ||
) |
NppStatus nppiEncodeHuffmanScan_JPEG_8u16s_P3R_Ctx | ( | Npp16s * | apSrc[3], |
Npp32s | aSrcStep[3], | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | nLength, | ||
NppiEncodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | aSizeROI[3], | ||
Npp8u * | pTempStorage, | ||
NppStreamContext | nppStreamCtx | ||
) |
Huffman Encoding of the JPEG Encoding.
Input is expected to be 64x1 macro blocks and output is expected as byte stuffed huffman encoded JPEG scan.
Parameters
apSrc | Destination-Image Pointer. |
aSrcStep | Destination-Image Line Step. |
nRestartInterval | Restart Interval, see JPEG standard. Currently only values <=0 are supported. |
nSs | Start Coefficient, see JPEG standard. |
nSe | End Coefficient, see JPEG standard. |
nAh | Bit Approximation High, see JPEG standard. |
nAl | Bit Approximation Low, see JPEG standard. |
pDst | Byte-stuffed huffman encoded JPEG scan. |
nLength | Byte length of the huffman encoded JPEG scan. |
apHuffmanDCTable | DC Huffman tables. |
apHuffmanACTable | AC Huffman tables. |
aSizeROI | Region-of-Interest (ROI). |
pTempStorage | Temporary storage. |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiEncodeHuffmanSpecFree_JPEG | ( | NppiEncodeHuffmanSpec * | pHuffmanSpec | ) |
Frees the memory allocated by nppiEncodeHuffmanSpecInitAlloc_JPEG.
Parameters
pHuffmanSpec | Pointer to the Huffman table for the encoder |
NppStatus nppiEncodeHuffmanSpecGetBufSize_JPEG | ( | int * | pSize | ) |
Returns the length of the NppiEncodeHuffmanSpec structure.
Parameters
pSize | Pointer to a variable that will receive the length of the NppiEncodeHuffmanSpec structure. |
Returns
Error codes:
NppStatus nppiEncodeHuffmanSpecInit_JPEG | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiEncodeHuffmanSpec * | pHuffmanSpec | ||
) |
NppStatus nppiEncodeHuffmanSpecInit_JPEG_Ctx | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiEncodeHuffmanSpec * | pHuffmanSpec, | ||
NppStreamContext | nppStreamCtx | ||
) |
Creates a Huffman table in a format that is suitable for the encoder.
Parameters
pRawHuffmanTable | Huffman table formated as specified in the JPEG standard. |
eTableType | Enum specifying type of table (nppiDCTable or nppiACTable). |
pHuffmanSpec | Pointer to the Huffman table for the decoder |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiEncodeHuffmanSpecInitAlloc_JPEG | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiEncodeHuffmanSpec ** | ppHuffmanSpec | ||
) |
NppStatus nppiEncodeHuffmanSpecInitAlloc_JPEG_Ctx | ( | const Npp8u * | pRawHuffmanTable, |
NppiHuffmanTableType | eTableType, | ||
NppiEncodeHuffmanSpec ** | ppHuffmanSpec, | ||
NppStreamContext | nppStreamCtx | ||
) |
Allocates memory and creates a Huffman table in a format that is suitable for the encoder.
Parameters
pRawHuffmanTable | Huffman table formated as specified in the JPEG standard. |
eTableType | Enum specifying type of table (nppiDCTable or nppiACTable). |
ppHuffmanSpec | Pointer to returned pointer to the Huffman table for the encoder |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiEncodeOptimizeHuffmanGetSize | ( | NppiSize | oSize, |
int | nChannels, | ||
int * | pBufSize | ||
) |
Calculates the size of the temporary buffer for optimize Huffman coding.
Parameters
oSize | Image Dimension. |
nChannels | Number of channels in the image. |
pBufSize | Pointer to variable that returns the size of the temporary buffer. |
Returns
NPP_SUCCESS Indicates no error. Any other value indicates an error or a warning
NPP_SIZE_ERROR Indicates an error condition if any image dimension has zero or negative value
NPP_NULL_POINTER_ERROR Indicates an error condition if pBufSize pointer is NULL
NppStatus nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P1R | ( | const Npp16s * | pSrc, |
Npp32s | nSrcStep, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | pLength, | ||
Npp8u * | hpCodesDC, | ||
Npp8u * | hpTableDC, | ||
Npp8u * | hpCodesAC, | ||
Npp8u * | hpTableAC, | ||
NppiEncodeHuffmanSpec * | pHuffmanDCTable, | ||
NppiEncodeHuffmanSpec * | pHuffmanACTable, | ||
NppiSize | oSizeROI, | ||
Npp8u * | pTempStorage | ||
) |
NppStatus nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P1R_Ctx | ( | const Npp16s * | pSrc, |
Npp32s | nSrcStep, | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | pLength, | ||
Npp8u * | hpCodesDC, | ||
Npp8u * | hpTableDC, | ||
Npp8u * | hpCodesAC, | ||
Npp8u * | hpTableAC, | ||
NppiEncodeHuffmanSpec * | pHuffmanDCTable, | ||
NppiEncodeHuffmanSpec * | pHuffmanACTable, | ||
NppiSize | oSizeROI, | ||
Npp8u * | pTempStorage, | ||
NppStreamContext | nppStreamCtx | ||
) |
Optimize Huffman Encoding of the JPEG Encoding.
Input is expected to be 64x1 macro blocks and output is expected as byte stuffed huffman encoded JPEG scan.
Parameters
pSrc | Destination-Image Pointer. |
nSrcStep | Destination-Image Line Step. |
nRestartInterval | Restart Interval, see JPEG standard. Currently only values <=0 are supported. |
nSs | Start Coefficient, see JPEG standard. |
nSe | End Coefficient, see JPEG standard. |
nAh | Bit Approximation High, see JPEG standard. |
nAl | Bit Approximation Low, see JPEG standard. |
pDst | Byte-stuffed huffman encoded JPEG scan. |
pLength | Pointer to the byte length of the huffman encoded JPEG scan. |
hpCodesDC | Host pointer to the code of the huffman tree for DC component. |
hpTableDC | Host pointer to the table of the huffman tree for DC component. |
hpCodesAC | Host pointer to the code of the huffman tree for AC component. |
hpTableAC | Host pointer to the table of the huffman tree for AC component. |
pHuffmanDCTable | DC Huffman table. |
pHuffmanACTable | AC Huffman table. |
oSizeROI | Region-of-Interest (ROI). |
pTempStorage | Temporary storage. |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
NppStatus nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P3R | ( | Npp16s * | apSrc[3], |
Npp32s | aSrcStep[3], | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | pLength, | ||
Npp8u * | hpCodesDC[3], | ||
Npp8u * | hpTableDC[3], | ||
Npp8u * | hpCodesAC[3], | ||
Npp8u * | hpTableAC[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | oSizeROI[3], | ||
Npp8u * | pTempStorage | ||
) |
NppStatus nppiEncodeOptimizeHuffmanScan_JPEG_8u16s_P3R_Ctx | ( | Npp16s * | apSrc[3], |
Npp32s | aSrcStep[3], | ||
Npp32s | nRestartInterval, | ||
Npp32s | nSs, | ||
Npp32s | nSe, | ||
Npp32s | nAh, | ||
Npp32s | nAl, | ||
Npp8u * | pDst, | ||
Npp32s * | pLength, | ||
Npp8u * | hpCodesDC[3], | ||
Npp8u * | hpTableDC[3], | ||
Npp8u * | hpCodesAC[3], | ||
Npp8u * | hpTableAC[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanDCTable[3], | ||
NppiEncodeHuffmanSpec * | apHuffmanACTable[3], | ||
NppiSize | oSizeROI[3], | ||
Npp8u * | pTempStorage, | ||
NppStreamContext | nppStreamCtx | ||
) |
Optimize Huffman Encoding of the JPEG Encoding.
Input is expected to be 64x1 macro blocks and output is expected as byte stuffed huffman encoded JPEG scan.
Parameters
apSrc | Destination-Image Pointer. |
aSrcStep | Destination-Image Line Step. |
nRestartInterval | Restart Interval, see JPEG standard. Currently only values <=0 are supported. |
nSs | Start Coefficient, see JPEG standard. |
nSe | End Coefficient, see JPEG standard. |
nAh | Bit Approximation High, see JPEG standard. |
nAl | Bit Approximation Low, see JPEG standard. |
pDst | Byte-stuffed huffman encoded JPEG scan. |
pLength | Pointer to the byte length of the huffman encoded JPEG scan. |
hpCodesDC | Host pointer to the code of the huffman tree for DC component. |
hpTableDC | Host pointer to the table of the huffman tree for DC component. |
hpCodesAC | Host pointer to the code of the huffman tree for AC component. |
hpTableAC | Host pointer to the table of the huffman tree for AC component. |
apHuffmanDCTable | DC Huffman tables. |
apHuffmanACTable | AC Huffman tables. |
oSizeROI | Region-of-Interest (ROI). |
pTempStorage | Temporary storage. |
nppStreamCtx | Application Managed Stream Context. |
Returns
Error codes:
size_t nppiJpegDecodeGetDCTBufferSize | ( | NppiSize | oBlocks | ) |
Returns how much memory has to be allocated for DCT coefficient buffers declared in NppiJpegDecodeJobMemory.
The returned value may be bigger than simply number of blocks * 64 * sizeof (short)
, because decoder may use slightly bigger temporary representation of data.
Parameters
oBlocks | Size of the interleaved component in blocks. (That means that the size of component in blocks has to be aligned according to subsampling of this component and frame). |
This function assumes no ununsed space between rows, so at the end stride = oBlocks.width * 64 * sizeof (short)
.
size_t nppiJpegDecodeGetScanDeadzoneSize | ( | void | ) |
This function returns how much additional memory has to be available after the end of compressed scan data.
The following buffers: pCpuScan
and pGpuScan
in NppiJpegDecodeJobMemory should have size at least pScan->length + nppiJpegDecodeGetScanDeadzoneSize()
.
The additional memory is needed because the decoder may perform some speculative reads after the end of compressed scan data.
NppStatus nppiJpegDecodeJob | ( | const NppiJpegDecodeJob * | pJob, |
const NppiJpegDecodeJobMemory * | pMemory | ||
) |
NppStatus nppiJpegDecodeJob_Ctx | ( | const NppiJpegDecodeJob * | pJob, |
const NppiJpegDecodeJobMemory * | pMemory, | ||
NppStreamContext | nppStreamCtx | ||
) |
Executes a job – part of decoding.
Parameters
pJob | has to be initialized by nppiJpegDecodeJobCreateMemzero or nppiJpegDecodeJobCreateFinalize or manually. |
pMemory | has to point to valid structure, except for MEMZERO and FINALIZE scans, for which it can be NULL. |
See Also
nppiJpegDecodeJobMemorySize
nppiJpegDecodeJobCreateMemzero
nppiJpegDecodeJobCreateFinalize
This function can be used in two ways, depending on how much control do you need:
Example (pseudo)code for decoding JPEG: (Error handling code omitted for brevity. Each function which may return an error should be checked)
// Allocate DCT buffers (using nppiJpegDecodeGetDCTBufferSize)
NppiJpegFrameDescr frame;
// Fill frame info...
NppiJpegScanDescr scan;
NppiJpegDecodeJob job;
job.pFrame = frame;
job.pScan = scan;
nppiJpegDecodeJobCreateMemzero(&job);
nppiJpegDecodeJob(&job, NULL);
for (int i = 0; i < nScans; ++i)
{
// Fill scan info...
job.eKind = NPPI_JPEG_DECODE_SIMPLE;
size_t sizes[NPPI_JPEG_DECODE_N_BUFFERS];
nppiJpegDecodeJobMemorySize(&job, sizes);
NppiJpegJobMemory memory;
// Allocate and fill scan buffers (using nppiJpegDecodeGetScanBufferSize)...
// Fill the memory struct according to sizes...
nppiJpegDecodeJob(&job, &memory);
// Synchronization is needed only if you reuse buffers between scans.
cudaStreamSynchronize(nppGetStream()); or CudaStreamSynchronize(nppStreamCtx.hStream);
}
nppiJpegDecodeJobCreateFinalize(&job);
nppiJpegDecodeJob(&job, NULL);
// Perform further steps of decoding (iDCT etc.)
*
Parameters
nppStreamCtx | Application Managed Stream Context. |
Returns
NppStatus nppiJpegDecodeJobCreateFinalize | ( | NppiJpegDecodeJob * | pJob | ) |
Initializes a job that has to be called at the end of decoding, in order to convert temporary representation of DCT coefficients to the final one.
Parameters
pJob,: | pJob.pFrame should point to valid frame description *pJob.pScan will be overwritten. |
NppStatus nppiJpegDecodeJobCreateMemzero | ( | NppiJpegDecodeJob * | pJob | ) |
Initializes a job that has to be called at the beginning of decoding.
Parameters
pJob,: | pJob.pFrame should point to valid frame description. *pJob.pScan will be overwritten. |
If the caller had manually zeroed the memory for DCT buffers, (note: whole nppiJpegDecodeGetDCTBufferSize has to be zeroed). this job doesn't have to be executed.
NppStatus nppiJpegDecodeJobMemorySize | ( | const NppiJpegDecodeJob * | pJob, |
size_t * | aSize | ||
) |
Calculates sizes of additional buffers used by the job.
Parameters
pJob | has to point to properly initialized job | |
[out] | aSize | will be filled with NPPI_JPEG_DECODE_N_BUFFERS sizes, aSize[i] telling how much memory has to be allocated for apCpuBuffer[i] and apGpuBuffer[i] . |
See Also
NppiJpegDecodeJobMemory
Returns
Copyright © 2009-2019 NVIDIA Corporation