/* /////////////////////////////////////////////////////////////////////////// // // 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" ////////////////////////// */