mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-04 05:41:02 -05:00
7261 lines
209 KiB
C
7261 lines
209 KiB
C
/* ///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// INTEL CORPORATION PROPRIETARY INFORMATION
|
|
// This software is supplied under the terms of a license agreement or
|
|
// nondisclosure agreement with Intel Corporation and may not be copied
|
|
// or disclosed except in accordance with the terms of that agreement.
|
|
// Copyright(c) 1999-2009 Intel Corporation. All Rights Reserved.
|
|
//
|
|
// Intel(R) Integrated Performance Primitives
|
|
// JPEG Processing (ippJP)
|
|
//
|
|
*/
|
|
|
|
#if !defined( __IPPJ_H__ ) || defined( _OWN_BLDPCS )
|
|
#define __IPPJ_H__
|
|
|
|
#if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
|
|
#define _IPP_STDCALL_CDECL
|
|
#undef __stdcall
|
|
#endif
|
|
|
|
#ifndef __IPPDEFS_H__
|
|
#include "ippdefs.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#if !defined( _OWN_BLDPCS )
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiEncodeHuffmanSpec
|
|
//
|
|
// Purpose:
|
|
// Encoder Huffman table in fast-to-use format
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct EncodeHuffmanSpec;
|
|
|
|
typedef struct EncodeHuffmanSpec IppiEncodeHuffmanSpec;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiDecodeHuffmanSpec
|
|
//
|
|
// Purpose:
|
|
// Decoder Huffman table in fast-to-use format
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct DecodeHuffmanSpec;
|
|
|
|
typedef struct DecodeHuffmanSpec IppiDecodeHuffmanSpec;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiEncodeHuffmanState
|
|
//
|
|
// Purpose:
|
|
// Huffman encoder state
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct EncodeHuffmanState;
|
|
|
|
typedef struct EncodeHuffmanState IppiEncodeHuffmanState;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiDecodeHuffmanState
|
|
//
|
|
// Purpose:
|
|
// Huffman decoder state
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct DecodeHuffmanState;
|
|
|
|
typedef struct DecodeHuffmanState IppiDecodeHuffmanState;
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiEncodeState_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// State structure for JPEG2000 entropy encoder
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct iEncodeState_JPEG2K;
|
|
|
|
typedef struct iEncodeState_JPEG2K IppiEncodeState_JPEG2K;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiDecodeCBProgrState_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// State structure for JPEG2000 entropy decoder
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
struct iDecodeCBProgrState_JPEG2K;
|
|
|
|
typedef struct iDecodeCBProgrState_JPEG2K IppiDecodeCBProgrState_JPEG2K;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiWTFilterFirst
|
|
//
|
|
// Purpose:
|
|
// Enumerator of relative positions of high-pass and low-pass filters
|
|
// for JPEG 2000 wavelet transforms.
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
ippWTFilterFirstLow,
|
|
ippWTFilterFirstHigh
|
|
|
|
} IppiWTFilterFirst;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiWTSubband
|
|
//
|
|
// Purpose:
|
|
// Enumerator of wavelet transform subband
|
|
// for JPEG 2000 entropy coder.
|
|
//
|
|
// ippWTSubbandLxLy - low-pass filtered along x and y directions,
|
|
// ippWTSubbandLxHy - low-pass filtered along x
|
|
// and high-pass filtered along y direction,
|
|
// ippWTSubbandHxLy - high-pass filtered along x
|
|
// and low-pass filtered along y direction,
|
|
// ippWTSubbandHxHy - high-pass filtered by x and y directions.
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
ippWTSubbandLxLy,
|
|
ippWTSubbandLxHy,
|
|
ippWTSubbandHxLy,
|
|
ippWTSubbandHxHy
|
|
|
|
} IppiWTSubband;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiMQTermination
|
|
//
|
|
// Purpose:
|
|
// Enumerator of MQ encoder termination types.
|
|
// It used in JPEG2000 entropy coding functions.
|
|
//
|
|
// ippMQTermSimple - simple termination
|
|
// (some extra bytes can be placed),
|
|
// ippMQTermNearOptimal - very good termination mode,
|
|
// ippMQTermPredictable - termination mode used for
|
|
// predictable error resilience
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
ippMQTermSimple,
|
|
ippMQTermNearOptimal,
|
|
ippMQTermPredictable
|
|
|
|
} IppiMQTermination;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// IppiMQRateAppr
|
|
//
|
|
// Purpose:
|
|
// Enumerator of MQ padding approximation in rate-distortion estimation.
|
|
// It used in JPEG2000 entropy coding functions.
|
|
//
|
|
// ippMQRateApprGood - non-optimal approximation,
|
|
// rate can be overestimated a little.
|
|
//
|
|
// Notes: only one approximation model implemented at the moment
|
|
//
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
ippMQRateApprGood
|
|
|
|
} IppiMQRateAppr;
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
//
|
|
// Purpose:
|
|
// Enumerator of JPEG2000 entropy coder end decoder code style flags.
|
|
//
|
|
// Notes:
|
|
// IPP_JPEG2K_VERTICALLY_CAUSAL_CONTEXT
|
|
// - vertically causal context will be formed,
|
|
// IPP_JPEG2K_SELECTIVE_MQ_BYPASS
|
|
// - selective MQ coding bypassing will be used (i.e. raw coding
|
|
// will be used for some passes),
|
|
// IPP_JPEG2K_TERMINATE_ON_EVERY_PASS
|
|
// - terminate MQ coder on every pass,
|
|
// IPP_JPEG2K_RESETCTX_ON_EVERY_PASS
|
|
// - reset MQ coder context on every pass,
|
|
// IPP_JPEG2K_USE_SEGMENTATION_SYMBOLS
|
|
// - use segmentation symbol sequence for error resilence,
|
|
// IPP_JPEG2K_LOSSLESS_MODE
|
|
// - inform about the use of lossless wavelet transforms
|
|
// in rate-distortion estimation,
|
|
// IPP_JPEG2K_DEC_DO_NOT_CLEAR_CB
|
|
// - do not clear codeblock data before decoding,
|
|
// IPP_JPEG2K_DEC_DO_NOT_RESET_LOW_BITS
|
|
// - do not reset low-order bits after decoding,
|
|
// IPP_JPEG2K_DEC_DO_NOT_CLEAR_SFBUFFER
|
|
// - do not clear buffer before decoding to keep previous
|
|
// significance state information.
|
|
// IPP_JPEG2K_DEC_CHECK_PRED_TERM
|
|
// - check predictable termination during decoding,
|
|
// if it is not right 'damage in codeblock' error
|
|
// code will be generated.
|
|
// This flag should be used only in predictable
|
|
// termination mode.
|
|
//
|
|
*/
|
|
|
|
enum
|
|
{
|
|
IPP_JPEG2K_VERTICALLY_CAUSAL_CONTEXT = 1,
|
|
IPP_JPEG2K_SELECTIVE_MQ_BYPASS = 1 << 1,
|
|
IPP_JPEG2K_TERMINATE_ON_EVERY_PASS = 1 << 2,
|
|
IPP_JPEG2K_RESETCTX_ON_EVERY_PASS = 1 << 3,
|
|
IPP_JPEG2K_USE_SEGMENTATION_SYMBOLS = 1 << 4,
|
|
IPP_JPEG2K_LOSSLESS_MODE = 1 << 5,
|
|
|
|
IPP_JPEG2K_DEC_CONCEAL_ERRORS = 1 << 16,
|
|
IPP_JPEG2K_DEC_DO_NOT_CLEAR_CB = 1 << 17,
|
|
IPP_JPEG2K_DEC_DO_NOT_RESET_LOW_BITS = 1 << 18,
|
|
IPP_JPEG2K_DEC_DO_NOT_CLEAR_SFBUFFER = 1 << 19,
|
|
IPP_JPEG2K_DEC_CHECK_PRED_TERM = 1 << 20
|
|
};
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
//
|
|
// Purpose:
|
|
// Enumerator of lossless JPEG predictors
|
|
//
|
|
*/
|
|
|
|
enum
|
|
{
|
|
PRED1 = 1,
|
|
PRED2 = 2,
|
|
PRED3 = 3,
|
|
PRED4 = 4,
|
|
PRED5 = 5,
|
|
PRED6 = 6,
|
|
PRED7 = 7
|
|
};
|
|
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Miscelenauos functions
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippjGetLibVersion
|
|
//
|
|
// Purpose:
|
|
// get the library version
|
|
//
|
|
// Parameters:
|
|
//
|
|
// Returns:
|
|
// pointer to structure describing version of the ippj library
|
|
//
|
|
// Notes:
|
|
// don't free the pointer to IppLibraryVersion
|
|
*/
|
|
|
|
IPPAPI( const IppLibraryVersion*, ippjGetLibVersion, (void) )
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Encoding Functions (Baseline)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanRawTableInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build Huffman "raw" table from counted statistics of
|
|
// Huffman symbols for 8-bit precision
|
|
//
|
|
// Parameters:
|
|
// pStatistics - pointer to array of 256 int,
|
|
// with the one entry for each of possible huffman symbol.
|
|
// pListBits - pointer to array of 16 bytes.
|
|
// pListVals - pointer to array of 256 bytes.
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// pListBits represents list of BITS and pListVals represent list
|
|
// of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanRawTableInit_JPEG_8u, (
|
|
const int pStatistics[256],
|
|
Ipp8u* pListBits,
|
|
Ipp8u* pListVals))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanSpecGetBufSize_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// get size of IppjEncodeHuffmanSpec struct
|
|
//
|
|
// Parameters:
|
|
// size - where write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanSpecGetBufSize_JPEG_8u, (
|
|
int* size))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanSpecInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build Huffman table for encoder
|
|
// in fast-to-use format from "raw" Huffman table
|
|
//
|
|
// Parameters:
|
|
// pListBits - pointer to array of 16 bytes.
|
|
// pListVals - pointer to array of up to 256 bytes.
|
|
// pEncHuffSpec - pointer to Huffman table to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// pListBits represents list of BITS and pListVals represent list
|
|
// of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanSpecInit_JPEG_8u, (
|
|
const Ipp8u* pListBits,
|
|
const Ipp8u* pListVals,
|
|
IppiEncodeHuffmanSpec* pEncHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanSpecInitAlloc_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Allocate memory and build Huffman table for encoder
|
|
// in fast-to-use format from "raw" Huffman table
|
|
//
|
|
// Parameters:
|
|
// pListBits - pointer to array of 16 bytes.
|
|
// pListVals - pointer to array of up to 256 bytes.
|
|
// ppEncHuffSpec - pointer to pointer on Huffman table
|
|
// to be allocated and initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// pListBits represents list of BITS and pListVals represent
|
|
// list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanSpecInitAlloc_JPEG_8u, (
|
|
const Ipp8u* pListBits,
|
|
const Ipp8u* pListVals,
|
|
IppiEncodeHuffmanSpec** ppEncHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanSpecFree_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Free memory for encoder Huffman table
|
|
//
|
|
// Parameters:
|
|
// pEncHuffSpec - pointer to Huffman table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanSpecFree_JPEG_8u, (
|
|
IppiEncodeHuffmanSpec* pEncHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanStateGetBufSize_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// get size of IppiEncoderHuffmanState struct
|
|
//
|
|
// Parameters:
|
|
// size - where write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanStateGetBufSize_JPEG_8u, (
|
|
int* size))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanStateInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build EncHuffState struct for encoder
|
|
//
|
|
// Parameters:
|
|
// pEncHuffState - pointer to EncHuffState struct to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanStateInit_JPEG_8u, (
|
|
IppiEncodeHuffmanState* pEncHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanStateInitAlloc_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Allocate memory and build EncHuffState struct for encoder
|
|
//
|
|
// Parameters:
|
|
// ppEncHuffState - pointer to pointer on EncHuffState struct
|
|
// to be allocated and initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanStateInitAlloc_JPEG_8u, (
|
|
IppiEncodeHuffmanState** ppEncHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanStateFree_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Free memory for encoder EncHuffState struct
|
|
//
|
|
// Parameters:
|
|
// pEncHuffState - pointer to EncHuffState struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanStateFree_JPEG_8u, (
|
|
IppiEncodeHuffmanState* pEncHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman encode 8x8 block of quantized DCT coefs
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to 8x8 block of quantized DCT coefficients
|
|
// pDst pointer to output JPEG bitstream
|
|
// dstLenBytes bitstream length, in bytes
|
|
// pDstCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pLastDC pointer to last DC coefficient from previous block of
|
|
// the same color component (in/out)
|
|
// pEncHuffState pointer to Huffman state struct
|
|
// pDcTable pointer to Huffman DC table
|
|
// pAcTable pointer to Huffman AC table
|
|
// bFlushState if non zero - only flush any pending bits
|
|
// from IppiEncodeHuffmanState to bitstream
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// set bFlushState to 1, after processing all MCUs in scan, to
|
|
// flush any pending bits from IppiEncodeHuffmanState to bitstream
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex F, F.1.2 - Baseline Huffman encoding procedures.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes,
|
|
int* pDstCurrPos,
|
|
Ipp16s* pLastDC,
|
|
const IppiEncodeHuffmanSpec* pDcTable,
|
|
const IppiEncodeHuffmanSpec* pAcTable,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_Direct_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman encode 8x8 block of quantized DCT coefs
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to 8x8 block of quantized DCT coefficients
|
|
// pDst pointer to output JPEG bitstream
|
|
// pDstBitsLen bitstream length, in bits (in/out)
|
|
// pLastDC pointer to last DC coefficient from previous block of
|
|
// the same color component (in/out)
|
|
// pDcTable pointer to Huffman DC table
|
|
// pAcTable pointer to Huffman AC table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex F, F.1.2 - Baseline Huffman encoding procedures.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_Direct_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int* pDstBitsLen,
|
|
Ipp16s* pLastDC,
|
|
const IppiEncodeHuffmanSpec* pDcTable,
|
|
const IppiEncodeHuffmanSpec* pAcTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetHuffmanStatistics8x8_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Calculate statistics of huffman values
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pDcStatistics - pointer to 256 elements array
|
|
// pAcStatistics - pointer to 256 elements array
|
|
// pLastDC - pointer to DC coefficient from previous 8x8 block
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
int pDcStatistics[256],
|
|
int pAcStatistics[256],
|
|
Ipp16s* pLastDC))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Encoding Functions (Progressive)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetHuffmanStatistics8x8_DCFirst_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Calculate statistics of huffman values, progressive coding,
|
|
// first scan
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pDcStatistics - pointer to 256 elements array
|
|
// pLastDC - pointer to DC coefficient from previous 8x8 block
|
|
// Al - successive approximation bit position low
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_DCFirst_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
int pDcStatistics[256],
|
|
Ipp16s* pLastDC,
|
|
int Al))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetHuffmanStatistics8x8_ACFirst_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Calculate statistics of huffman values, progressive coding,
|
|
// first scan
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pAcStatistics - pointer to 256 elements array
|
|
// Ss - start of spectral selection
|
|
// Se - end of spectral selection
|
|
// Al - successive approximation bit position low
|
|
// pEncHuffState - huffman encoder state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush EOB counter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_ACFirst_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
int pAcStatistics[256],
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetHuffmanStatistics8x8_ACRefine_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Calculate statistics of huffman values, progressive coding,
|
|
// next scans
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pAcStatistics - pointer to 256 elements array
|
|
// Ss - start of spectral selection
|
|
// Se - end of spectral selection
|
|
// Al - successive approximation bit position low
|
|
// pEncHuffState - huffman encoder state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush EOB counter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_ACRefine_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
int pAcStatistics[256],
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_DCFirst_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// huffman encode DC coefficient from 8x8 block of quantized
|
|
// DCT coefficients. Progressive coding, first scan
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output bitstream
|
|
// dstLenBytes - length of bitstream buffer
|
|
// pDstCurrPos - corrent byte position in bitstream buffer
|
|
// pLastDC - pointer to DC coefficient from previous 8x8 block
|
|
// Al - successive approximation bit position low
|
|
// pDcTable - pointer to DC huffman table
|
|
// pEncHuffState - pointer to encoder huffman state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush any pending bits from state
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.1.2 - Progressive encoding procedures with Huffman.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_DCFirst_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes,
|
|
int* pDstCurrPos,
|
|
Ipp16s* pLastDC,
|
|
int Al,
|
|
const IppiEncodeHuffmanSpec* pDcTable,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_DCRefine_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// huffman encode DC coefficient from 8x8 block of quantized
|
|
// DCT coefficients. Progressive coding, next scans
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output bitstream
|
|
// dstLenBytes - length of bitstream
|
|
// pDstCurrPos - current byte position in bitstream
|
|
// Al - successive approximation bit position low
|
|
// pEncHuffState - pointer to encoder huffman state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush any pending bits from state
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.1.2 - Progressive encoding procedures with Huffman.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_DCRefine_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes,
|
|
int* pDstCurrPos,
|
|
int Al,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_ACFirst_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// huffman encode AC coefficients from 8x8 block of quantized
|
|
// DCT coefficients. Progressive coding, first scan
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output bitstream buffer
|
|
// dstLenBytes - length of bitstream buffer
|
|
// pDstCurrPos - current byte position in bitstream buffer
|
|
// Ss - start of spectral selection
|
|
// Se - end of spectral selection
|
|
// Al - successive approximation bit position low
|
|
// pAcTable - pointer to encoder haffman AC table
|
|
// pEncHuffState - pointer encoder huffman state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush any pending bits from state
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.1.2 - Progressive encoding procedures with Huffman.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_ACFirst_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes,
|
|
int* pDstCurrPos,
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
const IppiEncodeHuffmanSpec* pAcTable,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffman8x8_ACRefine_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// huffman encode AC coefficients from 8x8 block of quantized
|
|
// DCT coefficients. Progressive coding, next scans
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to 8x8 block of quantized DCT coefficeints
|
|
// pDst - pointer to output bitstream buffer
|
|
// dstLenBytes - length of bitstream buffer
|
|
// pDstCurrPos - current byte position in bitstream buffer
|
|
// Ss - start of spectral selection
|
|
// Se - end of spectral selection
|
|
// Al - successive approximation bit position low
|
|
// pAcTable - pointer to encoder huffman AC table
|
|
// pEncHuffState - pointer to encoder huffman state
|
|
// bFlushState - set to 1, after processing all MCUs
|
|
// to flush any pending bits from state
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Encoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.1.2 - Progressive encoding procedures with Huffman.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffman8x8_ACRefine_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes,
|
|
int* pDstCurrPos,
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
const IppiEncodeHuffmanSpec* pAcTable,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Encoding Functions (Lossless)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanOne_JPEG_16s1u_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman encode one lossless coefs
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input differences
|
|
// pDst pointer to output JPEG bitstream
|
|
// nDstLenBytes bitstream length, in bytes
|
|
// pDstCurrPos pointer to current offset in buffer in bytes (in/out)
|
|
// pEncHuffTable pointer to huffman lossless table
|
|
// pEncHuffState pointer to Huffman state struct
|
|
// bFlushState
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanOne_JPEG_16s1u_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int nDstLenBytes,
|
|
int* pDstCurrPos,
|
|
const IppiEncodeHuffmanSpec* pEncHuffTable,
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeHuffmanRow_JPEG_16s1u_P4C1
|
|
//
|
|
// Purpose:
|
|
// Huffman encode mcu row
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input differences
|
|
// pDst pointer to output JPEG bitstream
|
|
// nDstLenBytes bitstream length, in bytes
|
|
// pDstCurrPos pointer to current offset in buffer in bytes (in/out)
|
|
// pEncHuffTable pointer to huffman lossless table
|
|
// pEncHuffState pointer to Huffman state struct
|
|
// bFlushState
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeHuffmanRow_JPEG_16s1u_P4C1, (
|
|
const Ipp16s* pSrc[4],
|
|
int nSrcLen,
|
|
int nSrcRows,
|
|
Ipp8u* pDst,
|
|
int nDstLenBytes,
|
|
int* pDstCurrPos,
|
|
const IppiEncodeHuffmanSpec* pEncHuffTable[4],
|
|
IppiEncodeHuffmanState* pEncHuffState,
|
|
int bFlushState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetHuffmanStatisticsOne_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// count statistics for huffman values for particular differences
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input differences
|
|
// pHuffStatistics pointer to accumulated huffman values statistics
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetHuffmanStatisticsOne_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
int pHuffStatistics[256]))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Decoding Functions (Baseline)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanSpecGetBufSize_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// get size of IppiDecodeHuffmanSpec struct
|
|
//
|
|
// Parameters:
|
|
// size - where write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanSpecGetBufSize_JPEG_8u, (
|
|
int* size))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanSpecInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build Huffman table for decoder in fast-to-use format
|
|
// from "raw" Huffman table
|
|
//
|
|
// Parameters:
|
|
// pListBits - pointer to array of 16 bytes.
|
|
// pListVals - pointer to array of up to 256 bytes.
|
|
// pDecHuffSpec - pointer to Huffman table to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// pListBits represents list of BITS and pListVals represent
|
|
// list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanSpecInit_JPEG_8u, (
|
|
const Ipp8u* pListBits,
|
|
const Ipp8u* pListVals,
|
|
IppiDecodeHuffmanSpec* pDecHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanSpecInitAlloc_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build Huffman table for decoder in fast-to-use format
|
|
// from raw Huffman table
|
|
//
|
|
// Parameters:
|
|
// pListBits - pointer to array of 16 bytes.
|
|
// pListVals - pointer to array of up to 256 bytes.
|
|
// ppDecHuffSpec - pointer to pointer on Huffman table
|
|
// to be allocated and initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// pListBits represents list of BITS and pListVals represent
|
|
// list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanSpecInitAlloc_JPEG_8u, (
|
|
const Ipp8u* pListBits,
|
|
const Ipp8u* pListVals,
|
|
IppiDecodeHuffmanSpec** ppDecHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanSpecFree_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Free memory for decoder Huffman table
|
|
//
|
|
// Parameters:
|
|
// pDecHuffSpec - pointer to Huffman table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanSpecFree_JPEG_8u, (
|
|
IppiDecodeHuffmanSpec* pDecHuffSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanStateGetBufSize_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// get size of IppiDecodeHuffmanState struct
|
|
//
|
|
// Parameters:
|
|
// size - where write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanStateGetBufSize_JPEG_8u, (
|
|
int* size))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanStateInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Build IppiDecodeHuffmanState struct for decoder
|
|
//
|
|
// Parameters:
|
|
// pDecHuffState - pointer to IppiDecodeHuffmanState struct
|
|
// to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanStateInit_JPEG_8u, (
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanStateInitAlloc_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Allocate memory and build DecHuffState struct for encoder
|
|
//
|
|
// Parameters:
|
|
// ppDecHuffState - pointer to pointer on EncHuffState struct
|
|
// to be allocated and initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanStateInitAlloc_JPEG_8u, (
|
|
IppiDecodeHuffmanState** ppDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanStateFree_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Free memory for decoder DecHuffState struct
|
|
//
|
|
// Parameters:
|
|
// pDecHuffState - pointer to IppiDecodeHuffmanState struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanStateFree_JPEG_8u, (
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman decode 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// srcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pDst pointer to output 8x8 block of quantized DCT coefficients
|
|
// pLastDC pointer to last DC coefficients from preivious block
|
|
// of the same color component
|
|
// pMarker where to store marker which can be found
|
|
// pDcTable pointer to huffman DC table
|
|
// pAcTable pointer to huffman AC table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Decoding perform as specified in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex F, F.2.2 - Baseline Huffman Decoding procedures
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
Ipp16s* pLastDC,
|
|
int* pMarker,
|
|
const IppiDecodeHuffmanSpec* pDcTable,
|
|
const IppiDecodeHuffmanSpec* pAcTable,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_Direct_JPEG_1u16s_C1
|
|
//
|
|
// Description:
|
|
// Huffman decode 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// pSrcBitsLen the number of bits in bitstream (in/out)
|
|
// pDst pointer to output 8x8 block of quantized
|
|
// DCT coefficients
|
|
// pLastDC pointer to last DC coefficients from preivious
|
|
// block of the same color component
|
|
// pMarker where to store marker which can be found
|
|
// pPrefetchedBits prefetch buffer which contain the bits decoded
|
|
// in the last time
|
|
// pNumValidPrefetchedBits number of valid bits in prefetch buffer
|
|
// pDcTable pointer to huffman DC table
|
|
// pAcTable pointer to huffman AC table
|
|
//
|
|
// Note:
|
|
// 1. pDCPred shall be 0 in initial or after each restart interval
|
|
// 2. pMarker shall be 0 in initial or after it was processed
|
|
// 3. pNumValidPrefetchedBits shall be 0 in following case
|
|
// 1) Initial.
|
|
// 2) After each restart interval.
|
|
// 3) After each marker.
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_Direct_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int* pSrcBitsLen,
|
|
Ipp16s* pDst,
|
|
Ipp16s* pLastDC,
|
|
int* pMarker,
|
|
Ipp32u* pPrefetchedBits,
|
|
int* pNumValidPrefetchedBits,
|
|
const IppiDecodeHuffmanSpec* pDcTable,
|
|
const IppiDecodeHuffmanSpec* pAcTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Decoding Functions (Progressive)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_DCFirst_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman decode DC coefficient of 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// srcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pDst pointer to output 8x8 block of quantized DCT coefficients
|
|
// pLastDC pointer to last DC coefficients from preivious block
|
|
// of the same color component
|
|
// pMarker where to store JPEG marker
|
|
// Al Approximation bit position low
|
|
// pDcTable pointer to huffman DC table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Decoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.2 - Progressive decoding of the DCT.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_DCFirst_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
Ipp16s* pLastDC,
|
|
int* pMarker,
|
|
int Al,
|
|
const IppiDecodeHuffmanSpec* pDcTable,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_DCRefine_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Refine DC coefficient of 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// srcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pDst pointer to output 8x8 block of quantized DCT coefficients
|
|
// pMarker where to store JPEG marker
|
|
// Al Approximation bit position low
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Decoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.2 - Progressive decoding of the DCT.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_DCRefine_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
int* pMarker,
|
|
int Al,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_ACFirst_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman decode AC coefficient of 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// srcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pDst pointer to output 8x8 block of quantized DCT coefficients
|
|
// pMarker where to store JPEG marker
|
|
// Ss spectral selection start
|
|
// Se spectral selection end
|
|
// Al Approximation bit position low
|
|
// pAcTable pointer to huffman AC table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Decoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.2 - Progressive decoding of the DCT.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_ACFirst_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
int* pMarker,
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
const IppiDecodeHuffmanSpec* pAcTable,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffman8x8_ACRefine_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Refine AC coefficients of 8x8 block of quantized DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// srcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current byte offset in buffer (in/out)
|
|
// pDst pointer to output 8x8 block of quantized DCT coefficients
|
|
// pMarker where to store JPEG marker
|
|
// Ss spectral selection start
|
|
// Se spectral selection end
|
|
// Al Approximation bit position low
|
|
// pAcTable Huffman AC table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Decoding perform as defined in ISO/IEC 10918-1.
|
|
// Appendix A - Requirements and guidelines,
|
|
// Annex G, G.2 - Progressive decoding of the DCT.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffman8x8_ACRefine_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
int* pMarker,
|
|
int Ss,
|
|
int Se,
|
|
int Al,
|
|
const IppiDecodeHuffmanSpec* pAcTable,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Huffman Decoding Functions (Lossless)
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanOne_JPEG_1u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Huffman decode one lossless coefs
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// nSrcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current offset in buffer in bytes (in/out)
|
|
// pDst pointer to decoded difference
|
|
// pMarker where to store JPEG marker
|
|
// pDecHuffTable pointer to huffman table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanOne_JPEG_1u16s_C1, (
|
|
const Ipp8u* pSrc,
|
|
int nSrcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst,
|
|
int* pMarker,
|
|
const IppiDecodeHuffmanSpec* pDecHuffTable,
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanRow_JPEG_1u16s_C1P4
|
|
//
|
|
// Purpose:
|
|
// Huffman decode row of lossless coefficents
|
|
//
|
|
// Parameters:
|
|
// pSrc pointer to input JPEG bitstream
|
|
// nSrcLenBytes bitstream length, in bytes
|
|
// pSrcCurrPos pointer to current offset in buffer in bytes (in/out)
|
|
// pDst pointer to decoded difference
|
|
// nDstLen number of mcus in row
|
|
// nDstRows number of rows (actually color channels)
|
|
// pMarker where to store JPEG marker
|
|
// pDecHuffTable pointer to huffman table
|
|
// pDecHuffState pointer to Huffman state struct
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanRow_JPEG_1u16s_C1P4, (
|
|
const Ipp8u* pSrc,
|
|
int nSrcLenBytes,
|
|
int* pSrcCurrPos,
|
|
Ipp16s* pDst[4],
|
|
int nDstLen,
|
|
int nDstRows,
|
|
int* pMarker,
|
|
const IppiDecodeHuffmanSpec* pDecHuffTable[4],
|
|
IppiDecodeHuffmanState* pDecHuffState))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Quantization Functions for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantFwdRawTableInit_JPEG_8u
|
|
//
|
|
// Purpose:
|
|
// Adjust raw quantization table according quality factor
|
|
//
|
|
// Parameters:
|
|
// pQuantRawTable - pointer to "raw" Quantization table
|
|
// qualityFactor - JPEG quality factor (valid range 1...100)
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
|
|
// in ISO/IEC 10918-1, Figure B.6
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantFwdRawTableInit_JPEG_8u, (
|
|
Ipp8u* pQuantRawTable,
|
|
int qualityFactor))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantFwdTableInit_JPEG_8u16u
|
|
//
|
|
// Purpose:
|
|
// Build 8-bit precision Quantization table for encoder
|
|
// in fast-to-use format from "raw" Quantization table
|
|
//
|
|
// Parameters:
|
|
// pQuantRawTable - pointer to "raw" Quantization table
|
|
// pQuantFwdTable - pointer to Quantization table to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
|
|
// in ISO/IEC 10918-1, Figure B.6 in zigzag order
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantFwdTableInit_JPEG_8u16u, (
|
|
const Ipp8u* pQuantRawTable,
|
|
Ipp16u* pQuantFwdTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantFwd8x8_JPEG_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// quantize 8x8 block of DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrcDst - pointer to 8x8 block of DCT coefs
|
|
// pQuantFwdTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Quantization is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines,
|
|
// Annex A, A.3.4 DCT coefficient quantization and dequantization.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantFwd8x8_JPEG_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
const Ipp16u* pQuantFwdTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Quantization Functions for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvTableInit_JPEG_8u16u
|
|
//
|
|
// Purpose:
|
|
// Build Quantization table for decoder in fast-to-use format
|
|
// from "raw" Quantization table
|
|
//
|
|
// Parameters:
|
|
// pQuantRawTable - pointer to "raw" Quantization table
|
|
// pQuantInvTable - pointer to Quantization table to be initialized
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
|
|
// in ISO/IEC 10918-1, Figure B.6 in zigzag order
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvTableInit_JPEG_8u16u, (
|
|
const Ipp8u* pQuantRawTable,
|
|
Ipp16u* pQuantInvTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInv8x8_JPEG_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// dequantize 8x8 block of DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrcDst - pointer to 8x8 block of DCT coefficients
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Dequantization is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines,
|
|
// Annex A, A.3.4 DCT coefficient quantization and dequantization.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInv8x8_JPEG_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Functions for color conversion for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToY_JPEG_8u_P3C1R
|
|
//
|
|
// Purpose:
|
|
// RGB to Y color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to pointers to the input data.
|
|
// pSrc[0] is pointer to RR..RR plane
|
|
// pSrc[1] is pointer to GG..GG plane, and
|
|
// pSrc[2] is pointer to BB..BB plane
|
|
// srcStep line offset in input data
|
|
// pDstY pointer to the output data YY..YY
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Y = 0.299*R + 0.587*G + 0.114*B
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToY_JPEG_8u_P3C1R, (
|
|
const Ipp8u* pSrcRGB[3],
|
|
int srcStep,
|
|
Ipp8u* pDstY,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToY_JPEG_8u_C3C1R
|
|
//
|
|
// Purpose:
|
|
// RGB to Y color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to the input data RGBRGB...RGBRGB
|
|
// srcStep line offset in input data
|
|
// pDstY pointer to the output data YY..YY
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Y = 0.299*R + 0.587*G + 0.114*B
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToY_JPEG_8u_C3C1R, (
|
|
const Ipp8u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp8u* pDstY,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGRToY_JPEG_8u_C3C1R
|
|
//
|
|
// Purpose:
|
|
// BGR to Y color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to the input data BGRBGR...BGRBGR
|
|
// srcStep line offset in input data
|
|
// pDstY pointer to the output data YY..YY
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Y = 0.299*R + 0.587*G + 0.114*B
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGRToY_JPEG_8u_C3C1R, (
|
|
const Ipp8u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp8u* pDstY,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToYCbCr_JPEG_8u_P3R
|
|
//
|
|
// Purpose:
|
|
// RGB to YCbCr color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to pointers to the input data.
|
|
// pSrc[0] is pointer to RR..RR plane
|
|
// pSrc[1] is pointer to GG..GG plane, and
|
|
// pSrc[2] is pointer to BB..BB plane
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to the output data.
|
|
// pDst[0] is pointer to YY..YY plane
|
|
// pDst[1] is pointer to CbCb..CbCb plane, and
|
|
// pDst[2] is pointer to CrCr..CrCr plane
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToYCbCr_JPEG_8u_P3R, (
|
|
const Ipp8u* pSrcRGB[3],
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToYCbCr_JPEG_8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB to YCbCr color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data RGBRGB..RGBRGB
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to the output data.
|
|
// pDstYCbCr[0] is pointer to YY..YY plane
|
|
// pDstYCbCr[1] is pointer to CbCb..CbCb plane, and
|
|
// pDstYCbCr[2] is pointer to CrCr..CrCr plane
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToYCbCr_JPEG_8u_C3P3R, (
|
|
const Ipp8u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGRToYCbCr_JPEG_8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR to YCbCr color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data BGRBGR..BGRBGR
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to the output data.
|
|
// pDstYCbCr[0] is pointer to YY..YY plane
|
|
// pDstYCbCr[1] is pointer to CbCb..CbCb plane, and
|
|
// pDstYCbCr[2] is pointer to CrCr..CrCr plane
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGRToYCbCr_JPEG_8u_C3P3R, (
|
|
const Ipp8u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGB555ToYCbCr_JPEG_16u8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB555 to YCbCr color convert
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
|
|
//
|
|
// pixel format
|
|
// 15 8 7 0
|
|
// |xbbbbbgg|gggrrrrr|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGB555ToYCbCr_JPEG_16u8u_C3P3R, (
|
|
const Ipp16u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGR555ToYCbCr_JPEG_16u8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR555 to YCbCr color convert
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
|
|
//
|
|
// pixel format
|
|
// 15 8 7 0
|
|
// |xrrrrrgg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGR555ToYCbCr_JPEG_16u8u_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGB565ToYCbCr_JPEG_16u8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB565 to YCbCr color convert
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCbcr pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
|
|
//
|
|
// pixel format
|
|
// 15 8 7 0
|
|
// |rrrrrggg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGB565ToYCbCr_JPEG_16u8u_C3P3R, (
|
|
const Ipp16u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp8u* pDstYCbCr[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGR565ToYCbCr_JPEG_16u8u_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR565 to YCbCr color convert
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCbCr pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
|
|
//
|
|
// pixel format
|
|
// 15 8 7 0
|
|
// |bbbbbggg|gggrrrrr|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGR565ToYCbCr_JPEG_16u8u_C3P3R, (
|
|
const Ipp16u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCMYKToYCCK_JPEG_8u_P4R
|
|
//
|
|
// Purpose:
|
|
// CMYK to YCCK color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcCMYK pointer to pointers to the input data.
|
|
// pSrc[0] is pointer to CC..CC plane
|
|
// pSrc[1] is pointer to MM..MM plane, and
|
|
// pSrc[2] is pointer to YY..YY plane
|
|
// pSrc[3] is pointer to KK..KK plane
|
|
// srcStep line offset in input data
|
|
// pDstYCCK pointer to pointers to output arrays
|
|
// pDst[0] is pointer to YY..YY plane
|
|
// pDst[1] is pointer to CC..CC plane, and
|
|
// pDst[2] is pointer to CC..CC plane
|
|
// pDst[3] is pointer to KK..KK plane
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style CMYK->YCCK conversion,
|
|
// where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
|
|
// while K (black) channel is unchanged.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCMYKToYCCK_JPEG_8u_P4R, (
|
|
const Ipp8u* pSrcCMYK[4],
|
|
int srcStep,
|
|
Ipp8u* pDstYCCK[4],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCMYKToYCCK_JPEG_8u_C4P4R
|
|
//
|
|
// Purpose:
|
|
// CMYK to YCCK color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcCMYK pointer to input data CMYKCMYK..CMYKCMYK
|
|
// srcStep line offset in input data
|
|
// pDstYCCK pointer to pointers to output arrays
|
|
// pDst[0] is pointer to YY..YY plane
|
|
// pDst[1] is pointer to CC..CC plane, and
|
|
// pDst[2] is pointer to CC..CC plane
|
|
// pDst[3] is pointer to KK..KK plane
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style CMYK->YCCK conversion,
|
|
// where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
|
|
// while K (black) channel is unchanged.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCMYKToYCCK_JPEG_8u_C4P4R, (
|
|
const Ipp8u* pSrcCMYK,
|
|
int srcStep,
|
|
Ipp8u* pDstYCCK[4],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Shift level functions for encoder/decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSub128_JPEG_8u16s_C1R
|
|
//
|
|
// Purpose:
|
|
// convert image data from unsigned 8-bit integer to signed 16-bit
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSub128_JPEG_8u16s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAdd128_JPEG_16s8u_C1R
|
|
//
|
|
// Purpose:
|
|
// convert image data from signed 16-bit to unsigned 8-bit integer
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAdd128_JPEG_16s8u_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Downsampling functions for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDownH2V1_JPEG_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Sample down by horizontal 2:1
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source data to be sampled down
|
|
// srcStep - line offset in input data
|
|
// srcSize - ROI size
|
|
// pDst - pointer to sampled down output data
|
|
// dstStep - line offset in input data
|
|
// dstSize - ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDownH2V1_JPEG_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize dstRoiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDownH2V2_JPEG_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Sample down by horizontal 2:1 and vertical 2:1
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source data to be sampled down
|
|
// srcStep - line offset in input data
|
|
// srcSize - ROI size
|
|
// pDst - pointer to sampled down output data
|
|
// dstStep - line offset in input data
|
|
// dstSize - ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDownH2V2_JPEG_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize dstRoiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDownRowH2V1_Box_JPEG_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Sample down by horizontal 2:1
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source row
|
|
// srcWidth - width of source row
|
|
// pDst - pointer to sampled down output row
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Downsampling is performed as simple "Box" filter
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDownRowH2V1_Box_JPEG_8u_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcWidth,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDownRowH2V2_Box_JPEG_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Sample down by horizontal 2:1 and vertical 2:1
|
|
//
|
|
// Parameters:
|
|
// pSrc1 - pointer to the source row
|
|
// pSrc2 - pointer to the next(adjacent) row
|
|
// srcWidth - width of source rows
|
|
// pDst - pointer to sampled down output row
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Downsampling is performed as simple "Box" filter
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDownRowH2V2_Box_JPEG_8u_C1, (
|
|
const Ipp8u* pSrc1,
|
|
const Ipp8u* pSrc2,
|
|
int srcWidth,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Upsampling functions for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUpH2V1_JPEG_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// sample up horizontally 1:2
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source data to be sampled up
|
|
// srcStep - line offset in input data
|
|
// srcSize - ROI size
|
|
// pDst - pointer to sampled up output data
|
|
// dstStep - line offset in input data
|
|
// dstSize - ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
|
|
// so we need leftmost and rightmost values outside the data boundary.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUpH2V1_JPEG_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize dstRoiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUpH2V2_JPEG_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// sample up horizontally 1:2 and vertically 1:2
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source data to be sampled up
|
|
// srcStep - line offset in input data
|
|
// srcSize - ROI size
|
|
// pDst - pointer to sampled up output data
|
|
// dstStep - line offset in input data
|
|
// dstSize - ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
|
|
// so we need leftmost and rightmost, bottommost and topmost values
|
|
// outside the data boundary.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUpH2V2_JPEG_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize dstRoiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUpRowH2V1_Triangle_JPEG_8u_C1
|
|
//
|
|
// Purpose:
|
|
// sample up horizontally 1:2
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to the source row
|
|
// srcWidth - width of source row
|
|
// pDst - pointer to sampled up output row
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel)
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUpRowH2V1_Triangle_JPEG_8u_C1, (
|
|
const Ipp8u* pSrc,
|
|
int srcWidth,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUpRowH2V2_Triangle_JPEG_8u_C1
|
|
//
|
|
// Purpose:
|
|
// sample up horizontally 1:2 and vertically 1:2
|
|
//
|
|
// Parameters:
|
|
// pSrc1 - pointer to the source row
|
|
// pSrc2 - pointer to the next(adjacent) source row
|
|
// srcWidth - width of source rows
|
|
// pDst - pointer to sampled up output row
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUpRowH2V2_Triangle_JPEG_8u_C1, (
|
|
const Ipp8u* pSrc1,
|
|
const Ipp8u* pSrc2,
|
|
int srcWidth,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Sampling and color conversion functions for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToYCbCr444LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB to YCbCr color conversion, 444 downsampling and level shift (-128)
|
|
// This routine handles one 1:1:1 MCU of interleaved RGB data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., one 8x8 luminance block and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
// 0 8 srcStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y block, Cb block, Cr block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | Y | | Cb | | Cr |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data, RGBRGB..RGBRGB
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output MCU.
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToYCbCr444LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToYCbCr422LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB to YCbCr color conversion, 422 downsampling and level shift (-128)
|
|
// This routine handles one 4:2:2 MCU of interleaved RGB data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., two 8x8 luminance blocks and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 2 pixels
|
|
// horizonatally to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToYCbCr422LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRGBToYCbCr411LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// RGB to YCbCr color conversion, 411 downsampling and level shift (-128)
|
|
// This routine handles one 4:1:1 MCU of interleaved RGB data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | Y3 | Y4 |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 4 pixels
|
|
// to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcRGB pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRGBToYCbCr411LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcRGB,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGRToYCbCr444LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR to YCbCr color conversion, 444 downsampling and level shift (-128)
|
|
// This routine handles one 1:1:1 MCU of interleaved BGR data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., one 8x8 luminance block and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
// 0 8 srcStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y block, Cb block, Cr block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | Y | | Cb | | Cr |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data, RGBRGB..RGBRGB
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output MCU.
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGRToYCbCr444LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGRToYCbCr422LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR to YCbCr color conversion, 422 downsampling and level shift (-128)
|
|
// This routine handles one 4:2:2 MCU of interleaved BGR data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., two 8x8 luminance blocks and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 2 pixels
|
|
// horizonatally to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGRToYCbCr422LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGRToYCbCr411LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// BGR to YCbCr color conversion, 411 downsampling and level shift (-128)
|
|
// This routine handles one 4:1:1 MCU of interleaved BGR data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | Y3 | Y4 |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 4 pixels
|
|
// to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGRToYCbCr411LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDown444LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// No color conversion, 444 downsampling and level shift (-128)
|
|
// This routine handles one 1:1:1 MCU of interleaved data
|
|
// (lines separated by srcStep) and generates a full MCU
|
|
// (i.e., one 8x8 block of Ch1 and two 8x8 blocks of Ch2 and Ch3).
|
|
//
|
|
// Input data is in the order:
|
|
// Ch1Ch2Ch3,...,Ch1Ch2Ch3
|
|
// 0 8 srcStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Output data is in the order:
|
|
// Ch1 block, Ch2 block, Ch3 block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | | | | | |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output MCU.
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDown444LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDown422LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// No color conversion, 422 downsampling and level shift (-128)
|
|
// This routine handles one 4:2:2 MCU of interleaved data
|
|
// (lines separated by srcStep) and generates a full MCU
|
|
// (i.e., two 8x8 blocks of Ch1 and two 8x8 blocks of Ch2 and Ch3).
|
|
//
|
|
// Input data is in the order:
|
|
// Ch1Ch2Ch3,,...,Ch1Ch2Ch3
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Ch1 block, Ch1 block, Ch2 block, Ch3 block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 2 pixels
|
|
// horizonatally to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDown422LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleDown411LS_MCU_8u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// No color conversion, 411 downsampling and level shift (-128)
|
|
// This routine handles one 4:1:1 MCU of interleaved data
|
|
// (lines separated by srcStep) and generates a full MCU
|
|
// (i.e., four 8x8 blocks of Ch1 and two 8x8 blocks of Ch2 and Ch3).
|
|
//
|
|
// Input data is in the order:
|
|
// Ch1Ch2Ch3,,...,Ch1Ch2Ch3
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Ch1 block, Ch1 block, Ch1 block, Ch1 block,
|
|
// Ch2 block, Ch3 block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | ch1 | ch1 | | ch2 | | ch3 |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | ch1 | ch1 |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Ch2 and Ch3 blocks would each use an average of 4 pixels
|
|
// to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleDown411LS_MCU_8u16s_C3P3R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSplit422LS_MCU_8u16s_C2P3R
|
|
//
|
|
// Purpose:
|
|
// No color conversion, no up-sampling,
|
|
// only pixel to planar transformation and level shift (+128)
|
|
// for one MCU
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in output data
|
|
// pDstMCU pointer to pointers to output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiSplit422LS_MCU_8u16s_C2P3R,(
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCMYKToYCCK444LS_MCU_8u16s_C4P4R
|
|
//
|
|
// Purpose:
|
|
// CMYK to YCCK color conversion, 444 downsampling and level shift (-128)
|
|
// This routine handles one 1:1:1:1 MCU of interleaved CMYK data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (one 8x8 luminance block, two 8x8 chrominance blocks
|
|
// and one 8x8 alpha block).
|
|
//
|
|
// Input data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 8 srcStep
|
|
// 0 +-------+--------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+--------------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y block, Cb block, Cr block, K block.
|
|
//
|
|
// 0 8 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+ +-------+
|
|
// | | | | | | | |
|
|
// | Y | | Cb | | Cr | | K |
|
|
// | | | | | | | |
|
|
// 8 +-------+ +-------+ +-------+ +-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcCMYK pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCCK pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style CMYK->YCCK conversion,
|
|
// where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCMYKToYCCK444LS_MCU_8u16s_C4P4R, (
|
|
const Ipp8u* pSrcCMYK,
|
|
int srcStep,
|
|
Ipp16s* pDstYCCK[4]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCMYKToYCCK422LS_MCU_8u16s_C4P4R
|
|
//
|
|
// Purpose:
|
|
// CMYK to YCCK color conversion, 4224 downsampling and level shift (-128)
|
|
// This routine handles one "partial" 4:2:2:4 MCU of interleaved
|
|
// RGBA_FPX DIB data (lines separated by lineoffset) and generates
|
|
// a full color converted MCU (i.e., two 8x8 luminance blocks
|
|
// and two 4x8 chrominance blocks and two 8x8 alpha blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block, K1 block, K2 block.
|
|
//
|
|
// 0 8 15 0 8 0 8 0 8 15
|
|
// 0 +-------+-------+ +-------+ +--------+ +-------+-------+
|
|
// | | | | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
|
|
// | | | | | | | | | |
|
|
// 8 +-------+-------+ +-------+ +--------+ +-------+-------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 2 pixels horizonatally
|
|
// to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcCMYK pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCCK pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style CMYK->YCCK conversion,
|
|
// where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCMYKToYCCK422LS_MCU_8u16s_C4P4R, (
|
|
const Ipp8u* pSrcCMYK,
|
|
int srcStep,
|
|
Ipp16s* pDstYCCK[4]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCMYKToYCCK411LS_MCU_8u16s_C4P4R
|
|
//
|
|
// Purpose:
|
|
// CMYK to YCCK color conversion, 4114 downsampling and level shift (-128)
|
|
// This routine handles one 4:1:1:4 MCU of interleaved CMYK data
|
|
// (lines separated by srcStep) and generates a full color converted MCU
|
|
// (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks
|
|
// and four 8x8 alpha blocks).
|
|
//
|
|
// Input data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 15 srcStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
// K1 block, K2 block, K3 block, K4 block.
|
|
//
|
|
// 0 8 15 0 8 0 8 0 8 15
|
|
// 0 +-------+--------+ +--------+ +--------+ +-------+--------+
|
|
// | | | | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
|
|
// | | | | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+ +-------+--------+
|
|
// | | | | | |
|
|
// | Y3 | Y4 | | K3 | K4 |
|
|
// | | | | | |
|
|
// 15 +-------+--------+ +-------+--------+
|
|
//
|
|
// Downsampling is done via averaging. For the above example,
|
|
// the Cb and Cr blocks would each use an average of 4 pixels
|
|
// to get 1 pixel into the output blocks.
|
|
//
|
|
// Parameter:
|
|
// pSrcCMYK pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstYCCK pointer to output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style CMYK->YCCK conversion,
|
|
// where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCMYKToYCCK411LS_MCU_8u16s_C4P4R, (
|
|
const Ipp8u* pSrcCMYK,
|
|
int srcStep,
|
|
Ipp16s* pDstYCCK[4]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiBGR555ToYCbCr444LS_MCU_16u16s_C3P3R
|
|
// ippiBGR555ToYCbCr422LS_MCU_16u16s_C3P3R
|
|
// ippiBGR555ToYCbCr411LS_MCU_16u16s_C3P3R
|
|
// ippiBGR565ToYCbCr444LS_MCU_16u16s_C3P3R
|
|
// ippiBGR565ToYCbCr422LS_MCU_16u16s_C3P3R
|
|
// ippiBGR565ToYCbCr411LS_MCU_16u16s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// Color conversions, down-sampling and level shift (-128) for one MCU
|
|
//
|
|
// Parameter:
|
|
// pSrcBGR pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDstMCU pointer to pointers to output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
|
|
// Cb = -0.16874*R - 0.33126*G + 0.50000*B
|
|
// Cr = 0.50000*R - 0.41869*G - 0.08131*B
|
|
//
|
|
// BGR555 format
|
|
// 15 8 7 0
|
|
// |xrrrrrgg|gggbbbbb|
|
|
//
|
|
// BGR565 format
|
|
// 15 8 7 0
|
|
// |rrrrrggg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiBGR555ToYCbCr444LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
IPPAPI(IppStatus, ippiBGR555ToYCbCr422LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
IPPAPI(IppStatus, ippiBGR555ToYCbCr411LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
IPPAPI(IppStatus, ippiBGR565ToYCbCr444LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
IPPAPI(IppStatus, ippiBGR565ToYCbCr422LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
IPPAPI(IppStatus, ippiBGR565ToYCbCr411LS_MCU_16u16s_C3P3R, (
|
|
const Ipp16u* pSrcBGR,
|
|
int srcStep,
|
|
Ipp16s* pDstMCU[3]))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Functions for color conversion for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToRGB_JPEG_8u_P3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to RGB color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers on input data.
|
|
// pSrc[0] pointer to YY..YY
|
|
// pSrc[1] pointer to CbCb..CbCb
|
|
// pSrc[2] pointer to CrCr..CrCr
|
|
// srcStep line offset in input data
|
|
// pDstRGB pointer to pointers to output arrays
|
|
// pDst[0] pointer to RR..RR
|
|
// pDst[1] pointer to GG..GG
|
|
// pDst[2] pointer to BB..BB
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToRGB_JPEG_8u_P3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp8u* pDstRGB[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToRGB_JPEG_8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to RGB color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// pSrcYCbCr[0] pointer to YY..YY
|
|
// pSrcYCbCr[1] pointer to CbCb..CbCb
|
|
// pSrcYCbCr[2] pointer to CrCr..CrCr
|
|
// srcStep line offset in input data
|
|
// pDstRGB pointer to output array RGBRGB..RGBRGB
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToRGB_JPEG_8u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp8u* pDstRGB,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToBGR_JPEG_8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to BGR color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// pSrcYCbCr[0] pointer to YY..YY
|
|
// pSrcYCbCr[1] pointer to CbCb..CbCb
|
|
// pSrcYCbCr[2] pointer to CrCr..CrCr
|
|
// srcStep line offset in input data
|
|
// pDstBGR pointer to output array BGRBGR..BGRBGR
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToBGR_JPEG_8u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp8u* pDstBGR,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr422ToRGB_JPEG_8u_C2C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to RGB 4:2:2 up-sampling and color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input YUY2 data (Y0 Cb0 Y1 Cr0 ..)
|
|
// srcStep line offset in input data
|
|
// pDst pointer to output array RGBRGB..RGBRGB
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// width should even number
|
|
// color convertion implemented according the following equations
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr422ToRGB_JPEG_8u_C2C3R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToRGB555_JPEG_8u16u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to RGB555 color conversation
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDstRGB pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
//
|
|
// RGB555 format
|
|
// 15 8 7 0
|
|
// |xbbbbbgg|gggrrrrr|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToRGB555_JPEG_8u16u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp16u* pDstRGB,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToBGR555_JPEG_8u16u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to BGR555 color conversation
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDstBGR pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
//
|
|
// BGR555 format
|
|
// 15 8 7 0
|
|
// |xrrrrrgg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToBGR555_JPEG_8u16u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp16u* pDstBGR,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToRGB565_JPEG_8u16u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to RGB565 color conversation
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDstRGB pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
//
|
|
// RGB565 format
|
|
// 15 8 7 0
|
|
// |bbbbbggg|gggrrrrr|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToRGB565_JPEG_8u16u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp16u* pDstRGB,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCrToBGR565_JPEG_8u16u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// YCbCr to BGR565 color conversation
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDstBGR pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations:
|
|
// R = Y + 1.40200*Cr - 179.456
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
|
|
// B = Y + 1.77200*Cb - 226.816
|
|
//
|
|
// BGR565 format
|
|
// 15 8 7 0
|
|
// |rrrrrggg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCrToBGR565_JPEG_8u16u_P3C3R, (
|
|
const Ipp8u* pSrcYCbCr[3],
|
|
int srcStep,
|
|
Ipp16u* pDstBGR,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCCKToCMYK_JPEG_8u_P4R
|
|
//
|
|
// Purpose:
|
|
// YCCK to CMYK color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcYCCK pointer to pointers to input data
|
|
// pSrc[0] pointer to YY..YY
|
|
// pSrc[1] pointer to CC..CC
|
|
// pSrc[2] pointer to CC..CC
|
|
// pSrc[3] pointer to KK..KK
|
|
// srcStep line offset in input data
|
|
// pDstCMYK pointer to pointers to output arrays
|
|
// pDst[0] pointer to CC..CC
|
|
// pDst[1] pointer to MM..MM
|
|
// pDst[2] pointer to YY..YY
|
|
// pDst[3] pointer to KK..KK
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style YCCK->CMYK conversion,
|
|
// Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
|
|
// while K (black) channel is unchanged.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCCKToCMYK_JPEG_8u_P4R, (
|
|
const Ipp8u* pSrcYCCK[4],
|
|
int srcStep,
|
|
Ipp8u* pDstCMYK[4],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCCKToCMYK_JPEG_8u_P4C4R
|
|
//
|
|
// Purpose:
|
|
// YCCK to CMYK color conversion
|
|
//
|
|
// Parameter:
|
|
// pSrcYCCK pointer to pointers to input data
|
|
// pSrc[0] pointer to YY..YY
|
|
// pSrc[1] pointer to CC..CC
|
|
// pSrc[2] pointer to CC..CC
|
|
// pSrc[3] pointer to KK..KK
|
|
// srcStep line offset in input data
|
|
// pDstCMYK pointer to output array CMYKCMYK..CMYKCMYK
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style YCCK->CMYK conversion,
|
|
// Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
|
|
// while K (black) channel is unchanged.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCCKToCMYK_JPEG_8u_P4C4R, (
|
|
const Ipp8u* pSrcYCCK[4],
|
|
int srcStep,
|
|
Ipp8u* pDstCMYK,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Sampling and color conversion functions for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr444ToRGBLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// This procedure implements the 1:1:1 upsampling and
|
|
// color space conversion from YCbCr to RGB color space
|
|
//
|
|
// Input data is in the order:
|
|
// Y block, Cb block, Cr block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | Y | | Cb | | Cr |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
// 0 8 dstStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstRGB pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr444ToRGBLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstRGB,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr422ToRGBLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->RGB color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:2:2 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstRGB pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr422ToRGBLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstRGB,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr411ToRGBLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->RGB color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:1:1 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | Y3 | Y4 |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Output data is in the order:
|
|
// RGB,RGB,...,RGB
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstRGB pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr411ToRGBLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstRGB,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr444ToBGRLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// This procedure implements the 1:1:1 upsampling and
|
|
// color space conversion from YCbCr to BGR color space
|
|
//
|
|
// Input data is in the order:
|
|
// Y block, Cb block, Cr block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | Y | | Cb | | Cr |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
// 0 8 dstStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstBGR pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr444ToBGRLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstBGR,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr422ToBGRLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->BGR color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:2:2 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstBGR pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr422ToBGRLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstBGR,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr411ToBGRLS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->BGR color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:1:1 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | Y3 | Y4 |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Output data is in the order:
|
|
// BGR,BGR,...,BGR
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstBGR pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr411ToBGRLS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDstBGR,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCbCr444ToBGR555LS_MCU_16s16u_P3C3R
|
|
// ippiYCbCr422ToBGR555LS_MCU_16s16u_P3C3R
|
|
// ippiYCbCr411ToBGR555LS_MCU_16s16u_P3C3R
|
|
// ippiYCbCr444ToBGR565LS_MCU_16s16u_P3C3R
|
|
// ippiYCbCr422ToBGR565LS_MCU_16s16u_P3C3R
|
|
// ippiYCbCr411ToBGR565LS_MCU_16s16u_P3C3R
|
|
//
|
|
// Purpose:
|
|
// Color conversions, up-sampling and level shift (+128) for one MCU
|
|
//
|
|
// Parameter:
|
|
// pSrcYCbCr pointer to pointers to input data
|
|
// pDstMCU pointer to output data
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// the color conversion equations (including level shift +128):
|
|
// R = Y + 1.40200*Cr + 128
|
|
// G = Y - 0.34414*Cb - 0.71414*Cr + 128
|
|
// B = Y + 1.77200*Cb + 128
|
|
// up-sampling is just box filter
|
|
//
|
|
// BGR555 format
|
|
// 15 8 7 0
|
|
// |xrrrrrgg|gggbbbbb|
|
|
//
|
|
// BGR565 format
|
|
// 15 8 7 0
|
|
// |rrrrrggg|gggbbbbb|
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr444ToBGR555LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr422ToBGR555LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr411ToBGR555LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr444ToBGR565LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr422ToBGR565LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiYCbCr411ToBGR565LS_MCU_16s16u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp16u* pDstBGR,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUp444LS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// This procedure implements the 1:1:1 upsampling.
|
|
// No color conversion is performed.
|
|
//
|
|
// Input data is in the order:
|
|
// C1 block, C2 block, C3 block
|
|
//
|
|
// 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+
|
|
// | | | | | |
|
|
// | C1 | | C2 | | C3 |
|
|
// | | | | | |
|
|
// 8 +-------+ +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// C1C2C3,C1C2C3,...,C1C2C3
|
|
// 0 8 dstStep
|
|
// 0 +-------+-------------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+-------------------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDst pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUp444LS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUp422LS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and output data
|
|
// formatting of DCT output blocks,
|
|
// for a subset of a 4:2:2 MCU. No color conversion
|
|
// is performed.
|
|
//
|
|
// Input data is in the order:
|
|
// C1 1th block, C1 2th block, C2 block, C3 block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// C1C2C3,C1C2C3,...,C1C2C3
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDst pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUp422LS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSampleUp411LS_MCU_16s8u_P3C3R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and output data
|
|
// formatting of DCT output blocks,
|
|
// for a subset of a 4:1:1 MCU. No color conversion
|
|
// is performed.
|
|
//
|
|
// Input data is in the order:
|
|
// C1 1th block, C1 2th block, C1 3th block, C1 4th block,
|
|
// C2 block, C3 block,
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+--------+ +--------+ +--------+
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +-------+--------+
|
|
//
|
|
// Output data is in the order:
|
|
// C1C2C3,C1C2C3,...,C1C2C3
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDst pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// up-sampling is just box filter
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSampleUp411LS_MCU_16s8u_P3C3R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiJoin422LS_MCU_16s8u_P3C2R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs planar to pixel conversion,
|
|
// preserving 422 sampling, for a subset of a 4:2:2 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block.
|
|
//
|
|
// 0 8 15 0 8 0 8
|
|
// 0 +-------+-------+ 0 +-------+ +-------+
|
|
// | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr |
|
|
// | | | | | | |
|
|
// 8 +-------+-------+ 8 +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// YCbYCr,YCbYCr,...,YCbYCr
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to the array of pointers to input data
|
|
// pDst pointer to output data
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiJoin422LS_MCU_16s8u_P3C2R, (
|
|
const Ipp16s* pSrcMCU[3],
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCCK444ToCMYKLS_MCU_16s8u_P4C4R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// This procedure implements the 1:1:1:1 upsampling and
|
|
// color space conversion from YCCK to CMYK color space
|
|
//
|
|
// Input data is in the order:
|
|
// Y block, Cb block, Cr block, K block.
|
|
//
|
|
// 0 8 0 8 0 8 0 8
|
|
// 0 +-------+ +-------+ +-------+ +-------+
|
|
// | | | | | | | |
|
|
// | Y | | Cb | | Cr | | K |
|
|
// | | | | | | | |
|
|
// 8 +-------+ +-------+ +-------+ +-------+
|
|
//
|
|
// Output data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 8 dstStep
|
|
// 0 +-------+--------------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +-------+--------------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstCMYK pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style YCCK->CMYK conversion,
|
|
// Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCCK444ToCMYKLS_MCU_16s8u_P4C4R, (
|
|
const Ipp16s* pSrcMCU[4],
|
|
Ipp8u* pDstCMYK,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCCK422ToCMYKLS_MCU_16s8u_P4C4R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->RGB color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:2:2:4 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Cb block, Cr block, K1 block, K2 block.
|
|
//
|
|
// 0 8 15 0 8 0 8 0 8 15
|
|
// 0 +-------+-------+ +-------+ +--------+ +-------+-------+
|
|
// | | | | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
|
|
// | | | | | | | | | |
|
|
// 8 +-------+-------+ +-------+ +--------+ +-------+-------+
|
|
//
|
|
// Output data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 8 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstCMYK pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style YCCK->CMYK conversion,
|
|
// Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCCK422ToCMYKLS_MCU_16s8u_P4C4R, (
|
|
const Ipp16s* pSrcMCU[4],
|
|
Ipp8u* pDstCMYK,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiYCCK411ToCMYKLS_MCU_16s8u_P4C4R
|
|
//
|
|
// Purpose:
|
|
//
|
|
// Performs upsampling and YCbCr->RGB color conversion,
|
|
// and output data formatting of DCT output blocks,
|
|
// for a subset of a 4:1:1:4 MCU.
|
|
//
|
|
// Input data is in the order:
|
|
// Y1 block, Y2 block, Y3 block, Y4 block,
|
|
// Cb block, Cr block,
|
|
// K1 block, K2 block, K3 block, K4 block.
|
|
//
|
|
// 0 8 15 0 8 0 8 0 8 15
|
|
// 0 +-------+--------+ +--------+ +--------+ +-------+--------+
|
|
// | | | | | | | | | |
|
|
// | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
|
|
// | | | | | | | | | |
|
|
// 8 +-------+--------+ +--------+ +--------+ +-------+--------+
|
|
// | | | | | |
|
|
// | Y3 | Y4 | | K3 | K4 |
|
|
// | | | | | |
|
|
// 15 +-------+--------+ +-------+--------+
|
|
//
|
|
// Output data is in the order:
|
|
// CMYK,CMYK,...,CMYK
|
|
//
|
|
// 0 15 dstStep
|
|
// 0 +---------------+-------+
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// | | |
|
|
// 15 +---------------+-------+
|
|
//
|
|
// Parameter:
|
|
// pSrcMCU pointer to input data
|
|
// pDstCMYK pointer to pointers to output arrays
|
|
// dstStep line offset in output data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// This version handles Adobe-style YCCK->CMYK conversion,
|
|
// Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
|
|
// while K (black) channel is unchanged.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiYCCK411ToCMYKLS_MCU_16s8u_P4C4R, (
|
|
const Ipp16s* pSrcMCU[4],
|
|
Ipp8u* pDstCMYK,
|
|
int dstStep))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// DCT + Quantization + Level Shift Functions for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantFwd8x8LS_JPEG_8u16s_C1R
|
|
//
|
|
// Purpose:
|
|
// Forward DCT transform, quantization and level shift
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source color component data
|
|
// srcStep - line offset for source data
|
|
// pDst - pointer to output 8x8 block
|
|
// of quantized DCT coefficients
|
|
// pQuantFwdTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// DCT is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
|
|
// Quantization is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines,
|
|
// Annex A, A.3.4 DCT coefficient quantization and dequantization.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantFwd8x8LS_JPEG_8u16s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
const Ipp16u* pQuantFwdTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantFwd8x8LS_JPEG_16u16s_C1R
|
|
//
|
|
// Purpose:
|
|
// Forward DCT transform, quantization and level shift
|
|
// for 12-bit data
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source color component data
|
|
// srcStep - line offset for source data
|
|
// pDst - pointer to output 8x8 block
|
|
// of quantized DCT coefficients
|
|
// pQuantFwdTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantFwd8x8LS_JPEG_16u16s_C1R, (
|
|
const Ipp16u* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
const Ipp32f* pQuantFwdTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// DCT + Quantization Functions for encoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantFwd8x8_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Forward DCT transform and quantization
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source 8x8 block
|
|
// pDst - pointer to output 8x8 block
|
|
// pQuantFwdTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantFwd8x8_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
const Ipp16u* pQuantFwdTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantFwd8x8_JPEG_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Forward DCT transform and quantization
|
|
//
|
|
// Parameter:
|
|
// pSrcDst - pointer to 8x8 block
|
|
// pQuantFwdTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantFwd8x8_JPEG_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
const Ipp16u* pQuantFwdTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// DCT + Dequantization + Level Shift Functions for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantInv8x8LS_JPEG_16s8u_C1R
|
|
// ippiDCTQuantInv8x8LS_4x4_JPEG_16s8u_C1R
|
|
// ippiDCTQuantInv8x8LS_2x2_JPEG_16s8u_C1R
|
|
// ippiDCTQuantInv8x8LS_1x1_JPEG_16s8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Inverse DCT transform, de-quantization and level shift for
|
|
// 1) the whole 8x8 block
|
|
// 2) top-left 4x4 quadrant, in case when rest of coefs are zero
|
|
// 3) top-left 2x2 part of 8x8 block, in case when rest of coefs are zero
|
|
// 4) only DC coef is not zero in 8x8 block
|
|
//
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to input 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output color component data
|
|
// dstStep - line offset for destination data
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// DCT is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
|
|
// Quantization is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines,
|
|
// Annex A, A.3.4 DCT coefficient quantization and dequantization.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_JPEG_16s8u_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_4x4_JPEG_16s8u_C1R,(
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_2x2_JPEG_16s8u_C1R,(
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_1x1_JPEG_16s8u_C1R,(
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantInv8x8To2x2LS_JPEG_16s8u_C1R
|
|
// ippiDCTQuantInv8x8To4x4LS_JPEG_16s8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Inverse DCT transform, de-quantization and level shift and
|
|
// DCT downsampling for 1/2 and 1/4 scale factor
|
|
//
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to input 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output color component data
|
|
// dstStep - line offset for destination data
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// DCT is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
|
|
// Quantization is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines,
|
|
// Annex A, A.3.4 DCT coefficient quantization and dequantization.
|
|
// Level Shift is defined in ISO/IEC 10918-1,
|
|
// Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8To4x4LS_JPEG_16s8u_C1R,(
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8To2x2LS_JPEG_16s8u_C1R,(
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantInv8x8LS_JPEG_16s16u_C1R
|
|
//
|
|
// Purpose:
|
|
// Inverse DCT transform, de-quantization and level shift
|
|
// for 12-bit data
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to input 8x8 block of quantized DCT coefficients
|
|
// pDst - pointer to output color component data
|
|
// dstStep - line offset for destination data
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_JPEG_16s16u_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16u* pDst,
|
|
int dstStep,
|
|
const Ipp32f* pQuantInvTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// DCT + DeQuantization Functions for decoder
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantInv8x8_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Inverse DCT transform and de-quantization
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source 8x8 block
|
|
// pDst - pointer to output 8x8 block
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCTQuantInv8x8_JPEG_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Inverse DCT transform and de-quantization
|
|
//
|
|
// Parameter:
|
|
// pSrcDst - pointer to 8x8 block
|
|
// pQuantInvTable - pointer to Quantization table
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCTQuantInv8x8_JPEG_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
const Ipp16u* pQuantInvTable))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// lossless JPEG specific functions
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDiffPredFirstRow_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// differenciate row
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to input row of samples
|
|
// pDst - pointer to output row of differences
|
|
// width - width, in elements
|
|
// P - precision of samples, in bits
|
|
// Pt - point transform parameter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDiffPredFirstRow_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
int width,
|
|
int P,
|
|
int Pt))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDiffPredRow_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// differenciate row
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to input row of samples
|
|
// pPrevRow - pointer to previous input row of samples
|
|
// pDst - pointer to output row of differences
|
|
// width - width, in elements
|
|
// predictor - predictor
|
|
// Pt - point transform parameter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDiffPredRow_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
const Ipp16s* pPrevRow,
|
|
Ipp16s* pDst,
|
|
int width,
|
|
int predictor))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructPredFirstRow_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// undifference row
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to input row of differences
|
|
// pDst - pointer to output row of samples
|
|
// width - width, in elements
|
|
// P - precision of samples, in bits
|
|
// Pt - point transform parameter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructPredFirstRow_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
int width,
|
|
int P,
|
|
int Pt))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructPredRow_JPEG_16s_C1
|
|
//
|
|
// Purpose:
|
|
// undifference row
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to input row of differences
|
|
// pPrevRow - pointer to previous row of reconstructed samples
|
|
// pDst - pointer to output row of samples
|
|
// width - width, in elements
|
|
// predictor - predictor
|
|
// Pt - point transform parameter
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructPredRow_JPEG_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
const Ipp16s* pPrevRow,
|
|
Ipp16s* pDst,
|
|
int width,
|
|
int predictor))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// JPEG 2000 specific functions
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdRow_B53_JPEG2K_16s_C1R,
|
|
// ippiWTFwdRow_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs forward wavelet transform on image rows
|
|
// (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image;
|
|
// srcStep - step in bytes to each next line of source image ROI;
|
|
// pDstLow - pointer to low frequency component image ROI;
|
|
// dstLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pDstHigh - pointer to high frequency component image ROI;
|
|
// dstHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// dstRoiSize - ROI size for destination images.
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source image must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for destination images are supported.
|
|
//
|
|
// Source ROI size should be calculated by the following rule:
|
|
// srcRoiSize.width = 2 * dstRoiSize.width;
|
|
// srcRoiSize.height = dstRoiSize.height.
|
|
//
|
|
// If phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 2 and right border of width 1.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// left border of width 1 and right border of width 2.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdRow_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp16s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdRow_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp32s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdCol_B53_JPEG2K_16s_C1R,
|
|
// ippiWTFwdCol_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs forward wavelet transform on image columns
|
|
// (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image;
|
|
// srcStep - step in bytes to each next line of source image ROI;
|
|
// pDstLow - pointer to low frequency component image ROI;
|
|
// dstLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pDstHigh - pointer to high frequency component image ROI;
|
|
// dstHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// dstRoiSize - ROI size for destination images.
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source image must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for destination images are supported.
|
|
//
|
|
// Source ROI size should be calculated by the following rule:
|
|
// srcRoiSize.width = dstRoiSize.width;
|
|
// srcRoiSize.height = 2 * dstRoiSize.height.
|
|
//
|
|
// If phase is ippWTFilterFirstLow, it's required to apply
|
|
// top border of width 2 and bottom border of width 1.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// top border of width 1 and bottom border of width 2.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdCol_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp16s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdCol_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp32s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdColLift_B53_JPEG2K_16s_C1
|
|
// ippiWTFwdColLift_B53_JPEG2K_32s_C1
|
|
//
|
|
// Purpose:
|
|
// Low-level function for row-scan-based 2D WT implementation.
|
|
// to perform single step of forward wavelet transform on image columns
|
|
// (reversible 5,3 filter bank for JPEG 2000 lossless mode),
|
|
//
|
|
//
|
|
// Parameters:
|
|
// pSrc0 - pointer to source image row #0;
|
|
// pSrc1 - pointer to source image row #1;
|
|
// pSrc2 - pointer to source image row #2;
|
|
//
|
|
// pDstLow0 - pointer to low frequency component row #0;
|
|
// pSrcHigh0 - pointer to high frequency component row #0;
|
|
// pDstHigh1 - pointer to high frequency component row #1;
|
|
//
|
|
// width - width of rows.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width rows is less or equal zero.
|
|
//
|
|
// Notes:
|
|
//
|
|
// For each row point this function calculates:
|
|
// pDstHigh1[i] = pSrc1[i] - FLOOR( (pSrc0 [i] + pSrc2 [i] ) / 2 );
|
|
// pDstLow0 [i] = pSrc0[i] + FLOOR( (pSrcHigh0[i] + pDstHigh1[i] + 2) / 4 );
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdColLift_B53_JPEG2K_16s_C1, (
|
|
const Ipp16s* pSrc0,
|
|
const Ipp16s* pSrc1,
|
|
const Ipp16s* pSrc2,
|
|
Ipp16s* pDstLow0,
|
|
const Ipp16s* pSrcHigh0,
|
|
Ipp16s* pDstHigh1,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdColLift_B53_JPEG2K_32s_C1, (
|
|
const Ipp32s* pSrc0,
|
|
const Ipp32s* pSrc1,
|
|
const Ipp32s* pSrc2,
|
|
Ipp32s* pDstLow0,
|
|
const Ipp32s* pSrcHigh0,
|
|
Ipp32s* pDstHigh1,
|
|
int width))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvRow_B53_JPEG2K_16s_C1R,
|
|
// ippiWTInvRow_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse wavelet transform on image rows
|
|
// (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
|
|
//
|
|
// Parameters:
|
|
// pSrcLow - pointer to low frequency component image ROI;
|
|
// srcLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pSrcHigh - pointer to high frequency component image ROI;
|
|
// srcHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// srcRoiSize - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// pDst - destination image ROI;
|
|
// dstStep - step in bytes to each next line
|
|
// of source image ROI;
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source images must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for source images are supported.
|
|
//
|
|
// Destinageion ROI size should be calculated by the following rule:
|
|
// dstRoiSize.width = 2 * dstRoiSize.width;
|
|
// dstRoiSize.height = dstRoiSize.height.
|
|
//
|
|
// For low frequency component:
|
|
// if phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 0 and right border of width 1.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// left border of width 1 and right border of width 0.
|
|
// For high frequency component it's always required to have
|
|
// left and right border of equal width 1.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvRow_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp16s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvRow_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp32s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvCol_B53_JPEG2K_16s_C1R,
|
|
// ippiWTInvCol_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse wavelet transform on image columns
|
|
// (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
|
|
//
|
|
// Parameters:
|
|
// pSrcLow - pointer to low frequency component image ROI;
|
|
// srcLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pSrcHigh - pointer to high frequency component image ROI;
|
|
// srcHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// srcRoiSize - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// pDst - destination image ROI;
|
|
// dstStep - step in bytes to each next line
|
|
// of source image ROI;
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - any of the pointers is NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source images must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for source images are supported.
|
|
//
|
|
// Destination ROI size should be calculated by the following rule:
|
|
// dstRoiSize.width = dstRoiSize.width;
|
|
// dstRoiSize.height = dstRoiSize.height * 2.
|
|
//
|
|
// For low frequency component:
|
|
// if phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 0 and right border of width 1.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// left border of width 1 and right border of width 0.
|
|
// For high frequency component it's always required to have
|
|
// left and right border of equal width 1.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvCol_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp16s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvCol_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp32s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvColLift_B53_JPEG2K_16s_C1
|
|
// ippiWTInvColLift_B53_JPEG2K_32s_C1
|
|
//
|
|
// Purpose:
|
|
// Low-level function for row-scan-based 2D WT implementation.
|
|
// to perform single step of inverse wavelet transform on image columns
|
|
// (reversible 5,3 filter bank for JPEG 2000 lossless mode),
|
|
//
|
|
//
|
|
// Parameters:
|
|
//
|
|
// pSrcLow0 - pointer to low frequency component row #0;
|
|
// pSrcHigh0 - pointer to high frequency component row #0;
|
|
// pSrcHigh1 - pointer to high frequency component row #1;
|
|
//
|
|
// pSrc0 - pointer to reconstructed image row #0;
|
|
// pDst1 - pointer to reconstructed image row #1;
|
|
// pDst2 - pointer to reconstructed image row #2;
|
|
// width - width of rows.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width rows is less or equal zero.
|
|
//
|
|
// Notes:
|
|
//
|
|
// For each row point this function calculates:
|
|
// pDst2[i] = pSrcLow0[i] - FLOOR( (pSrcHigh0[i] + pSrcHigh1[i] + 2) / 4 );
|
|
// pDst1[i] = highRow0[i] + FLOOR( (pSrc0 [i] + pDst2 [i] ) / 2 );
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvColLift_B53_JPEG2K_16s_C1, (
|
|
const Ipp16s* pSrcLow0,
|
|
const Ipp16s* pSrcHigh0,
|
|
const Ipp16s* pSrcHigh1,
|
|
const Ipp16s* pSrc0,
|
|
Ipp16s* pDst1,
|
|
Ipp16s* pDst2,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvColLift_B53_JPEG2K_32s_C1, (
|
|
const Ipp32s* pSrcLow0,
|
|
const Ipp32s* pSrcHigh0,
|
|
const Ipp32s* pSrcHigh1,
|
|
const Ipp32s* pSrc0,
|
|
Ipp32s* pDst1,
|
|
Ipp32s* pDst2,
|
|
int width))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdRow_D97_JPEG2K_16s_C1R
|
|
// ippiWTFwdRow_D97_JPEG2K_32s_C1R
|
|
// ippiWTFwdRow_D97_JPEG2K_32f_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs forward wavelet transform on image rows
|
|
// (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image;
|
|
// srcStep - step in bytes to each next line of source image ROI;
|
|
// pDstLow - pointer to low frequency component image ROI;
|
|
// dstLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pDstHigh - pointer to high frequency component image ROI;
|
|
// dstHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// dstRoiSize - ROI size for destination images.
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source image must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for destination images are supported.
|
|
//
|
|
// Source ROI size should be calculated by the following rule:
|
|
// srcRoiSize.width = 2 * dstRoiSize.width;
|
|
// srcRoiSize.height = dstRoiSize.height.
|
|
//
|
|
// If phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 4 and right border of width 3.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// left border of width 3 and right border of width 4.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp16s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDstLow,
|
|
int dstLowStep,
|
|
Ipp32s* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_32f_C1R, (
|
|
const Ipp32f* pSrc,
|
|
int srcStep,
|
|
Ipp32f* pDstLow,
|
|
int dstLowStep,
|
|
Ipp32f* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdCol_D97_JPEG2K_32f_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs forward wavelet transform on image columns
|
|
// (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image;
|
|
// srcStep - step in bytes to each next line of source image ROI;
|
|
// pDstLow - pointer to low frequency component image ROI;
|
|
// dstLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pDstHigh - pointer to high frequency component image ROI;
|
|
// dstHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// dstRoiSize - ROI size for destination images.
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source image must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for destination images are supported.
|
|
//
|
|
// Source ROI size should be calculated by the following rule:
|
|
// srcRoiSize.width = dstRoiSize.width;
|
|
// srcRoiSize.height = 2 * dstRoiSize.height.
|
|
//
|
|
// If phase is ippWTFilterFirstLow, it's required to apply
|
|
// top border of width 4 and bottom border of width 3.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// top border of width 3 and bottom border of width 4.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdCol_D97_JPEG2K_32f_C1R, (
|
|
const Ipp32f* pSrc,
|
|
int srcStep,
|
|
Ipp32f* pDstLow,
|
|
int dstLowStep,
|
|
Ipp32f* pDstHigh,
|
|
int dstHighStep,
|
|
IppiSize dstRoiSize,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwdColLift_D97_JPEG2K_16s_C1
|
|
// ippiWTFwdColLift_D97_JPEG2K_32s_C1
|
|
// ippiWTFwdColLift_D97_JPEG2K_32f_C1
|
|
//
|
|
// Purpose:
|
|
// Low-level function for row-scan-based 2D WT implementation.
|
|
// to perform single step of forward wavelet transform on image columns
|
|
// (reversible 5,3 filter bank for JPEG 2000 lossless mode),
|
|
//
|
|
//
|
|
// Parameters:
|
|
// pSrc0 - pointer to source image row #0;
|
|
// pSrc1 - pointer to source image row #1;
|
|
// pSrc2 - pointer to source image row #2;
|
|
//
|
|
// pSrcDstLow0 - pointer to low frequency component row #0;
|
|
// pDstLow1 - pointer to low frequency component row #1;
|
|
// pSrcDstHigh0 - pointer to high frequency component row #0;
|
|
// pSrcDstHigh1 - pointer to high frequency component row #1;
|
|
// pDstHigh2 - pointer to high frequency component row #2;
|
|
//
|
|
// width - width of rows.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width rows is less or equal zero.
|
|
//
|
|
// Notes:
|
|
//
|
|
// For each row point this function calculates:
|
|
// pDstHigh2 [i] = pSrc1[i] + ALPHA * (pSrc0 [i] + pSrc2 [i]);
|
|
// pDstLow1 [i] = pSrc0[i] + BETA * (pSrcDstHigh1[i] + pDstHigh2[i]);
|
|
// pSrcDstHigh1[i] += GAMMA * (pSrcDstLow0 [i] + pDstLow1 [i]);
|
|
// pSrcDstLow0 [i] += DELTA * (pSrcDstHigh0[i] + pSrcDstHigh1[i]);
|
|
// pSrcDstLow0 [i] *= K;
|
|
// pSrcDstHigh0[i] *= 1. / K;
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_16s_C1, (
|
|
const Ipp16s* pSrc0,
|
|
const Ipp16s* pSrc1,
|
|
const Ipp16s* pSrc2,
|
|
Ipp16s* pSrcDstLow0,
|
|
Ipp16s* pDstLow1,
|
|
Ipp16s* pSrcDstHigh0,
|
|
Ipp16s* pSrcDstHigh1,
|
|
Ipp16s* pDstHigh2,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_32s_C1, (
|
|
const Ipp32s* pSrc0,
|
|
const Ipp32s* pSrc1,
|
|
const Ipp32s* pSrc2,
|
|
Ipp32s* pSrcDstLow0,
|
|
Ipp32s* pDstLow1,
|
|
Ipp32s* pSrcDstHigh0,
|
|
Ipp32s* pSrcDstHigh1,
|
|
Ipp32s* pDstHigh2,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_32f_C1, (
|
|
const Ipp32f* pSrc0,
|
|
const Ipp32f* pSrc1,
|
|
const Ipp32f* pSrc2,
|
|
Ipp32f* pSrcDstLow0,
|
|
Ipp32f* pDstLow1,
|
|
Ipp32f* pSrcDstHigh0,
|
|
Ipp32f* pSrcDstHigh1,
|
|
Ipp32f* pDstHigh2,
|
|
int width))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvRow_D97_JPEG2K_16s_C1R,
|
|
// ippiWTInvRow_D97_JPEG2K_32s_C1R,
|
|
// ippiWTInvRow_D97_JPEG2K_32f_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse wavelet transform on image rows
|
|
// (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
|
|
//
|
|
// Parameters:
|
|
// pSrcLow - pointer to low frequency component image ROI;
|
|
// srcLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pSrcHigh - pointer to high frequency component image ROI;
|
|
// srcHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// srcRoiSize - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// pDst - destination image ROI;
|
|
// dstStep - step in bytes to each next line
|
|
// of source image ROI;
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source images must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for source images are supported.
|
|
//
|
|
// Destinageion ROI size should be calculated by the following rule:
|
|
// dstRoiSize.width = 2 * dstRoiSize.width;
|
|
// dstRoiSize.height = dstRoiSize.height.
|
|
//
|
|
// For low frequency component:
|
|
// if phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 1 and right border of width 2.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// left border of width 2 and right border of width 1.
|
|
// For high frequency component it's always required to have
|
|
// left and right border of equal width 2.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp16s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp32s* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_32f_C1R, (
|
|
const Ipp32f* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp32f* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp32f* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvCol_D97_JPEG2K_32f_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse wavelet transform on image columns
|
|
// (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
|
|
//
|
|
// Parameters:
|
|
// pSrcLow - pointer to low frequency component image ROI;
|
|
// srcLowStep - step in bytes to each next line
|
|
// of low frequency component image;
|
|
// pSrcHigh - pointer to high frequency component image ROI;
|
|
// srcHighStep - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// srcRoiSize - step in bytes to each next line
|
|
// of high frequency component image;
|
|
// pDst - destination image ROI;
|
|
// dstStep - step in bytes to each next line
|
|
// of source image ROI;
|
|
// phase - relative position of high-pass and low-pass filters.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - any of the pointers is NULL;
|
|
// ippStsSizeErr - the width or height of ROI is less or equal zero;
|
|
//
|
|
// Notes:
|
|
// Not any fixed borders extension (wrap, symm.) will be applied!
|
|
// Source images must have valid and accessible horizontal border data
|
|
// outside of ROI.
|
|
//
|
|
// Only the same ROI sizes for source images are supported.
|
|
//
|
|
// Destination ROI size should be calculated by the following rule:
|
|
// dstRoiSize.width = dstRoiSize.width;
|
|
// dstRoiSize.height = dstRoiSize.height * 2.
|
|
//
|
|
// For low frequency component:
|
|
// if phase is ippWTFilterFirstLow, it's required to apply
|
|
// left border of width 1 and right border of width 2.
|
|
// If phase is ippWTFilterFirstHigh, it's required to apply
|
|
// top border of width 2 and bottom border of width 1.
|
|
// For high frequency component it's always required to have
|
|
// left and right border of equal width 2.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvCol_D97_JPEG2K_32f_C1R, (
|
|
const Ipp32f* pSrcLow,
|
|
int srcLowStep,
|
|
const Ipp32f* pSrcHigh,
|
|
int srcHighStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp32f* pDst,
|
|
int dstStep,
|
|
IppiWTFilterFirst phase))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInvColLift_D97_JPEG2K_16s_C1
|
|
// ippiWTInvColLift_D97_JPEG2K_32s_C1
|
|
// ippiWTInvColLift_D97_JPEG2K_32f_C1
|
|
//
|
|
// Purpose:
|
|
// Low-level function for row-scan-based 2D WT implementation.
|
|
// to perform single step of forward wavelet transform on image columns
|
|
// (reversible 5,3 filter bank for JPEG 2000 lossless mode),
|
|
//
|
|
//
|
|
// Parameters:
|
|
// pSrcLow0 - pointer to low frequency component row #0;
|
|
// pSrcHigh0 - pointer to high frequency component row #0;
|
|
// pSrcHigh1 - pointer to high frequency component row #1;
|
|
//
|
|
// pSrc0 - pointer to reconstructed image row #0;
|
|
// pSrcDst1 - pointer to reconstructed image row #1;
|
|
// pSrcDst2 - pointer to reconstructed image row #2;
|
|
// pDst3 - pointer to reconstructed image row #3;
|
|
// pDst4 - pointer to reconstructed image row #4;
|
|
//
|
|
// width - width of rows.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok;
|
|
// ippStsNullPtrErr - some of pointers are NULL;
|
|
// ippStsSizeErr - the width rows is less or equal zero.
|
|
//
|
|
// Notes:
|
|
//
|
|
// For each row point this function calculates:
|
|
// pDst4 [i] = pSrcLow0 [i] * K - DELTA * 1. / K * (pSrcHigh0[i] + pSrcHigh1[i]);
|
|
// pDst3 [i] = pSrcHigh0[i] * 1. / K - GAMMA * (pSrcDst2 [i] + pDst4 [i]);
|
|
// pSrcDst2[i] -= BETA * (pSrcDst1[i] + pDst3 [i]);
|
|
// pSrcDst1[i] -= ALPHA * (pSrc0 [i] + pSrcDst2[i]);
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_16s_C1, (
|
|
const Ipp16s* pSrcLow0,
|
|
const Ipp16s* pSrcHigh0,
|
|
const Ipp16s* pSrcHigh1,
|
|
const Ipp16s* pSrc0,
|
|
Ipp16s* pSrcDst1,
|
|
Ipp16s* pSrcDst2,
|
|
Ipp16s* pDst3,
|
|
Ipp16s* pDst4,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_32s_C1, (
|
|
const Ipp32s* pSrcLow0,
|
|
const Ipp32s* pSrcHigh0,
|
|
const Ipp32s* pSrcHigh1,
|
|
const Ipp32s* pSrc0,
|
|
Ipp32s* pSrcDst1,
|
|
Ipp32s* pSrcDst2,
|
|
Ipp32s* pDst3,
|
|
Ipp32s* pDst4,
|
|
int width))
|
|
|
|
IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_32f_C1, (
|
|
const Ipp32f* pSrcLow0,
|
|
const Ipp32f* pSrcHigh0,
|
|
const Ipp32f* pSrcHigh1,
|
|
const Ipp32f* pSrc0,
|
|
Ipp32f* pSrcDst1,
|
|
Ipp32f* pSrcDst2,
|
|
Ipp32f* pDst3,
|
|
Ipp32f* pDst4,
|
|
int width))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTGetBufSize_B53_JPEG2K_16s_C1IR,
|
|
// ippiWTGetBufSize_B53_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pSize - pointer to variable to write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_16s_C1IR, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_32s_C1IR, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwd_B53_JPEG2K_16s_C1IR,
|
|
// ippiWTFwd_B53_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrcDstTile - pointer to image buffer
|
|
// srcDstStep - step in bytes to each next line of image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to work buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_16s_C1IR, (
|
|
Ipp16s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_32s_C1IR, (
|
|
Ipp32s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInv_B53_JPEG2K_16s_C1IR,
|
|
// ippiWTInv_B53_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrcDstTile - pointer to image buffer
|
|
// srcDstStep - step in bytes to each next line of image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to work buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_16s_C1IR, (
|
|
Ipp16s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_32s_C1IR, (
|
|
Ipp32s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTGetBufSize_D97_JPEG2K_16s_C1IR,
|
|
// ippiWTGetBufSize_D97_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pSize - pointer to variable to write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_16s_C1IR, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_32s_C1IR, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwd_D97_JPEG2K_16s_C1IR,
|
|
// ippiWTFwd_D97_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrcDstTile - pointer to image buffer
|
|
// srcDstStep - step in bytes to each next line of image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to work buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_16s_C1IR, (
|
|
Ipp16s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_32s_C1IR, (
|
|
Ipp32s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInv_D97_JPEG2K_16s_C1IR,
|
|
// ippiWTInv_D97_JPEG2K_32s_C1IR
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrcDstTile - pointer to image buffer
|
|
// srcDstStep - step in bytes to each next line of image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to work buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_16s_C1IR, (
|
|
Ipp16s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_32s_C1IR, (
|
|
Ipp32s* pSrcDstTile,
|
|
int srcDstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTGetBufSize_B53_JPEG2K_16s_C1R,
|
|
// ippiWTGetBufSize_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pSize - pointer to variable to write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_16s_C1R, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_32s_C1R, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwd_B53_JPEG2K_16s_C1R,
|
|
// ippiWTFwd_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image buffer
|
|
// srcStep - step in bytes to each next line of source image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pDst[4] - pointer to destination image
|
|
// for each component (in order LxLy, LxHy, HxLy, HxHy)
|
|
// dstStep[4] - step in bytes to each next line
|
|
// for each destination image buffer
|
|
// pBuffer - pointer to buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp16s* pDst[4],
|
|
int dstStep[4],
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp32s* pDst[4],
|
|
int dstStep[4],
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInv_B53_JPEG2K_16s_C1R,
|
|
// ippiWTInv_B53_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrc[4] - pointer to source image
|
|
// for each component (in order LxLy, LxHy, HxLy, HxHy)
|
|
// srcStep[4] - step in bytes to each next line
|
|
// for each source image buffer
|
|
// pDst - pointer to destination image buffer
|
|
// srcStep - step in bytes to each next line of destination image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc[4],
|
|
int srcStep[4],
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc[4],
|
|
int srcStep[4],
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTGetBufSize_D97_JPEG2K_16s_C1R,
|
|
// ippiWTGetBufSize_D97_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pSize - pointer to variable to write size of buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_16s_C1R, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_32s_C1R, (
|
|
const IppiRect* pTileRect,
|
|
int* pSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTFwd_D97_JPEG2K_16s_C1R,
|
|
// ippiWTFwd_D97_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source image buffer
|
|
// srcStep - step in bytes to each next line of source image buffer
|
|
// pDst[4] - pointer to destination image
|
|
// for each component (in order LxLy, LxHy, HxLy, HxHy)
|
|
// dstStep[4] - step in bytes to each next line
|
|
// for each destination image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp16s* pDst[4],
|
|
int dstStep[4],
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp32s* pDst[4],
|
|
int dstStep[4],
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWTInv_D97_JPEG2K_16s_C1R
|
|
// ippiWTInv_D97_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// JPEG2000 tile-oriented forward wavelet transforms.
|
|
//
|
|
// Parameters:
|
|
// pSrc[4] - pointer to source image
|
|
// for each component (in order LxLy, LxHy, HxLy, HxHy)
|
|
// srcStep[4] - step in bytes to each next line
|
|
// for each source image buffer
|
|
// pDst - pointer to destination image buffer
|
|
// srcStep - step in bytes to each next line of destination image buffer
|
|
// pTileRect - pointer to tile rectangle structure
|
|
// pBuffer - pointer to buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_16s_C1R, (
|
|
const Ipp16s* pSrc[4],
|
|
int srcStep[4],
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc[4],
|
|
int srcStep[4],
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
const IppiRect* pTileRect,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeInitAlloc_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Allocate and initialize entropy encoder state structure.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the variable that returns the pointer
|
|
// to the allocated and initialized encoder state structure,
|
|
// codeBlockMaxSize - maximal size of codeblock for coding.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsSizeErr - error in size of codeblock,
|
|
// ippStsMemAllocErr - no memory to allocate state structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeInitAlloc_JPEG2K, (
|
|
IppiEncodeState_JPEG2K** pState,
|
|
IppiSize codeBlockMaxSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeFree_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Free and deallocate entropy encoder state structure.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to allocated and initialized encoder state structure,
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - Pointer to the context structure is NULL;
|
|
// ippStsContextMatchErr - Mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeFree_JPEG2K, (
|
|
IppiEncodeState_JPEG2K* pState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeLoadCodeBlock_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// First coding procedure that prepare data for coding.
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to source codeblock,
|
|
// srcStep - step in bytes to each next line of codeblock,
|
|
// codeBlockSize - size of codeblock,
|
|
// pState - pointer to allocated and initialized
|
|
// encoder state structure,
|
|
// subband - subband that is represented by codeblock,
|
|
// magnBits - magnitude (non fractional) bits
|
|
// in integer representation,
|
|
// codeStyleFlags - options for coding,
|
|
// mqTermType - termination mode for MQ coder,
|
|
// mqRateAppr - rate estimation model,
|
|
// pSfBits - pointer to variable that returns a number of significant bit planes,
|
|
// pNOfPasses - pointer to variable that returns a number of coding passes,
|
|
// pNOfTermPasses - pointer to variable that returns a number of terminated coding passes.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of the pointers is NULL,
|
|
// ippStsSizeErr - error in size of codeblock,
|
|
// ippStsContextMatchErr - Mismatch context structure.
|
|
//
|
|
// Notes:
|
|
// As an example if maximum value of source pixels is 0xA (binary 1010),
|
|
// then sfBits should return 4 significant bits. The higher bits will not
|
|
// be coded.
|
|
//
|
|
// Only significant non-fractional bits
|
|
// in integer representation will be coded.
|
|
// magnBits passes a number of non-fractional bits.
|
|
// For example, if magnBits = 11,
|
|
// the 20 (31-11) least-significant bits will not be coded.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeLoadCodeBlock_JPEG2K_32s_C1R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
IppiSize codeBlockSize,
|
|
IppiEncodeState_JPEG2K* pState,
|
|
IppiWTSubband subband,
|
|
int magnBits,
|
|
IppiMQTermination mqTermType,
|
|
IppiMQRateAppr mqRateAppr,
|
|
int codeStyleFlags,
|
|
int* pSfBits,
|
|
int* pNOfPasses,
|
|
int* pNOfTermPasses))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeStoreBits_JPEG2K_1u_C1R
|
|
//
|
|
// Purpose:
|
|
// Second coding procedure that forms output stream.
|
|
//
|
|
// Parameters:
|
|
// pDst - pointer to destination data buffer,
|
|
// pDstLen - pointer to destination buffer length,
|
|
// pState - pointer to allocated and initialized
|
|
// encoder state structure,
|
|
// pIsNotFinish - pointer to variable that indicates finishing of coding.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsSizeErr - size of buffer less or equal 0,
|
|
// ippStsContextMatchErr - Mismatch context structure.
|
|
//
|
|
// Notes:
|
|
// dstLen parameter used both for reading and writing,
|
|
// it should be passed to function with valid buffer length
|
|
// and it will be returned with used (filled) buffer length.
|
|
// The function can be used on the following manner:
|
|
//
|
|
// int isNotFinish = 1;
|
|
// while(isNotFinish)
|
|
// {
|
|
// int len = BUFFER_LEN;
|
|
// ippiEncodeStoreBits_JPEG2K_1u(buffer, &len, state, &isNotFinish);
|
|
// // writing_append(writing_obj, (char*)buffer, len);
|
|
// }
|
|
//
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeStoreBits_JPEG2K_1u, (
|
|
Ipp8u* pDst,
|
|
int* pDstLen,
|
|
IppiEncodeState_JPEG2K* pState,
|
|
int* pIsNotFinish))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeGetPassTermLen_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Return the length of the terminated coding pass with a given
|
|
// terminated pass number.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to allocated and initialized
|
|
// encoder state structure,
|
|
// passNumber - pass number,
|
|
// pPassLen - pointer to variable to return pass length.
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure,
|
|
// ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeGetTermPassLen_JPEG2K, (
|
|
IppiEncodeState_JPEG2K* pState,
|
|
int passNumber,
|
|
int* pPassLen))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeGetRate_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Return the esimated target bit-rate for a given pass number.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to allocated and initialized encoder state structure,
|
|
// passNumber - pass number,
|
|
// pRate - pointer to the variable that returns esimated rate.
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure,
|
|
// ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeGetRate_JPEG2K, (
|
|
IppiEncodeState_JPEG2K* pState,
|
|
int passNumber,
|
|
int* pRate))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeGetDist_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Return the esimated distortion for a given pass number.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to allocated and initialized encoder state structure,
|
|
// passNumber - pass number,
|
|
// pDist - pointer to the variable that returns esimated distortion.
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure,
|
|
// ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeGetDist_JPEG2K, (
|
|
IppiEncodeState_JPEG2K* pState,
|
|
int passNumber,
|
|
Ipp64f* pDist))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrGetStateSize_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function returns size of buffer for decoder state structure.
|
|
//
|
|
// Parameters:
|
|
// codeBlockMaxSize - the maximal size of the code-block,
|
|
// pStateSize - pointer to the variable that returns the size
|
|
// of buffer for decoder state structure,
|
|
// ippStsSizeErr - error in maximal size of codeblock.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrGetStateSize_JPEG2K, (
|
|
IppiSize codeBlockMaxSize,
|
|
int *pStateSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrInit_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function performs initialization of state structure.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the state structure
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrInit_JPEG2K, (
|
|
IppiDecodeCBProgrState_JPEG2K *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrInitAlloc_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function allocates memory for and performs initialization of
|
|
// state structure.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the variable that returns the pointer
|
|
// to the allocated and initialized encoder state structure,
|
|
// codeBlockMaxSize - the maximal size of the code-block.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsSizeErr - error in size of codeblock.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrInitAlloc_JPEG2K, (
|
|
IppiDecodeCBProgrState_JPEG2K **pState,
|
|
IppiSize codeBlockMaxSize))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrFree_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function frees memory allocated for the state structure.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the state structure
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrFree_JPEG2K, (
|
|
IppiDecodeCBProgrState_JPEG2K *pState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrAttach_JPEG2K_32s_C1R
|
|
//
|
|
// Purpose:
|
|
// The function attachs code-block destination buffer and
|
|
// set-up its parameters in state structure.
|
|
//
|
|
// Parameters:
|
|
// pDst - pointer to buffer that store code-block data,
|
|
// dstStep - step in bytes between lines of code-block,
|
|
// codeBlockSize - the size of the code-block,
|
|
// pState pointer - to the state structure,
|
|
// subband wavelet - subband type that is represented by code-block,
|
|
// sfBits - the number of significant bits in code-block,
|
|
// codeStyleFlags - coding options defined by combination of flags.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsStepErr - step value is less than or equal to zero,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
// Notes:
|
|
// The code-block data is updated in buffer
|
|
// attached by ippiDecodeProgrInit_JPEG2K function.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrAttach_JPEG2K_32s_C1R, (
|
|
Ipp32s *pDst,
|
|
int dstStep,
|
|
IppiSize codeBlockSize,
|
|
IppiDecodeCBProgrState_JPEG2K *pState,
|
|
IppiWTSubband subband,
|
|
int sfBits,
|
|
int codeStyleFlags))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrSetPassCounter_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function sets the value of internal coding pass counter.
|
|
//
|
|
// Parameters:
|
|
// nOfPasses - the number of coding passes to set,
|
|
// pState - pointer to the state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrSetPassCounter_JPEG2K, (
|
|
int nOfPasses,
|
|
IppiDecodeCBProgrState_JPEG2K *pState))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrGetPassCounter_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function gets the value of internal coding pass counter.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the state structure,
|
|
// pNOfResidualPasses - pointer to the variable to return,
|
|
// the number of residual coding passes
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrGetPassCounter_JPEG2K, (
|
|
IppiDecodeCBProgrState_JPEG2K *state,
|
|
int *pNOfResidualPasses))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrGetCurBitPlane_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function returns the current bit plane number.
|
|
//
|
|
// Parameters:
|
|
// pState - pointer to the state structure,
|
|
// pBitPlaneNum - pointer to the variable that returns the bit plane
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrGetCurBitPlaneNum_JPEG2K, (
|
|
IppiDecodeCBProgrState_JPEG2K *pState,
|
|
int *pBitPlaneNum))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCBProgrStep_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// The function performs single step of decoding progression.
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to compressed data that represent
|
|
// terminated segment from some count of coding passes,
|
|
// srcLen - length of the segment,
|
|
// pState - pointer to the state structure.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsSizeErr - error in length of terminated segment.
|
|
// ippStsContextMatchErr - mismatch context structure.
|
|
//
|
|
// Notes:
|
|
// The code-block data is updated in buffer
|
|
// attached by ippiDecodeProgrInit_JPEG2K function.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCBProgrStep_JPEG2K, (
|
|
const Ipp8u* pSrc,
|
|
int srcLen,
|
|
IppiDecodeCBProgrState_JPEG2K* pState))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeGetBufSize_JPEG2K
|
|
//
|
|
// Purpose:
|
|
// Return size of working buffer.
|
|
//
|
|
// Parameters:
|
|
// codeBlockMaxSize - maximal size of codeblock for coding.
|
|
// pSize - pointer to the variable that returns the size of working buffer
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of the pointers is NULL,
|
|
// ippStsSizeErr - error in size of codeblock,
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeGetBufSize_JPEG2K, (
|
|
IppiSize codeBlockMaxSize,
|
|
int* pSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCodeBlock_JPEG2K_1u32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Decode compressed JPEG2000 codeblock data.
|
|
//
|
|
// Parameters:
|
|
// pSrc - pointer to the source of compressed data,
|
|
// pDst - pointer to the destination for codeblock,
|
|
// dstStep - step in bytes to each next line of codeblock,
|
|
// codeBlockSize - size of codeblock,
|
|
// subband - subband that is represented by codeblock,
|
|
// sfBits - number of significant bit planes,
|
|
// nOfPasses - number of coding passes,
|
|
// pTermPassLen - pointer to the array of legnths for each terminated pass,
|
|
// nOfTermPasses - number of terminated passes,
|
|
// codeStyleFlags - options for coding,
|
|
// pErrorBitPlane - pointer to the bit plane that contain first error returned for
|
|
// damaged codeblock,
|
|
// pBuffer - pointer to the working buffer.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr - Ok,
|
|
// ippStsNullPtrErr - any of pointers is NULL,
|
|
// ippStsSizeErr - error in size of codeblock,
|
|
// ippStsJPEG2KDamagedCodeBlock - codeblock contains damaged data.
|
|
//
|
|
// Notes:
|
|
// errorBitPlane can be NULL if such information does not required.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCodeBlock_JPEG2K_1u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
IppiSize codeBlockSize,
|
|
IppiWTSubband subband,
|
|
int sfBits,
|
|
int nOfPasses,
|
|
const int* pTermPassLen,
|
|
int nOfTermPasses,
|
|
int codeStyleFlags,
|
|
int* pErrorBitPlane,
|
|
Ipp8u* pBuffer))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRCTFwd_JPEG2K_16s_C3P3R
|
|
// ippiRCTFwd_JPEG2K_32s_C3P3R
|
|
//
|
|
// Purpose:
|
|
// forward reversible component transformation
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// Y0 = (I0 + 2*I1 + I2) >> 2
|
|
// Y1 = I2 - I1
|
|
// Y2 = I0 - I1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_16s_C3P3R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_32s_C3P3R, (
|
|
const Ipp32s* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDst[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ////////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRCTFwd_JPEG2K_16s_P3IR
|
|
// ippiRCTFwd_JPEG2K_32s_P3IR
|
|
//
|
|
// Purpose:
|
|
// forward reversible color conversion (three planes, in-place)
|
|
//
|
|
// Parameter:
|
|
// pSrcDst pointer to pointers to input/ouput data
|
|
// srcDstStep line offset in input/ouput data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// Y0 = (I0 + 2*I1 + I2) >> 2
|
|
// Y1 = I2 - I1
|
|
// Y2 = I0 - I1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_16s_P3IR, (
|
|
Ipp16s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_32s_P3IR, (
|
|
Ipp32s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRCTInv_JPEG2K_16s_P3C3R
|
|
// ippiRCTInv_JPEG2K_32s_P3C3R
|
|
//
|
|
// Purpose:
|
|
// inverse reversible component transformation
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// I1 = Y0 - ((Y2 + Y1) >> 2)
|
|
// I0 = Y2 + I1
|
|
// I2 = Y1 + I1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRCTInv_JPEG2K_16s_P3C3R, (
|
|
const Ipp16s* pSrc[3],
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiRCTInv_JPEG2K_32s_P3C3R, (
|
|
const Ipp32s* pSrc[3],
|
|
int srcStep,
|
|
Ipp32s* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ////////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiRCTInv_JPEG2K_16s_P3IR
|
|
// ippiRCTInv_JPEG2K_32s_P3IR
|
|
//
|
|
// Purpose:
|
|
// inverse reversible color conversion (three planes, in-place)
|
|
//
|
|
// Parameter:
|
|
// pSrcDst pointer to pointers to input/ouput data
|
|
// srcDstStep line offset in input/ouput data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// I1 = Y0 - ((Y2 + Y1) >> 2)
|
|
// I0 = Y2 + I1
|
|
// I2 = Y1 + I1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiRCTInv_JPEG2K_16s_P3IR, (
|
|
Ipp16s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiRCTInv_JPEG2K_32s_P3IR, (
|
|
Ipp32s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiICTFwd_JPEG2K_32f_C3P3R
|
|
//
|
|
// Purpose:
|
|
// forward irreversible component transformation
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to pointers to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// Y0 = 0.299 *I0 + 0.587 *I1 + 0.114 *I2
|
|
// Y1 = -0.16875*I0 - 0.33126*I1 + 0.5 *I2
|
|
// Y2 = 0.5 *I0 - 0.41869*I1 - 0.08131*I2
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32f_C3P3R, (
|
|
const Ipp32f* pSrc,
|
|
int srcStep,
|
|
Ipp32f* pDst[3],
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ////////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiICTFwd_JPEG2K_16s_P3IR
|
|
// ippiICTFwd_JPEG2K_32s_P3IR
|
|
// ippiICTFwd_JPEG2K_32f_P3IR
|
|
//
|
|
// Purpose:
|
|
// forward irreversible color conversion (three planes, in-place)
|
|
//
|
|
// Parameter:
|
|
// pSrcDst pointer to pointers to input/ouput data
|
|
// srcDstStep line offset in input/ouput data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// Y0 = 0.299 *I0 + 0.587 *I1 + 0.114 *I2
|
|
// Y1 = -0.16875*I0 - 0.33126*I1 + 0.5 *I2
|
|
// Y2 = 0.5 *I0 - 0.41869*I1 - 0.08131*I2
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiICTFwd_JPEG2K_16s_P3IR, (
|
|
Ipp16s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32s_P3IR, (
|
|
Ipp32s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32f_P3IR, (
|
|
Ipp32f* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiICTInv_JPEG2K_32f_P3C3R
|
|
//
|
|
// Purpose:
|
|
// inverse irreversible component transformation
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to pointers to input data
|
|
// srcStep line offset in input data
|
|
// pDst pointer to output data
|
|
// dstStep line offset in output data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// I0 = Y0 + 1.402 *Y2
|
|
// I1 = Y0 - 0.34413*Y1 - 0.71414*Y2
|
|
// I2 = Y0 + 1.772 *Y1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiICTInv_JPEG2K_32f_P3C3R, (
|
|
const Ipp32f* pSrc[3],
|
|
int srcStep,
|
|
Ipp32f* pDst,
|
|
int dstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* ////////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiICTInv_JPEG2K_16s_P3IR
|
|
// ippiICTInv_JPEG2K_32s_P3IR
|
|
// ippiICTInv_JPEG2K_32f_P3IR
|
|
//
|
|
// Purpose:
|
|
// inverse irreversible color conversion (three planes, in-place)
|
|
//
|
|
// Parameter:
|
|
// pSrcDst pointer to pointers to input/ouput data
|
|
// srcDstStep line offset in input/ouput data
|
|
// roiSize ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// color conversion equations:
|
|
// I0 = Y0 + 1.402 *Y2
|
|
// I1 = Y0 - 0.34413*Y1 - 0.71414*Y2
|
|
// I2 = Y0 + 1.772 *Y1
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiICTInv_JPEG2K_16s_P3IR, (
|
|
Ipp16s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiICTInv_JPEG2K_32s_P3IR, (
|
|
Ipp32s* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
IPPAPI(IppStatus, ippiICTInv_JPEG2K_32f_P3IR, (
|
|
Ipp32f* pSrcDst[3],
|
|
int srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// TIFF specific functions
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiPackBits_TIFF_8u_C1
|
|
//
|
|
// Purpose:
|
|
// encode bytes using RLE algorithm according TIFF 6.0 spec
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input buffer to keep Byte Segment or part of Byte Segment
|
|
// srcLenBytes length, in bytes, of input buffer
|
|
// pDst pointer to output buffer
|
|
// pDstCurrPos pointer to the current byte position in output buffer
|
|
// dstLenBytes length, in bytes, of output buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// function implements PackBits algorithm according TIFF 6.0 spec
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiPackBitsRow_TIFF_8u_C1,(
|
|
const Ipp8u* pSrc,
|
|
int srcLenBytes,
|
|
Ipp8u* pDst,
|
|
int* pDstCurrPos,
|
|
int dstLenBytes))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiUnpackBits_TIFF_8u_C1
|
|
//
|
|
// Purpose:
|
|
// decode bytes using RLE algorithm according TIFF 6.0 spec
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to RLE encoded data
|
|
// pSrcCurrPos pointer to current position in source data
|
|
// srcLenBytes length, in bytes, of input data
|
|
// pDst pointer to buffer which receive decoded data
|
|
// dstLenBytes length, in bytes, of output buffer
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// function implements UnPackBits algorithm according TIFF 6.0 spec
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiUnpackBitsRow_TIFF_8u_C1,(
|
|
const Ipp8u* pSrc,
|
|
int* pSrcCurrPos,
|
|
int srcLenBytes,
|
|
Ipp8u* pDst,
|
|
int dstLenBytes))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSplitRow_TIFF_16u8u_C1
|
|
//
|
|
// Purpose:
|
|
// Split image row into two Byte Segment
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source
|
|
// pDst - pointer to output arrays
|
|
// dstLen - naumber of elements in output arrays
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSplitRow_TIFF_16u8u_C1,(
|
|
const Ipp16u* pSrc,
|
|
Ipp8u* pDst[2],
|
|
int dstLen))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiJoinRow_TIFF_8u16u_C1
|
|
//
|
|
// Purpose:
|
|
// Join two decoded Byte Segment into row of image
|
|
//
|
|
// Parameter:
|
|
// pSrc - pointer to source arrays
|
|
// pDst - pointer to output array
|
|
// dstLen - naumber of elements in output array
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiJoinRow_TIFF_8u16u_C1,(
|
|
const Ipp8u* pSrc[2],
|
|
Ipp16u* pDst,
|
|
int dstLen))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Texture Compression specific functions
|
|
/////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureEncodeBlockFromRGBA_DXT1_8u_C4C1R
|
|
//
|
|
// Purpose:
|
|
// compress RGBA image to DXT1 blocks
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input image
|
|
// srcStep raster line width, in bytes
|
|
// srcRoi ROI size
|
|
// pDst pointer to output DXT1 data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT1_8u_C4C1R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp32u srcStep,
|
|
IppiSize srcRoi,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureEncodeBlockFromRGBA_DXT3_8u_C4C1R
|
|
//
|
|
// Purpose:
|
|
// compress RGBA image to DXT3 blocks
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input image
|
|
// srcStep raster line width, in bytes
|
|
// srcRoi ROI size
|
|
// pDst pointer to output DXT3 data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT3_8u_C4C1R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp32u srcStep,
|
|
IppiSize srcRoi,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureEncodeBlockFromRGBA_DXT5_8u_C4C1R
|
|
//
|
|
// Purpose:
|
|
// compress RGBA image to DXT5 blocks
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input image
|
|
// srcStep raster line width, in bytes
|
|
// srcRoi ROI size
|
|
// pDst pointer to output DXT5 data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT5_8u_C4C1R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp32u srcStep,
|
|
IppiSize srcRoi,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureEncodeBlockFromYCoCg_DXT5_8u_C3C1R
|
|
//
|
|
// Purpose:
|
|
// compress YCoCg image to DXT5 blocks
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input image
|
|
// srcStep raster line width, in bytes
|
|
// srcRoi ROI size
|
|
// pDst pointer to output DXT5 data
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureEncodeBlockFromYCoCg_DXT5_8u_C3C1R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp32u srcStep,
|
|
IppiSize srcRoi,
|
|
Ipp8u* pDst))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureDecodeBlockToRGBA_DXT1_8u_C1C4R
|
|
//
|
|
// Purpose:
|
|
// decompress DXT1 blocks to RGBA image
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input DXT1 data
|
|
// pDst pointer to output image
|
|
// dstStep raster line width, in bytes
|
|
// dstRoi ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT1_8u_C1C4R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp8u* pDst,
|
|
Ipp32u dstStep,
|
|
IppiSize dstRoi))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureDecodeBlockToRGBA_DXT3_8u_C1C4R
|
|
//
|
|
// Purpose:
|
|
// decompress DXT3 blocks to RGBA image
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input DXT3 data
|
|
// pDst pointer to output image
|
|
// dstStep raster line width, in bytes
|
|
// dstRoi ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT3_8u_C1C4R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp8u* pDst,
|
|
Ipp32u dstStep,
|
|
IppiSize dstRoi))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureDecodeBlockToRGBA_DXT5_8u_C1C4R
|
|
//
|
|
// Purpose:
|
|
// decompress DXT5 blocks to RGBA image
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input DXT5 data
|
|
// pDst pointer to output image
|
|
// dstStep raster line width, in bytes
|
|
// dstRoi ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT5_8u_C1C4R,(
|
|
const Ipp8u* pSrc,
|
|
Ipp8u* pDst,
|
|
Ipp32u dstStep,
|
|
IppiSize dstRoi))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiTextureDecodeBlockToRGBA_BC7_8u_C1C4R
|
|
//
|
|
// Purpose:
|
|
// decompress BC7 blocks to RGBA image
|
|
//
|
|
// Parameter:
|
|
// pSrc pointer to input BC7 data
|
|
// pDst pointer to output image
|
|
// dstStep raster line width, in bytes
|
|
// dstRoi ROI size
|
|
//
|
|
// Returns:
|
|
// IppStatus
|
|
//
|
|
// Notes:
|
|
// negative line step is not supported
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_BC7_8u_C1C4R,(
|
|
const Ipp8u* src,
|
|
Ipp8u* dst,
|
|
Ipp32u dstStep,
|
|
IppiSize dstRoi))
|
|
|
|
|
|
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// High Definition Photo functions
|
|
///////////////////////////////////////////////////////////////////////////// */
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Photo Core Transform functions
|
|
*/
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Names:
|
|
// ippiPCTFwd16x16_HDP_32s_C1IR,
|
|
// ippiPCTFwd8x16_HDP_32s_C1IR,
|
|
// ippiPCTFwd8x8_HDP_32s_C1IR
|
|
// ippiPCTFwd_HDP_32s_C1IR
|
|
// Purpose: Photo Core Transform Forward 1st stage
|
|
// Returns:
|
|
// ippStsNoErr OK
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr roi.width or roi.height is less than or equal to zero
|
|
// or is not a multiple of four
|
|
// ippStsSizeErr srcDstStep is less than (roi.width * sizeof(datatype))
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the source/destination image
|
|
// srcDstStep Step through the source/destination image
|
|
// roiSize Size of the ROI
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiPCTFwd16x16_HDP_32s_C1IR, (
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTFwd8x16_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTFwd8x8_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTFwd_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////
|
|
// Names:
|
|
// ippiPCTInv16x16_HDP_32s_C1IR,
|
|
// ippiPCTInv8x16_HDP_32s_C1IR,
|
|
// ippiPCTInv8x8_HDP_32s_C1IR
|
|
// ippiPCTInv_HDP_32s_C1IR
|
|
// Purpose: Photo Core Transform Inverse 1st stage
|
|
// Returns:
|
|
// ippStsNoErr OK
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr roi.width or roi.height is less than or equal to zero
|
|
// or is not a multiple of four
|
|
// ippStsSizeErr srcDstStep is less than (roi.width * sizeof(datatype))
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the source/destination image
|
|
// srcDstStep Step through the source/destination image
|
|
// roiSize Size of the ROI
|
|
*/
|
|
IPPAPI(IppStatus, ippiPCTInv16x16_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTInv8x16_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTInv8x8_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep))
|
|
IPPAPI(IppStatus, ippiPCTInv_HDP_32s_C1IR,(
|
|
Ipp32s* pSrcDst,
|
|
Ipp32u srcDstStep,
|
|
IppiSize roiSize))
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#if defined (_IPP_STDCALL_CDECL)
|
|
#undef _IPP_STDCALL_CDECL
|
|
#define __stdcall __cdecl
|
|
#endif
|
|
|
|
#endif /* __IPPJ_H__ */
|
|
|
|
/* //////////////////////// End of file "ippj.h" ////////////////////////// */
|
|
|