videoeditorengine/h263decoder/inc/viddemux.h
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- a/videoeditorengine/h263decoder/inc/viddemux.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1068 +0,0 @@
-/*
-* 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 the video demultiplexer module.
-*
-*/
-
-
-#ifndef _VIDDEMUX_H_
-#define _VIDDEMUX_H_
-
-#include "epoclib.h"
-
-#include "biblin.h"
-
-#include "dlist.h"
-#include "vdc263.h" /* for vdxPictureHeader_t and vdxSEI_t */
-class CMPEG4Transcoder;
-
-
-/*
- * Defines
- */
-
-/* General return values */
-// unify error codes
-#define VDX_OK_BUT_BIT_ERROR  H263D_OK_BUT_BIT_ERROR     /* Handled portion of the bistream
-                                       contains a bit error */
-#define VDX_OK         H263D_OK     /* Everything ok */
-#define VDX_ERR     H263D_ERROR     /* Everything ok */
-#define VDX_ERR_NOT_SUPPORTED H263D_ERROR    /* Some bit combination (in header)
-                                       occurs which is not supported by the 
-                                       implementetion */
-#define VDX_ERR_BIB  H263D_ERROR    /* Bit Buffer module returned an error */
-
-/* Picture types */
-#define VDX_PIC_TYPE_I     0
-#define VDX_PIC_TYPE_P     1
-#define VDX_PIC_TYPE_PB    8
-#define VDX_PIC_TYPE_IPB   2
-#define VDX_PIC_TYPE_B     3
-#define VDX_PIC_TYPE_EI    4
-#define VDX_PIC_TYPE_EP    5
-#define VDX_VOP_TYPE_I     0 /* MPEG-4 Intra Picture */
-#define VDX_VOP_TYPE_P     1 /* MPEG-4 Inter Picture */
-#define VDX_VOP_NOT_CODED -1 /* MPEG-4 Not Coded Picture 
-                                (only the time_increment is present) */
-
-/* Reference Picture Selection modes */
-#define VDX_RPS_MODE_NO_MSGS     0
-#define VDX_RPS_MODE_ACK         1
-#define VDX_RPS_MODE_NACK        2
-#define VDX_RPS_MODE_BOTH_MSGS   3
-
-/* Macroblock classes */
-#define VDX_MB_INTER    1
-#define VDX_MB_INTRA    2
-
-#define MAX_USER_DATA_LENGTH 512    /* The maximum allocated memory for 
-                                       user data (UD). Only this much of the UD
-                                       from the bitstream is stored */
-
-/*
- * Typedefs
- */
-
-/*
- * vdxVolHeader_t
- */
-
-/* {{-output"vdxVolHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetVolHeader function uses this structure to return VOL header data.
-   /MPEG-4/
-   {{-output"vdxVolHeader_t_info.txt"}} */
-
-/* {{-output"vdxVolHeader_t.txt"}} */
-typedef struct {
-
-   int profile_level;       /* Indicates the Level (1,2 or 3) of the Simple
-                               Profile the Video Object conforms to */
-   int vo_priority;         /* Priority assigned to the Video Object 
-                               a value between 1(lowest)-7(highest).
-                               If not in the bitstream, set to zero */
-   
-   int vo_id;               /* id of the Video Object */
-   int vol_id;              /* id of the Video Object Layer */
-   int random_accessible_vol; 
-                            /* set to 1 if all the VOPs in the stream are
-                                 I-VOP. */
-   int pixel_aspect_ratio;  /* see. MPEG-4 visual spec. pp. 71 */
-
-   int time_increment_resolution;
-                            /* Resolution to interpret the time_increment 
-                               fields in the VOP headers */
-
-   int lumWidth;            /* Frame width of the Y component in pixels */
-   int lumHeight;           /* Frame height of the Y component in pixels */
-
-   u_char error_res_disable;/* Flag ON if no resynchronization markers are
-                               used inside frames. 
-                               When OFF it doesn't mean they ARE used. */
-   u_char data_partitioned; /* Flag indicating if data partitioning inside 
-                               a VP is used or not. */
-   u_char reversible_vlc;   /* flag indicating the usage of reversible 
-                               VLC codes */
-
-   /* the following parameters concern the input video signal,
-      see MPEG-4 visual spec. pp. 66-70, and "Note" in viddemux_mpeg.c 
-      Not used in the current implementatnion. */
-   int video_format;
-   int video_range;
-   int colour_primaries;    
-   int transfer_characteristics;
-   int matrix_coefficients;
-
-   /* the following parameters are used in the Video Buffering Verifier
-      (Annex D) to monitor the input bit buffer, complexity, memory buffer
-      used in the decoding process. The conformance of a stream can be checked
-      using these parameters. 
-      Not used in the current implementatnion. */
-   u_int32 bit_rate;
-   u_int32 vbv_buffer_size;
-   u_int32 vbv_occupancy;
-
-   char *user_data;         /* User Data if available */
-   int user_data_length;    /* Length of the recieved user data */
-   u_char fixed_vop_rate;       /* fixed vop rate indication, added for transcoding */
-} vdxVolHeader_t;
-/* {{-output"vdxVolHeader_t.txt"}} */
-
-/*
- * vdxGovHeader_t
- */
-
-/* {{-output"vdxGovHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetGovHeader function uses this structure to return GOV header data.
-   /MPEG-4/
-   {{-output"vdxGovHeader_t_info.txt"}} */
-
-/* {{-output"vdxGovHeader_t.txt"}} */
-typedef struct {
-   int time_stamp;              /* The time stamp value in the GOV Header */
-
-   u_char closed_gov;           /* only important if B-VOPs can be in the stream */
-   u_char broken_link;          /* only important if B-VOPs can be in the stream */
-
-   char *user_data;             /* User Data if available */
-   int user_data_length;        /* Length of the recieved user data */
-} vdxGovHeader_t;
-/* {{-output"vdxGovHeader_t.txt"}} */
-
-
-/*
- * vdxGetVopHeaderInputParam_t
- */
-
-/* {{-output"vdxGetVopHeaderInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetVopHeader function. /MPEG-4/
-   {{-output"vdxGetVopHeaderInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetVopHeaderInputParam_t.txt"}} */
-typedef struct {
-
-    int time_increment_resolution; /* resolution of the time increment field */
-
-} vdxGetVopHeaderInputParam_t;
-/* {{-output"vdxGetVopHeaderInputParam_t.txt"}} */
-
-
-/*
- * vdxVopHeader_t
- */
-
-/* {{-output"vdxVopHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetVopHeader function uses this structure to return the picture
-   header parameters. /MPEG-4/
-   {{-output"vdxVopHeader_t_info.txt"}} */
-
-/* {{-output"vdxVopHeader_t.txt"}} */
-typedef struct {
-    int time_base_incr;         /* Increment of the modulo time base from the
-                                   previous VOP or GOV header in seconds */
-    int time_inc;             /* Time increment value of the current VOP,
-                                   plus the modulo time base = absolute time */
-
-    u_char vop_coded;           /* Flag: 1 - VOP coded;
-                                         0 - VOP not coded/skipped */
-    int coding_type;            /* VOP coding type is one of the following:
-                                       VDX_VOP_TYPE_I       MPEG-4 INTRA
-                                       VDX_VOP_TYPE_P       MPEG-4 INTER */
-
-    int rounding_type;          /* Rounding of the sub-pixel predictor
-                                   calculations: 0 or 1. */
-
-    int intra_dc_vlc_thr;       /* QP dependent switch control of coding the
-                                   Intra DC coefficient as separate/optimized or
-                                   as the other Intra AC. (0..7) */
-    int quant;                  /* Initial Quantizer value */
-
-    int fcode_forward;          /* For P-VOPs Motion Vector range control
-                                   1: [-16,16] .. 7:[-1024,1024] */
-} vdxVopHeader_t;
-/* {{-output"vdxVopHeader_t.txt"}} */
-
-
-/*
- * vdxGetVideoPacketHeaderInputParam_t
- */
-
-/* {{-output"vdxGetVideoPacketHeaderInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetVideoPacketHeader function. /MPEG-4/
-   {{-output"vdxGetVideoPacketHeaderInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetVideoPacketHeaderInputParam_t.txt"}} */
-typedef struct {
-
-    int fcode_forward;          /* used for determining the resync_marker
-                                   length */
-    int time_increment_resolution; /* resolution of the time increment field */
-
-    int numOfMBs;               /* Number of MBs in a VOP */
-
-} vdxGetVideoPacketHeaderInputParam_t;
-/* {{-output"vdxGetVideoPacketHeaderInputParam_t.txt"}} */
-
-
-/*
- * vdxVideoPacketHeader_t
- */
-
-/* {{-output"vdxVideoPacketHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetVideoPacketHeader function uses this structure to return the
-   Number of the immediately following MB in the VOP and optionally confirm
-   header parameters. /MPEG-4/
-   {{-output"vdxVideoPacketHeader_t_info.txt"}} */
-
-/* {{-output"vdxVideoPacketHeader_t.txt"}} */
-typedef struct {
-
-    int currMBNum;              /* Number of the immediately following MB */
-    int quant;                  /* Quantizer used for the following MB */
-
-    u_char fHEC;                /* Flag for header extension code */
-
-    int time_base_incr;         /* Increment of the modulo time base from the
-                                   previous VOP or GOV header in seconds */
-    int time_inc;             /* Time increment value of the current VOP,
-                                   plus the modulo time base = absolute time */
-
-    int coding_type;            /* VOP coding type is one of the following:
-                                       VDX_VOP_TYPE_I       MPEG-4 INTRA
-                                       VDX_VOP_TYPE_P       MPEG-4 INTER */
-
-    int intra_dc_vlc_thr;       /* QP dependent switch control of coding the
-                                   Intra DC coefficient as separate/optimized or
-                                   as the other Intra AC. (0..7) */
-
-    int fcode_forward;          /* For P-VOPs Motion Vector range control
-                                   1: [-16,16] .. 7:[-1024,1024] */
-} vdxVideoPacketHeader_t;
-/* {{-output"vdxVideoPacketHeader_t.txt"}} */
-
-
-/*
- * vdxGetPictureHeaderInputParam_t
- */
-
-/* {{-output"vdxGetPictureHeaderInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetPictureHeader function.
-   {{-output"vdxGetPictureHeaderInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetPictureHeaderInputParam_t.txt"}} */
-typedef struct {
-   int numStuffBits;             /* Number of stuffing bits before PSC */
-
-   int fCustomPCF;               /* Non-zero if custom picture clock frequency
-                                    is allowed. Otherwise zero. */
-
-   int fScalabilityMode;         /* Non-zero if the Temporal, SNR, and Spatial
-                                    Scalability mode (Annex O) is in use.
-                                    Otherwise zero. */
-
-   int fRPS;                     /* Non-zero if the Refence Picture Selection
-                                    mode (Annex N) is in use. Otherwise zero. */
-
-   bibFlushBits_t flushBits;     /* Pointers for bit buffer functions. */
-   bibGetBits_t getBits;         /* Needed to provide a possibly different */
-   bibShowBits_t showBits;       /* input mechanism for normal reading from
-                                    incoming bit-stream and for parsing
-                                    a picture header copy */
-} vdxGetPictureHeaderInputParam_t;
-/* {{-output"vdxGetPictureHeaderInputParam_t.txt"}} */
-
-
-/*
- * vdxPictureHeader_t
- * Defined in vdc263.h because Video Decoder Core exports the data structure.
- */
-
-
-/*
- * vdxSEI_t
- * Defined in vdc263.h because Video Decoder Core exports the data structure.
- */
-
-
-/*
- * vdxGetGOBHeaderInputParam_t
- */
-
-/* {{-output"vdxGetGOBHeaderInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetGOBHeader function.
-   {{-output"vdxGetGOBHeaderInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetGOBHeaderInputParam_t.txt"}} */
-typedef struct {
-   int numStuffBits;             /* Number of stuffing bits before PSC */
-
-   int fCustomPCF;               /* Non-zero if custom picture clock frequency
-                                    is allowed. Otherwise zero. */
-
-   int fCPM;                     /* Non-zero if the Continuous Presence
-                                    Multipoint feature (Annex C) is in use.
-                                    Otherwise zero. */
-
-   int fRPS;                     /* Non-zero if the Refence Picture Selection
-                                    mode (Annex N) is in use. Otherwise zero. */
-} vdxGetGOBHeaderInputParam_t;
-/* {{-output"vdxGetGOBHeaderInputParam_t.txt"}} */
-
-
-/*
- * vdxGOBHeader_t
- */
-
-/* {{-output"vdxGOBHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetGOBHeader function uses this structure to return the GOB
-   header parameters.
-   {{-output"vdxGOBHeader_t_info.txt"}} */
-
-/* {{-output"vdxGOBHeader_t.txt"}} */
-typedef struct {
-   int gn;                       /* Group Number (GN) field */
-
-   int gfid;                     /* GOB Frame ID (GFID) field */
-
-   int gquant;                   /* Quantizer Information (GQUANT) field */
-
-   /* If CPM (Annex C) is in use */
-      int gsbi;                  /* GOB Sub-Bitstream Indicator (GSBI) field */
-
-   /* If the Reference Picture Selection mode is in use */
-      int tri;                   /* Temporal Reference Indicator (TRI) field */
-      int trpi;                  /* Temporal Reference for Prediction
-                                    Indicator (TRPI) field */
-
-      /* If tri == 1 */
-         int tr;                 /* Temporal Reference (TR) field */
-
-      /* If trpi == 1 */
-         int trp;                /* Temporal Reference for Prediction (TRP) 
-                                    field */
-} vdxGOBHeader_t;
-/* {{-output"vdxGOBHeader_t.txt"}} */
-
-
-/*
- * vdxGetSliceHeaderInputParam_t
- */
-
-/* {{-output"vdxGetSliceHeaderInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetSliceHeader function.
-   {{-output"vdxGetSliceHeaderInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetSliceHeaderInputParam_t.txt"}} */
-typedef struct {
-   int sliceHeaderAfterPSC;      /* If the slice follows a PSC, the value 
-                                    should be 1 */ 
-
-   int numStuffBits;             /* Number of stuffing bits before SSC */
-
-   int fCPM;                     /* Non-zero if the Continuous Presence
-                                    Multipoint feature (Annex C) is in use.
-                                    Otherwise zero. */
-
-   int fRPS;                     /* Non-zero if the Refence Picture Selection
-                                    mode (Annex N) is in use. Otherwise zero. */
-
-   int mbaFieldWidth;            /* MBA Field width */
-   int mbaMaxValue;              /* MBA maximum value. See Table K.2/H.263 */
-
-   int fRectangularSlices;       /* 0 = free-running slices, 
-                                    1 = rectangular slices */
-   
-   int swiFieldWidth;            /* SWI Field width */
-   int swiMaxValue;              /* SWI maximum value. See Table K.3/H.263 */
-} vdxGetSliceHeaderInputParam_t;
-/* {{-output"vdxGetSliceHeaderInputParam_t.txt"}} */
-
-/*
- * vdxSliceHeader_t
- */
-
-/* {{-output"vdxSliceHeader_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetSliceHeader function uses this structure to return the Slice
-   header parameters.
-   {{-output"vdxSliceHeader_t_info.txt"}} */
-
-/* {{-output"vdxSliceHeader_t.txt"}} */
-typedef struct {
-   /* If CPM (Annex C) is in use */
-      int ssbi;                   /* Slice Sub-Bitstream Indicator (SSBI) */
-
-      int gn;                    /* Group Number (GN) field */
-
-      int sbn;                   /* Sub-Bitstream number */
-
-   int mba;                      /* Macroblock Address (MBA) */
-
-   /* If not the slice just after the PSC */
-      int squant;                /* Quantizer Inforation (SQUANT) */
-
-   /* If fRectangularSlices */
-      int swi;                   /* Slice Width Indication in Macroblocks (SWI)*/
-      
-   int gfid;                     /* GOB Frame ID (GFID) field */
-   /* If the Reference Picture Selection mode is in use */
-      int tri;                   /* Temporal Reference Indicator (TRI) field */
-      int trpi;                  /* Temporal Reference for Prediction
-                                    Indicator (TRPI) field */
-
-      /* If tri == 1 */
-         int tr;                 /* Temporal Reference (TR) field */
-
-      /* If trpi == 1 */
-         int trp;                /* Temporal Reference for Prediction (TRP) 
-                                    field */
-
-} vdxSliceHeader_t;
-/* {{-output"vdxSliceHeader_t.txt"}} */
-
-/*
- * vdxGetIMBLayerInputParam_t
- */
-
-/* {{-output"vdxGetIMBLayerInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetIMBLayer function.
-   {{-output"vdxGetIMBLayerInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetIMBLayerInputParam_t.txt"}} */
-typedef struct {
-   int fMQ;                      /* Modified Quantization */
-   int quant;                    /* Current QUANT */
-   int fAIC;                     /* Advanced Intra Coding Flag */
-   int fSS;                      /* Slice Structured Mode Flag */
-   u_char fMPEG4;                /* MPEG4 or H.263 */
-} vdxGetIMBLayerInputParam_t;
-/* {{-output"vdxGetIMBLayerInputParam_t.txt"}} */
-
-
-/*
- * vdxGetDataPartitionedIMBLayerInputParam_t
- */
-
-/* {{-output"vdxGetDataPartitionedIMBLayerInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetDataPartitionedIMBLayer function. /MPEG-4/
-   {{-output"vdxGetDataPartitionedIMBLayerInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetDataPartitionedIMBLayerInputParam_t.txt"}} */
-typedef struct {
-   int intra_dc_vlc_thr;
-   int quant;                    /* Current QUANT */
-} vdxGetDataPartitionedIMBLayerInputParam_t;
-/* {{-output"vdxGetDataPartitionedIMBLayerInputParam_t.txt"}} */
-
-
-/*
- * vdxIMBLayer_t
- */
-
-/* {{-output"vdxIMBLayer_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetIMBLayer function uses this structure to return
-   the macroblock header parameters.
-   {{-output"vdxIMBLayer_t_info.txt"}} */
-
-/* {{-output"vdxIMBLayer_t.txt"}} */
-typedef struct {
-	int mcbpc;                     /* Macroblock type and the coded block 
-																    pattern for chrominance */
-
-   int cbpc;                     /* Coded Block Pattern for Chrominance,
-                                    bit 1 is for U and bit 0 is for V,
-                                    use vdxIsUCoded and vdxIsVCoded macros 
-                                    to access this value */
-
-   int cbpy;                     /* Coded Block Pattern for Luminance,
-                                    bit 3 is for block 1, ..., 
-                                    bit 0 is for block 4,
-                                    use vdxIsYCoded macro to access this 
-                                    value */
-
-/*** MPEG-4 REVISION ***/
-   u_char ac_pred_flag;          /* "1" AC prediction used, "0" not */
-/*** End MPEG-4 REVISION ***/
-
-   int quant;                    /* New (possibly updated) QUANT */
-
-   int predMode;                 /* Prediction Mode used in Annex I
-                                    0 (DC Only)
-                                    1 (Vertical DC&AC)
-                                    2 (Horizontal DC&AC) */
-   
-   int mbType;                   /* 0..5, see table 9/H.263 */
-
-} vdxIMBLayer_t;
-/* {{-output"vdxIMBLayer_t.txt"}} */
-
-
-/*
- * vdxGetPPBMBLayerInputParam_t
- */
-
-/* {{-output"vdxGetPPBMBLayerInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetPPBMBLayer function.
-   {{-output"vdxGetPPBMBLayerInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetPPBMBLayerInputParam_t.txt"}} */
-typedef struct {  
-   int pictureType;              /* Picture type is one of the following:
-                                       VDX_PIC_TYPE_P       INTER
-                                       VDX_PIC_TYPE_PB      PB (Annex G)
-                                       VDX_PIC_TYPE_IPB     Improved PB */
-
-   /* See the description of vdxPictureHeader_t for the following flags. */
-   int fPLUSPTYPE;
-   int fUMV;
-   int fAP;
-   int fDF;
-   int fMQ;
-
-   int fCustomSourceFormat;      /* Flag indicating if custom source format 
-                                    is used */
-
-
-/*** MPEG-4 REVISION ***/
-   u_char fMPEG4;                /* MPEG4 or H.263 */
-   int f_code;
-/*** End MPEG-4 REVISION ***/
-
-   int quant;                    /* Current QUANT */
-
-   int fFirstMBOfPicture;        /* Non-zero if the macroblock is the first
-                                    (top-left) one of the picture */
-
-   int fAIC;                     /* Advanced Intra Coding Flag */
-} vdxGetPPBMBLayerInputParam_t;
-/* {{-output"vdxGetPPBMBLayerInputParam_t.txt"}} */
-
-
-/*
- * vdxGetDataPartitionedPMBLayerInputParam_t
- */
-
-/* {{-output"vdxGetDataPartitionedPMBLayerInputParam_t_info.txt" -ignore"*" -noCR}}
-   This structure is used to pass input parameters to
-   the vdxGetDataPartitionedPMBLayer function. /MPEG-4/
-   {{-output"vdxGetDataPartitionedPMBLayerInputParam_t_info.txt"}} */
-
-/* {{-output"vdxGetDataPartitionedPMBLayerInputParam_t.txt"}} */
-typedef struct {
-   int intra_dc_vlc_thr;
-   int quant;                    /* Current QUANT */
-   int f_code;
-} vdxGetDataPartitionedPMBLayerInputParam_t;
-/* {{-output"vdxGetDataPartitionedPMBLayerInputParam_t.txt"}} */
-
-
-/*
- * vdxPPBMBLayer_t
- */
-
-/* {{-output"vdxPPBMBLayer_t_info.txt" -ignore"*" -noCR}}
-   The vdxGetPPBMBLayer function uses this structure to return
-   the macroblock header parameters.
-   {{-output"vdxPPBMBLayer_t_info.txt"}} */
-
-/* {{-output"vdxPPBMBLayer_t.txt"}} */
-typedef struct {
-	 int mcbpc;                    /* Macroblock type and the coded block 
-																    pattern for chrominance */
-
-	 int fCodedMB;                 /* 1 if the macroblock is coded. 
-                                    Otherwise 0. */
-
-   int mbType;                   /* 0..5, see table 9/H.263 */
-
-   int mbClass;                  /* VDX_MB_INTRA or VDX_MB_INTER */
-
-   int cbpc;                     /* Coded Block Pattern for Chrominance,
-                                    bit 1 is for U and bit 0 is for V,
-                                    use vdxIsUCoded and vdxIsVCoded macros 
-                                    to access this value */
-
-   int cbpy;                     /* Coded Block Pattern for Luminance,
-                                    bit 3 is for block 1, ..., 
-                                    bit 0 is for block 4,
-                                    use vdxIsYCoded macro to access this 
-                                    value */
-
-   int cbpb;                     /* Coded Block Pattern for B-blocks,
-                                    bit 5 is for block 1, ..., 
-                                    bit 0 is for block 6 */
-
-/*** MPEG-4 REVISION ***/
-   u_char ac_pred_flag;          /* "1" AC prediction used, "0" not */
-/*** End MPEG-4 REVISION ***/
-
-   int quant;                    /* New (possibly updated) QUANT */
-                           
-   int numMVs;                   /* Number of motion vectors for the MB,
-                                    0 if MVD is not in the stream,
-                                    1 if MVD but not MVD2-4 is in the stream,
-                                    4 if MVD and MVD2-4 is in the stream */
-
-   /* Only the number of MVs indicated in the numMVs member is valid
-      in the following arrays. */
-   int mvdx[4];                  /* Horizontal components of MVD1-4,
-                                    index to table 14/H.263 */
-   int mvdy[4];                  /* Vertical components of MVD1-4,
-                                    index to table 14/H.263 */
-
-   int fMVDB;                    /* 1 = MVDB exists in the bitstream,
-                                    i.e. mvdbx and mvdby are valid */
-
-   int mvdbx;                    /* Horizontal components of MVDB,
-                                    index to table 14/H.263 */
-   int mvdby;                    /* Vertical components of MVDB,
-                                    index to table 14/H.263 */
-   int predMode;                 /* Prediction Mode used in Annex I
-                                    0 (DC Only)
-                                    1 (Vertical DC&AC)
-                                    2 (Horizontal DC&AC) */
-   int IPBPredMode;              /* Prediction Modes used in annex M
-                                    0  Bidirectional prediction
-                                    1  Forward prediction
-                                    2  Backward prediction  */
-} vdxPPBMBLayer_t;
-/* {{-output"vdxPPBMBLayer_t.txt"}} */
-
-
-/*
- * vdxIMBListItem_t
- */
-
-/* {{-output"vdxIMBListItem_t_info.txt" -ignore"*" -noCR}}
-   List Item which is used to build a queue of Intra MBs during the data
-   partitioned decoding of an I-VOP. /MPEG-4/
-   The vdxGetDataPartitionedIMBLayer function uses this structure.
-   {{-output"vdxIMBListItem_t_info.txt"}} */
-
-/* {{-output"vdxIMBListItem_t.txt"}} */
-
-
-/* Data item recording for data partitioned transcoding */
-#ifndef VDT_OPERATION
-#define VDT_OPERATION
-#define VDT_SET_START_POSITION(mb,item,byte,bit) \
-{\
-	(mb)->DataItemStartByteIndex[(item)] = (byte);\
-     (mb)->DataItemStartBitIndex[(item)] = (bit);\
-}
-
-#define VDT_SET_END_POSITION(mb,item,byte,bit) \
-{\
-	(mb)->DataItemEndByteIndex[(item)] = (byte);\
-     (mb)->DataItemEndBitIndex[(item)] = (bit);\
-}
-#endif
-
-
-
-typedef struct {
-   DLST_ITEM_SKELETON
-
-/* for data partitioned transcoding
-   array ordering: 0: mcbpc, 1: dquant, 2: cbpy, 3: ac_pred_flag, 4~9: intraDCs, 10: mv, 11: mb stuffing
- */
-   int mcbpc;
-   int DataItemStartByteIndex[12];
-   int DataItemStartBitIndex[12];
-   int DataItemEndByteIndex[12];
-   int DataItemEndBitIndex[12];
-   int dquant;
-
-   int DC[6];                 /* DC component */
-   int quant;                 /* QUANT */
-   int cbpc;                  /* Coded Block Pattern for Chrominance */
-   int cbpy;                  /* Coded Block Pattern for Luminance */
-   u_char ac_pred_flag;       /* "1" AC prediction used, "0" not */
-   u_char switched;           /* intra_dc_vlc_thr indicated switch 
-                                 to Intra AC VLC coding of the DC coeff
-                                 intstead of the usual DC VLC coding 
-                                 at this QP */
-} vdxIMBListItem_t;
-/* {{-output"vdxIMBListItem_t.txt"}} */
-
-
-/*
- * vdxPMBListItem_t
- */
-
-/* {{-output"vdxPMBListItem_t_info.txt" -ignore"*" -noCR}}
-   List Item which is used to build a queue of Inter MBs during the data
-   partitioned decoding of a P-VOP. /MPEG-4/
-   The vdxGetDataPartitionedPMBLayer function uses this structure.
-   {{-output"vdxPMBListItem_t_info.txt"}} */
-
-/* {{-output"vdxPMBListItem_t.txt"}} */
-typedef struct {
-   DLST_ITEM_SKELETON
-/* for data partitioned transcoding
-   array ordering: 0: mcbpc, 1: dquant, 2: cbpy, 3: ac_pred_flag, 4~9: intraDCs, 10: mv, 11: mb stuffing
- */
-   int mcbpc;
-   int DataItemStartByteIndex[12];
-   int DataItemStartBitIndex[12];
-   int DataItemEndByteIndex[12];
-   int DataItemEndBitIndex[12];
-   int dquant;
-   int mv_x[4];                /* horizontal componenet of 1-4 MVs */ 
-   int mv_y[4];                /* vertical componenet of 1-4 MVs */
-
-   u_char fCodedMB;           /* 1 if the macroblock is coded. 
-                                    Otherwise 0. */
-   int mbType;                /* 0..5, see table 9/H.263 */
-   int mbClass;               /* VDX_MB_INTRA or VDX_MB_INTER */
-   int DC[6];                 /* DC component */
-   int quant;                 /* QUANT */
-   int cbpc;                  /* Coded Block Pattern for Chrominance */
-   int cbpy;                  /* Coded Block Pattern for Luminance */
-   u_char ac_pred_flag;       /* "1" AC prediction used, "0" not */
-   u_char switched;           /* intra_dc_vlc_thr indicated switch 
-                                 to Intra AC VLC coding of the DC coeff
-                                 intstead of the usual DC VLC coding 
-                                 at this QP */
-   int numMVs;                /* Number of motion vectors for the MB */
-   int mvx[4];                /* horizontal componenet of 1-4 MVs */ // actually it is dMV
-   int mvy[4];                /* vertical componenet of 1-4 MVs */
-} vdxPMBListItem_t;
-/* {{-output"vdxPMBListItem_t.txt"}} */
-
-
-/*
- * Macros
- */
-
-/* These arrays are intialized in viddemux.c and needed in the vdxIsYXCoded 
-   macros. */
-extern const int vdxBlockIndexToCBPYMask[5];
-extern const int vdxYBlockIndexToCBPBMask[5];
-
-/* {{-output"vdxIsXCoded.txt"}} */
-/*
- * vdxIsYCoded
- * vdxIsUCoded
- * vdxIsVCoded
- * vdxIsYBCoded
- * vdxIsUBCoded
- * vdxIsVBCoded
- *
- * Parameters:
- *    for vdxIsYCoded:
- *       cbpy                    coded block for luminance
- *       blockIndex              index for luminance block 1..4
- *
- *    for vdxIsUCoded and vdxIsVCoded:
- *       cbpc                    coded block pattern for chrominance
- *
- *    for vdxIsXBCoded:
- *       cbpb                    coded block pattern for B blocks
- *       blockIndex              index for B luminance block 1..4
- *
- * Function:
- *    This macros access the coded block bit patterns.
- *
- * Returns:
- *    0 if the requested block is not coded
- *    non-zero if the requested block is coded
- *
- */
-
-#define vdxIsYCoded(cbpy, blockIndex) \
-   ((cbpy) & vdxBlockIndexToCBPYMask[(blockIndex)])
-
-#define vdxIsUCoded(cbpc) ((cbpc) & 2)
-#define vdxIsVCoded(cbpc) ((cbpc) & 1)
-
-#define vdxIsYBCoded(cbpb, blockIndex) \
-   ((cbpb) & vdxYBlockIndexToCBPBMask[(blockIndex)])
-
-#define vdxIsUBCoded(cbpb) ((cbpb) & 2)
-#define vdxIsVBCoded(cbpb) ((cbpb) & 1)
-/* {{-output"vdxIsXCoded.txt"}} */
-
-
-/*
- * Function prototypes
- */
-
-/* Picture Layer Global Functions */
-class CMPEG4Transcoder;
-
-int vdxGetVolHeader(
-   bibBuffer_t *inBuffer,
-   vdxVolHeader_t *header,
-   int *bitErrorIndication,
-   int getInfo, int *aByteIndex, int *aBitIndex,
-   CMPEG4Transcoder *hTranscoder);
-
-int vdxGetGovHeader(
-   bibBuffer_t *inBuffer,
-   vdxGovHeader_t *header,
-   int *bitErrorIndication);
-
-int vdxGetVopHeader(
-   bibBuffer_t *inBuffer,
-   const vdxGetVopHeaderInputParam_t *inpParam,
-   vdxVopHeader_t *header,
-   int * ModuloByteIndex,
-   int * ModuloBitIndex,
-   int * TimeIncByteIndex,
-   int * TimeIncBitIndex,
-   int *bitErrorIndication);
-
-int vdxGetPictureHeader(
-   bibBuffer_t *inBuffer, 
-   const vdxGetPictureHeaderInputParam_t *inpParam,
-   vdxPictureHeader_t *header,
-   int *bitErrorIndication);
-
-int vdxFlushSEI(
-   bibBuffer_t *inBuffer,
-   int *bitErrorIndication);
-
-int vdxGetSEI(
-   bibBuffer_t *inBuffer,
-   int *ftype,
-   int *dsize,
-   u_char *parameterData,
-   int *fLast,
-   int *bitErrorIndication);
-
-int vdxGetAndParseSEI(
-   bibBuffer_t *inBuffer,
-   int fPLUSPTYPE,
-   int numScalabilityLayers,
-   vdxSEI_t *sei,
-   int *bitErrorIndication);
-
-int vdxGetUserData(bibBuffer_t *inBuffer,
-   char *user_data, int *user_data_length,
-   int *bitErrorIndication);
-
-/* GOB/Video Packet Layer Global Functions */
-
-int vdxGetGOBHeader(
-   bibBuffer_t *inBuffer, 
-   const vdxGetGOBHeaderInputParam_t *inpParam,
-   vdxGOBHeader_t *header,
-   int *bitErrorIndication,
-   int aColorEffect,
-   int* aStartByteIndex,
-   int* aStartBitIndex,
-   CMPEG4Transcoder *hTranscoder);
-
-int vdxGetVideoPacketHeader(
-   bibBuffer_t *inBuffer,
-   const vdxGetVideoPacketHeaderInputParam_t *inpParam,
-   vdxVideoPacketHeader_t *header,
-   int *bitErrorIndication);
-
-/* Slice Layer Global Functions*/
-
-int vdxGetSliceHeader(
-   bibBuffer_t *inBuffer, 
-   const vdxGetSliceHeaderInputParam_t *inpParam,
-   vdxSliceHeader_t *header,
-   int *bitErrorIndication);
-
-void vdxGetMBAandSWIValues(
-   int width,
-   int height,
-   int fRRU,
-   int *mbaFieldWidth,
-   int *mbaMaxValue,
-   int *swiFieldWidth,
-   int *swiMaxValue);
-
-/* Macroblock Layer Global Functions */
-
-
-int vdxGetIMBLayer(
-   bibBuffer_t *inBuffer, 
-	 bibBuffer_t *outBuffer, 
-   bibBufferEdit_t *bufEdit,
-   int aColorEffect, 
-	 int *StartByteIndex, 
-	 int *StartBitIndex, 
-   TBool aGetDecodedFrame, 
-   const vdxGetIMBLayerInputParam_t *inpParam,
-   vdxIMBLayer_t *outParam,
-   int *bitErrorIndication,
-   CMPEG4Transcoder *hTranscoder);
-
-
-int vdxGetPPBMBLayer(
-   bibBuffer_t *inBuffer, 
-   bibBuffer_t *outBuffer, 
-   bibBufferEdit_t *bufEdit,
-   int aColorEffect,
-	 int *aStartByteIndex, 
-	 int *aStartBitIndex, 
-   TBool aGetDecodedFrame, 
-   int *bwMBType, 
-   const vdxGetPPBMBLayerInputParam_t *inpParam,
-   vdxPPBMBLayer_t *outParam,
-   int *bitErrorIndication,
-   CMPEG4Transcoder *hTranscoder);
-
-
-int vdxGetDataPartitionedIMBLayer_Part1(
-   bibBuffer_t *inBuffer, bibBuffer_t *outBuffer, bibBufferEdit_t *bufEdit, 
-	 int aColorEffect, int *aStartByteIndex, int *aStartBitIndex, 
-	 CMPEG4Transcoder *hTranscoder, 
-   const vdxGetDataPartitionedIMBLayerInputParam_t *inpParam,
-   dlst_t *MBList,
-   int *bitErrorIndication);
-
-int vdxGetDataPartitionedIMBLayer_Part2(
-   bibBuffer_t *inBuffer, bibBuffer_t *outBuffer, bibBufferEdit_t *bufEdit, 
-	 int aColorEffect, int *aStartByteIndex, int *aStartBitIndex, 
-   dlst_t *MBList,
-   int numMBsInVP,
-   int *bitErrorIndication);
-
-int vdxGetDataPartitionedPMBLayer_Part1(
-   bibBuffer_t *inBuffer, bibBuffer_t *outBuffer, bibBufferEdit_t *bufEdit, 
-	 int aColorEffect, int *aStartByteIndex, int *aStartBitIndex, 
-   const vdxGetDataPartitionedPMBLayerInputParam_t *inpParam,
-   dlst_t *MBList,
-   int *bitErrorIndication);
-
-int vdxGetDataPartitionedPMBLayer_Part2(
-   bibBuffer_t *inBuffer,
-   bibBuffer_t *outBuffer, 
-   bibBufferEdit_t *bufEdit,
-   int aColorEffect, int *aStartByteIndex, int *aStartBitIndex, 
-   CMPEG4Transcoder *hTranscoder, 
-   const vdxGetDataPartitionedPMBLayerInputParam_t *inpParam,
-   dlst_t *MBList,
-   int *bitErrorIndication);
-
-/* Block Layer Global Functions */
-
-int vdxGetIntraDCTBlock(
-   bibBuffer_t *inBuffer, 
-   int fCodedBlock,
-   int *block,
-   int *bitErrorIndication,
-   int fMQ,
-   int qp);
-
-int vdxGetIntraDC(
-   bibBuffer_t *inBuffer,
-	 bibBuffer_t *outBuffer, 
-   bibBufferEdit_t *bufEdit,
-   int aColorEffect, 
-	 int *aStartByteIndex, 
-	 int *aStartBitIndex,    
-	 int compnum,
-	 int *IntraDCSize, 
-   int *IntraDCDelta, 
-	 int *bitErrorIndication);
-
-int vdxGetMPEGIntraDCTBlock(
-   bibBuffer_t *inBuffer, 
-   int startIndex,
-   int *block,
-   int *bitErrorIndication);
-
-int vdxGetDCTBlock(
-   bibBuffer_t *inBuffer,
-   int startIndex,
-   u_char fMPEG4EscapeCodes,
-   int *block,
-   int *bitErrorIndication,
-   int fMQ,
-   int qp,
-   int *fEscapeCodeUsed);
-
-int vdxGetAdvIntraDCTBlock(
-   bibBuffer_t *inBuffer, 
-   int fCodedBlock,
-   int *block,
-   int *bitErrorIndication,
-   int predMode,
-   int fMQ,
-   int qp);
-
-int vdxGetAdvDCTBlock(
-   bibBuffer_t *inBuffer, 
-   int startIndex,
-   int *block,
-   int *bitErrorIndication,
-   int predMode,
-   int fMQ,
-   int qp);
-
-int vdxGetRVLCDCTBlock(
-   bibBuffer_t *inBuffer, 
-   int startIndex,
-   int fIntraBlock,
-   int *block,
-   int *bitErrorIndication);
-
-int vdxGetRVLCDCTBlockBackwards(
-   bibBuffer_t *inBuffer, 
-   int startIndex,
-   int fIntraBlock,
-   int *block,
-   int *bitErrorIndication);
-
-
-
-int vdxChangeBlackAndWhiteHeaderIntraIMB(bibBufferEdit_t *bufEdit, 
-																				 int mcbpcIndex,
-																				 int StartByteIndex, 
-																				 int StartBitIndex);
-
-int vdxChangeBlackAndWhiteHeaderInterPMB(bibBufferEdit_t *bufEdit, 
-																				 int mcbpcIndex,
-																				 int StartByteIndex, 
-																				 int StartBitIndex);
-
-
-
-#endif
-// End of File