diff -r 000000000000 -r 951a5db380a0 videoeditorengine/h263decoder/inc/decmbdct.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/h263decoder/inc/decmbdct.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,294 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - Initial contribution +* +* Contributors: +* Ixonos Plc +* +* Description: +* Header for macroblock content blocks decoding functions. +* +*/ + + + + +#ifndef _DECMBDCT_H_ +#define _DECMBDCT_H_ + +/* + * Includes + */ + +#include "block.h" +#include "vdcaic.h" + +#include "biblin.h" + +class CMPEG4Transcoder; + +/* + * Defines + */ + +// unify error codes +#define DMD_BIT_ERR H263D_OK_BUT_BIT_ERROR +#define DMD_OK H263D_OK +#define DMD_ERR H263D_ERROR + + +/* + * Structs and typedefs + */ + +/* {{-output"dmdBOfPBParam_t_info.txt" -ignore"*" -noCR}} + This structure is used to pass parameters to + the dmdGetAndDecodeBOfPBMBBlocks function. + {{-output"dmdBOfPBParam_t_info.txt"}} */ + +/* {{-output"dmdBOfPBParam_t.txt"}} */ +typedef struct { + bibBuffer_t *inBuffer; /* Bit Buffer instance data */ + + + bibBuffer_t *outBuffer; /* Out Bit Buffer instance data */ + int StartByteIndex; + int StartBitIndex; + + int cbpb; /* Coded block pattern for B-blocks */ + + int quant; /* Current quantizer */ + + BLC_COPY_PREDICTION_MB_PARAM /* See block.h */ + + int fMQ; /* Modified Quantization Mode flag */ + +} dmdBOfPBParam_t; +/* {{-output"dmdBOfPBParam_t.txt"}} */ + + +/* {{-output"dmdIParam_t_info.txt" -ignore"*" -noCR}} + This structure is used to pass parameters to + the dmdGetAndDecodeIMBBlocks function. + {{-output"dmdIParam_t_info.txt"}} */ + +/* {{-output"dmdIParam_t.txt"}} */ +typedef struct { + bibBuffer_t *inBuffer; /* Bit Buffer instance data */ + + + bibBuffer_t *outBuffer; /* Out Bit Buffer instance data */ + bibBufferEdit_t *bufEdit; + int iColorEffect; + TBool iGetDecodedFrame; + int StartByteIndex; + int StartBitIndex; + + + int cbpy; /* Coded block pattern for luminance */ + + int cbpc; /* Coded block pattern for chrominance */ + + int quant; /* Current quantizer */ + + int yWidth; /* Picture width in luminance pixels */ + + u_char *yMBInFrame; /* Current macroblock in frame */ + u_char *uBlockInFrame; + u_char *vBlockInFrame; + + int xPosInMBs; /* Horizontal position of the macroblock + (in macroblocks), + 0 .. (numMBsInMBLine - 1) */ + + int yPosInMBs; /* Vertical position of the macroblock, + (in macroblocks), 0 .. */ + + int numMBLinesInGOB; /* Number of macroblock lines in GOB */ + + int pictureType; /* Picture type is one of the following: + VDX_PIC_TYPE_I INTRA + VDX_PIC_TYPE_P INTER + VDX_PIC_TYPE_PB PB (Annex G) + VDX_PIC_TYPE_IPB Improved PB + VDX_PIC_TYPE_B B (Annex O) + VDX_PIC_TYPE_EI EI (Annex O) + VDX_PIC_TYPE_EP EP (Annex O) */ + + int numMBsInMBLine; /* Number of MBs in one MB Line */ + + int fGOBHeaderPresent; /* 1 if GOB header is present.*/ + + int predMode; /* prediction mode given by INTRA_MODE field */ + + int fMQ; /* Modified Quantization Mode flag */ + + int sumBEI; /* Sum (bit-wise OR) of bit error indications for the whole MB */ + + int rightOfBorder; /* There is a border on the left of the current MB */ + + int downOfBorder; /* There is a border on top of the current MB */ + +} dmdIParam_t; +/* {{-output"dmdIParam_t.txt"}} */ + +/* {{-output"dmdMPEGIParam_t_info.txt" -ignore"*" -noCR}} + This structure is used to pass parameters to + the dmdGetAndDecodeMPEGIMBBlocks function. + {{-output"dmdMPEGIParam_t_info.txt"}} */ + +/* {{-output"dmdMPEGIParam_t.txt"}} */ +typedef struct { + bibBuffer_t *inBuffer; /* Bit Buffer instance data */ + + + bibBuffer_t *outBuffer; /* Out Bit Buffer instance data */ + bibBufferEdit_t *bufEdit; + int iColorEffect; + TBool iGetDecodedFrame; + int StartByteIndex; + int StartBitIndex; + + int cbpy; /* Coded block pattern for luminance */ + + int cbpc; /* Coded block pattern for chrominance */ + + int quant; /* Current quantizer */ + + int yWidth; /* Picture width in luminance pixels */ + + int switched; /* if TRUE instead of optimized IntraDC + decoding IntraAC VLC table is used for + DC coefficient coding */ + + int currMBNum; /* current MB Number */ + + u_char fTopOfVP; /* The current Macroblock is in the top row + of the current Video Packet */ + u_char fLeftOfVP; /* The current Macroblock is the first + (on the left) of the current Video Packet */ + u_char fBBlockOut; /* The "B" AC/DC prediction block for the + current Macroblock is outside of the + current Video Packet */ + + aicData_t *aicData; /* storage for the intra prediction (AIC) data */ + + u_char data_partitioned; + int *DC; /* if data_partitioned, this is the array of + the DC coefficients decoded in the previous + partition of the VP */ + + u_char reversible_vlc; /* TRUE if reversible VLC is used */ + u_char vlc_dec_direction; /* 0: forward, 1: backward decoding of RVLC */ + + u_char *yMBInFrame; /* Current macroblock in frame */ + u_char *uBlockInFrame; + u_char *vBlockInFrame; + + int xPosInMBs; /* Horizontal position of the macroblock + (in macroblocks), + 0 .. (numMBsInMBLine - 1) */ + + int yPosInMBs; /* Vertical position of the macroblock, + (in macroblocks), 0 .. */ + + int numMBsInMBLine; /* Number of macroblocks in one line */ + + int numMBLinesInGOB; /* Number of macroblock lines in GOB */ + + int pictureType; /* Picture type is one of the following: + VDX_PIC_TYPE_I INTRA + VDX_PIC_TYPE_P INTER + VDX_PIC_TYPE_PB PB (Annex G) + VDX_PIC_TYPE_IPB Improved PB + VDX_PIC_TYPE_B B (Annex O) + VDX_PIC_TYPE_EI EI (Annex O) + VDX_PIC_TYPE_EP EP (Annex O) */ + + int fMQ; + int fAIC; + +} dmdMPEGIParam_t; +/* {{-output"dmdMPEGIParam_t.txt"}} */ + +/* {{-output"dmdPParam_t_info.txt" -ignore"*" -noCR}} + This structure is used to pass parameters to + the dmdGetAndDecodeIMBBlocks function. + {{-output"dmdPParam_t_info.txt"}} */ + +/* {{-output"dmdPParam_t.txt"}} */ +typedef struct { + bibBuffer_t *inBuffer; /* Bit Buffer instance data */ + + + bibBuffer_t *outBuffer; /* Out Bit Buffer instance data */ + bibBufferEdit_t *bufEdit; + int iColorEffect; + TBool iGetDecodedFrame; + int StartByteIndex; + int StartBitIndex; + + int cbpy; /* Coded block pattern for luminance */ + + int cbpc; /* Coded block pattern for chrominance */ + + int quant; /* Current quantizer */ + + BLC_COPY_PREDICTION_MB_PARAM /* See block.h */ + +/*** MPEG-4 REVISION ***/ + u_char reversible_vlc; /* TRUE if reversible VLC is used */ + u_char vlc_dec_direction; /* 0: forward, 1: backward decoding of RVLC */ +/*** End MPEG-4 REVISION ***/ + + int xPosInMBs; /* Horizontal position of the macroblock + (in macroblocks), + 0 .. (numMBsInMBLine - 1) */ + + int yPosInMBs; /* Vertical position of the macroblock, + (in macroblocks), 0 .. */ + + int numMBsInMBLine; /* Number of MBs in one MB Line */ + + int fGOBHeaderPresent; /* 1 if GOB header is present.*/ + + int mbType; + + +} dmdPParam_t; +/* {{-output"dmdPParam_t.txt"}} */ + + +/* + * Function prototypes + */ + +int dmdGetAndDecodeBOfPBMBBlocks( + dmdBOfPBParam_t *param); + +int dmdGetAndDecodeIMBBlocks( + dmdIParam_t *param, CMPEG4Transcoder *hTranscoder); + +int dmdGetAndDecodePMBBlocks( + dmdPParam_t *param, CMPEG4Transcoder *hTranscoder); + +int dmdGetAndDecodeAdvIMBBlocks( + dmdIParam_t *inpParam); + +/*** MPEG-4 REVISION ***/ +int dmdGetAndDecodeMPEGPMBBlocks( + dmdPParam_t *param, CMPEG4Transcoder *hTranscoder); + +int dmdGetAndDecodeMPEGIMBBlocks( + dmdMPEGIParam_t *param, CMPEG4Transcoder *hTranscoder); +/*** End MPEG-4 REVISION ***/ + +#endif +// End of File