Perform uniform/nonuniform dequantization of 8X8 intra blocks.
IppStatus ippiQuantInvIntraUniform_VC1_16s_C1IR(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppSize* pDstSizeNZ );
IppStatus ippiQuantInvIntraNonuniform_VC1_16s_C1IR(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppSize* pDstSizeNZ );
IppStatus ippiQuantInvIntraUniform_VC1_16s_C1R(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize* pDstSizeNZ);
IppStatus ippiQuantInvIntraNonuniform_VC1_16s_C1R(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize* pDstSizeNZ);
pSrcDst |
Pointer to the source and destination block. |
srcDstStep |
Distance in bytes between starts of the consecutive lines in the source and destination blocks. |
doubleQuant |
Dequant coefficient; should be within the range [2, 62]. |
pDstSizeNZ |
Pointer to a size of the top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. See Figure "Inter 8x4 Block Dequantization". |
pSrc |
Pointer to the source block. |
srcStep |
Distance in bytes between starts of the consecutive lines in the source block. |
pDst |
Pointer to the destination block. |
dstStep |
Distance in bytes between starts of the consecutive lines in the destination block. |
These functions are declared in the ippvc.h file.
The doubleQuant parameter should be equal to 2*MQUANT+HALFQP, where MQUANT and HALFQP are defined in VC-1 standard.
The functions perform dequantization of all coefficients in intra block (except DC) according to 8.1.2.8 of [SMPTE421M].
In the case of uniform dequantization:
a[i]=quant_coef*a[i];
In the case of nonuniform dequantization:
a[i]=quant_coef*a[i] + sign(a[i])*(quant_coef >> 1);
where a[i] is the AC coefficient of the intra block, and quant_coef is the dequant coefficient.
In this case, pDstSizeNZ -> width is equal to 7, and pDstSizeNZ -> height is equal to 6.
See Example “QuantInvIntraUniform_VC1 Usage” and Example “QuantInvIntraNonuniform_VC1 Usage” for usage of the in-place functions
{ Ipp16s* pSrcDstData = pointer_on_source_and_destination_block; Ipp32s doubleQuant = quant_coefficient; /* It should be an even number in the range [2,62];*/ Ipp32s srcDstStep = source_and_destination_step; /* Step of the pointer pSrcDstData (source and destination array) in bytes */ IppiSize dstSizeNZ; /* The size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. Example (intra block): 16 0 0 -3 0 1 1 0 1 1 0 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 In this case dstSizeNZ.width is equal to 7, dstSizeNZ.height is equal to 6 */ IppStatus result; /* ippStsNoErr Indicates no error ippStsNullPtrErr Indicates an error when pSrcDstData is NULL */ result = ippiQuantInvIntraUniform_VC1_16s_C1IR( pSrcDstData, srcDstStep, doubleQuant, &dstSizeNZ ); /* Performs uniform dequantization process for all coefficients in the intra block (except DC) according to 8.1.2.8 "Inverse AC Coefficient Quantization" specification SMPTE 421M */ }
{ Ipp16s* pSrcDstData = pointer_on_source_and_destination_block; Ipp32s doubleQuant = quant_coefficient; /* It should be an even number in the range [2,62];*/ Ipp32s srcDstStep = source_and_destination_step; /* Step of the pointer pSrcDstData (source and destination array) in bytes */ IppiSize dstSizeNZ; /* The size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. Example (intra block): 16 0 0 -3 0 1 1 0 1 1 0 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 In this case dstSizeNZ.width is equal to 7, dstSizeNZ.height is equal to 6 */ IppStatus result; /* ippStsNoErr Indicates no error ippStsNullPtrErr Indicates an error when pSrcDstData is NULL */ result = ippiQuantInvIntraNonuniform_VC1_16s_C1IR( pSrcDstData, srcDstStep, doubleQuant, &dstSizeNZ ); /* Performs nonuniform dequantization process for all coefficients in the intra block (except DC) according to 8.1.2.8 "Inverse AC Coefficient Quantization" specification SMPTE 421M */ }
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error condition when pSrcDst or pDstSizeNZ is NULL. |
Copyright © 2000 - 2010, Intel Corporation. All rights reserved.