📄 omxvcm4p2_decodevlczigzag_inter.c
字号:
/** * * File Name: omxVCM4P2_DecodeVLCZigzag_Inter.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 zigzag scanning and VLC decoding * for inter block. * */#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: omxVCM4P2_DecodeVLCZigzag_Inter (6.2.5.2.3) * * Description: * Performs VLC decoding and inverse zigzag scan for one inter-coded block. * * Input Arguments: * * ppBitStream - double pointer to the current byte in the stream buffer * pBitOffset - pointer to the next available bit in the current stream * byte referenced by *ppBitStream. The parameter *pBitOffset is * valid within the range [0-7]. * shortVideoHeader - binary flag indicating presence of * short_video_header; escape modes 0-3 are used if * shortVideoHeader==0, and escape mode 4 is used when * shortVideoHeader==1. * * Output Arguments: * * ppBitStream - *ppBitStream is updated after the block is decoded such * that it points to the current byte in the stream buffer * pBitOffset - *pBitOffset is updated after decoding such that it points * to the next available bit in the stream byte referenced by * *ppBitStream * pDst - pointer to the coefficient buffer of current block; must be * 4-byte aligned. * * Return Value: * * OMX_Sts_BadArgErr - bad arguments: * - At least one of the following pointers is NULL: * ppBitStream, *ppBitStream, pBitOffset, pDst * - pDst is not 4-byte aligned * - *pBitOffset exceeds [0,7] * OMX_Sts_Err - status error, if: * - At least one mark bit is equal to zero * - Encountered an illegal stream code that cannot be found in the VLC table * - Encountered an illegal code in the VLC FLC table * - The number of coefficients is greater than 64 * */OMXResult omxVCM4P2_DecodeVLCZigzag_Inter( const OMX_U8 ** ppBitStream, OMX_INT * pBitOffset, OMX_S16 * pDst, OMX_INT shortVideoHeader){ OMX_U8 last,start = 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); errorCode = armVCM4P2_GetVLCBits ( ppBitStream, pBitOffset, pDst, shortVideoHeader, start, &last, 11, 42, 2, 5, armVCM4P2_InterL0RunIdx, armVCM4P2_InterVlcL0, armVCM4P2_InterL1RunIdx, armVCM4P2_InterVlcL1, armVCM4P2_InterL0LMAX, armVCM4P2_InterL1LMAX, armVCM4P2_InterL0RMAX, armVCM4P2_InterL1RMAX, 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 + -