videoeditorengine/h263decoder/inc/decmbdct.h
changeset 0 951a5db380a0
--- /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