⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 armvcm4p2_decodevlczigzag_intra.c

📁 The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processi
💻 C
字号:
/** *  * File Name:  armVCM4P2_DecodeVLCZigzag_intra.c * OpenMAX DL: v1.0.2 * Revision:   10586 * Date:       Wednesday, March 5, 2008 *  * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. *  *  *  * Description: * Contains modules for filling of the coefficient buffer * */ #include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armVC.h"#include "armCOMM_Bitstream.h"#include "armCOMM.h"#include "armVCM4P2_Huff_Tables_VLC.h"#include "armVCM4P2_ZigZag_Tables.h"/** * Function: armVCM4P2_DecodeVLCZigzag_Intra * * Description: * Performs VLC decoding and inverse zigzag scan for one intra coded block. * * Remarks: * * Parameters: * [in] ppBitStream     pointer to the pointer to the current byte in *                              the bitstream buffer * [in] pBitOffset      pointer to the bit position in the byte pointed *                              to by *ppBitStream. *pBitOffset is valid within *                              [0-7]. * [in] predDir         AC prediction direction which is used to decide *                              the zigzag scan pattern. It takes one of the *                              following values: *                              OMX_VC_NONE  AC prediction not used; *                                              perform classical zigzag scan; *                              OMX_VC_HORIZONTAL    Horizontal prediction; *                                                      perform alternate-vertical *                                                      zigzag scan; *                              OMX_VC_VERTICAL      Vertical prediction; *                                                      thus perform *                                                      alternate-horizontal *                                                      zigzag scan. * [in] start           start indicates whether the encoding begins with 0th element *                      or 1st. * [out]    ppBitStream     *ppBitStream is updated after the block is *                              decoded, so that it points to the current byte *                              in the bit stream buffer * [out]    pBitOffset      *pBitOffset is updated so that it points to the *                              current bit position in the byte pointed by *                              *ppBitStream * [out]    pDst            pointer to the coefficient buffer of current *                              block. Should be 32-bit aligned * * Return Value: * Standard OMXResult result. See enumeration for possible result codes. * */OMXResult armVCM4P2_DecodeVLCZigzag_Intra(     const OMX_U8 ** ppBitStream,     OMX_INT * pBitOffset,     OMX_S16 * pDst,     OMX_U8 predDir,     OMX_INT shortVideoHeader,     OMX_U8  start){    OMX_U8  last = 0;    const OMX_U8  *pZigzagTable = armVCM4P2_aClassicalZigzagScan;    OMXResult errorCode;        /* Argument error checks */    armRetArgErrIf(ppBitStream == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(*ppBitStream == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(pBitOffset == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(!armIs4ByteAligned(pDst), OMX_Sts_BadArgErr);    armRetArgErrIf((*pBitOffset < 0) || (*pBitOffset >7), OMX_Sts_BadArgErr);    armRetArgErrIf((predDir > 2), OMX_Sts_BadArgErr);    switch (predDir)    {        case OMX_VC_NONE:        {            pZigzagTable = armVCM4P2_aClassicalZigzagScan;            break;        }        case OMX_VC_HORIZONTAL:        {            pZigzagTable = armVCM4P2_aVerticalZigzagScan;            break;        }        case OMX_VC_VERTICAL:        {            pZigzagTable = armVCM4P2_aHorizontalZigzagScan;            break;        }    }        errorCode = armVCM4P2_GetVLCBits (              ppBitStream,              pBitOffset,			  pDst,			  shortVideoHeader,			  start,			  &last,			  10,			  62,			   7,			  21,              armVCM4P2_IntraL0RunIdx,              armVCM4P2_IntraVlcL0,			  armVCM4P2_IntraL1RunIdx,              armVCM4P2_IntraVlcL1,              armVCM4P2_IntraL0LMAX,              armVCM4P2_IntraL1LMAX,              armVCM4P2_IntraL0RMAX,              armVCM4P2_IntraL1RMAX,              pZigzagTable );    armRetDataErrIf((errorCode != OMX_Sts_NoErr), errorCode);        if (last == 0)    {        return OMX_Sts_Err;    }    return OMX_Sts_NoErr;}/* End of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -