QuantInvIntraUniform_VC1, QuantInvIntraNonuniform_VC1

Perform uniform/nonuniform dequantization of 8X8 intra blocks.

Syntax

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);

Parameters

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.

Description

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.

Intra 8x8 Block Dequantization



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

QuantInvIntraUniform_VC1 Usage

{
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
*/
}

QuantInvIntraNonuniform_VC1 Usage

{
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
*/
}

Return Values

ippStsNoErr

Indicates no error.

ippStsNullPtrErr

Indicates an error condition when pSrcDst or pDstSizeNZ is NULL.


Submit feedback on this help topic

Copyright © 2000 - 2010, Intel Corporation. All rights reserved.