10c1bc742181ded4930842b46e9507372f0b1b963James Dong/* ----------------------------------------------------------------
20c1bc742181ded4930842b46e9507372f0b1b963James Dong *
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong * File Name:  omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC.c
50c1bc742181ded4930842b46e9507372f0b1b963James Dong * OpenMAX DL: v1.0.2
60c1bc742181ded4930842b46e9507372f0b1b963James Dong * Revision:   12290
70c1bc742181ded4930842b46e9507372f0b1b963James Dong * Date:       Wednesday, April 9, 2008
80c1bc742181ded4930842b46e9507372f0b1b963James Dong *
90c1bc742181ded4930842b46e9507372f0b1b963James Dong * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
100c1bc742181ded4930842b46e9507372f0b1b963James Dong *
110c1bc742181ded4930842b46e9507372f0b1b963James Dong *
120c1bc742181ded4930842b46e9507372f0b1b963James Dong *
130c1bc742181ded4930842b46e9507372f0b1b963James Dong * H.264 decode coefficients module
140c1bc742181ded4930842b46e9507372f0b1b963James Dong *
150c1bc742181ded4930842b46e9507372f0b1b963James Dong */
160c1bc742181ded4930842b46e9507372f0b1b963James Dong
170c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "omxtypes.h"
180c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "armOMX.h"
190c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "omxVC.h"
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "armCOMM.h"
220c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "armVC.h"
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong/**
250c1bc742181ded4930842b46e9507372f0b1b963James Dong * Function: omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC
260c1bc742181ded4930842b46e9507372f0b1b963James Dong *
270c1bc742181ded4930842b46e9507372f0b1b963James Dong * Description:
280c1bc742181ded4930842b46e9507372f0b1b963James Dong * Performs CAVLC decoding and inverse raster scan for 2x2 block of
290c1bc742181ded4930842b46e9507372f0b1b963James Dong * ChromaDCLevel. The decoded coefficients in packed position-coefficient
300c1bc742181ded4930842b46e9507372f0b1b963James Dong * buffer are stored in increasing raster scan order, namely position order.
310c1bc742181ded4930842b46e9507372f0b1b963James Dong *
320c1bc742181ded4930842b46e9507372f0b1b963James Dong * Remarks:
330c1bc742181ded4930842b46e9507372f0b1b963James Dong *
340c1bc742181ded4930842b46e9507372f0b1b963James Dong * Parameters:
350c1bc742181ded4930842b46e9507372f0b1b963James Dong * [in]	ppBitStream		Double pointer to current byte in bit stream
360c1bc742181ded4930842b46e9507372f0b1b963James Dong *								buffer
370c1bc742181ded4930842b46e9507372f0b1b963James Dong * [in]	pOffset			Pointer to current bit position in the byte
380c1bc742181ded4930842b46e9507372f0b1b963James Dong *								pointed to by *ppBitStream
390c1bc742181ded4930842b46e9507372f0b1b963James Dong * [out]	ppBitStream		*ppBitStream is updated after each block is decoded
400c1bc742181ded4930842b46e9507372f0b1b963James Dong * [out]	pOffset			*pOffset is updated after each block is decoded
410c1bc742181ded4930842b46e9507372f0b1b963James Dong * [out]	pNumCoeff		Pointer to the number of nonzero coefficients
420c1bc742181ded4930842b46e9507372f0b1b963James Dong *								in this block
430c1bc742181ded4930842b46e9507372f0b1b963James Dong * [out]	ppPosCoefbuf	Double pointer to destination residual
440c1bc742181ded4930842b46e9507372f0b1b963James Dong *								coefficient-position pair buffer
450c1bc742181ded4930842b46e9507372f0b1b963James Dong *
460c1bc742181ded4930842b46e9507372f0b1b963James Dong * Return Value:
470c1bc742181ded4930842b46e9507372f0b1b963James Dong * Standard omxError result. See enumeration for possible result codes.
480c1bc742181ded4930842b46e9507372f0b1b963James Dong *
490c1bc742181ded4930842b46e9507372f0b1b963James Dong */
500c1bc742181ded4930842b46e9507372f0b1b963James Dong
510c1bc742181ded4930842b46e9507372f0b1b963James DongOMXResult omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC (
520c1bc742181ded4930842b46e9507372f0b1b963James Dong     const OMX_U8** ppBitStream,
530c1bc742181ded4930842b46e9507372f0b1b963James Dong     OMX_S32* pOffset,
540c1bc742181ded4930842b46e9507372f0b1b963James Dong     OMX_U8* pNumCoeff,
550c1bc742181ded4930842b46e9507372f0b1b963James Dong     OMX_U8** ppPosCoefbuf
560c1bc742181ded4930842b46e9507372f0b1b963James Dong )
570c1bc742181ded4930842b46e9507372f0b1b963James Dong
580c1bc742181ded4930842b46e9507372f0b1b963James Dong{
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    return armVCM4P10_DecodeCoeffsToPair(ppBitStream, pOffset, pNumCoeff,
600c1bc742181ded4930842b46e9507372f0b1b963James Dong                                         ppPosCoefbuf, 17, 4);
610c1bc742181ded4930842b46e9507372f0b1b963James Dong
620c1bc742181ded4930842b46e9507372f0b1b963James Dong}
63