diff -r 951a5db380a0 -r e0b5df5c0969 videoeditorengine/h263decoder/inc/vdcmvc.h --- a/videoeditorengine/h263decoder/inc/vdcmvc.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +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: -* Function prototypes for motion vector counting for H.263 decoder. -* -*/ - - -#ifndef _VDCMVC_H_ -#define _VDCMVC_H_ - - -#include "epoclib.h" - -/* - * Defines - */ - -#define MVC_XM1_UP 0 -#define MVC_XM1_DOWN 1 -#define MVC_YM1_LEFT 2 -#define MVC_YM1_RIGHT 3 -#define MVC_XP1_UP 4 -#define MVC_XP1_DOWN 5 - -#define MVC_MB_INTER 1 -#define MVC_MB_INTRA 2 -#define MVC_MB_NOT_CODED 3 - - -/* - * Structs and typedefs - */ - -/* {{-output"mvRowItem_t_info.txt" -ignore"*" -noCR}} - mvRowItem_t is capable of storing one P frame motion vector. - It is used internally within the MVC module. - {{-output"mvRowItem_t_info.txt"}} */ - -/* {{-output"mvRowItem_t.txt"}} */ -typedef struct { - int mvx; /* motion vector value or MVD_INTRA or MVD_NOT_CODED */ - int mvy; - int y; /* the y coordinate for motion vector in block units */ - int time; /* a relative time when motion vector was counted */ - u_char fourMVs; /* flag indicating four MBs per macroblock */ - int type; /* MVC_MB_INTER, MVC_MB_INTRA or MVC_MB_NOT_CODED */ -} mvRowItem_t; -/* {{-output"mvRowItem_t.txt"}} */ - - -/* {{-output"mvBFBufItem_t_info.txt" -ignore"*" -noCR}} - mvBFBufItem_t is capable of storing one B frame motion vector. - It is used internally within the MVC module. - {{-output"mvBFBufItem_t_info.txt"}} */ - -/* {{-output"mvBFBufItem_t.txt"}} */ -typedef struct { - int mvx; /* motion vector value */ - int mvy; - int x; /* the x coordinate for mv in block units */ - int y; /* the y coordinate for mv in block units */ - int time; /* a relative time when mv was counted */ - u_char fourMVs; /* flag indicating four MBs per macroblock */ -} mvBFBufItem_t; -/* {{-output"mvBFBufItem_t.txt"}} */ - - -/* {{-output"mvcData_t_info.txt" -ignore"*" -noCR}} - mvcData_t is used to store the instance data for one MVC module and - it is capable of keeping state of the motion vector decoding process - for one encoded H.263 bitstream. - {{-output"mvcData_t_info.txt"}} */ - -/* {{-output"mvcData_t.txt"}} */ -typedef struct { - /* motion vector buffers - * - * mvRow contains three motion vector lines: mvRow0, mvRow1 and mvRow2 - * mvRow0 is the lower block line in the previous macroblock line - * mvRow1 is the higher block line in the current macroblock line - * mvRow2 is the lower block line in the current macroblock line - */ - mvRowItem_t *mvRow; - mvRowItem_t *mvRow0; - mvRowItem_t *mvRow1; - mvRowItem_t *mvRow2; - - int currMaxX; /* maxX, when mvcStart was last called */ - int currX; /* x for current macroblock being handled */ - int currY; /* y for current macroblock */ - int currTime; /* time for current macroblock */ - int mvRowIndex; /* the index of mvRow0 in mvRow array (0..2) */ - - mvBFBufItem_t mvFBufArray[2][4]; /* forward motion vectors for B frame - for current and previous MB */ - mvBFBufItem_t mvBBufArray[2][4]; /* backward motion vectors for B frame - for current and previous MB */ - int mvBFBufIndex; /* the index of the current MB in mvFBufArray and - mvBBufArray. The index of the previous MB is generated - by XORing 1 to this variable. */ - int currLumWidth; - int currLumHeight; - int mvRangeLowX; /* Lower boundary for horz. MV range */ - int mvRangeHighX; /* Higher boundary for horz. MV range */ - int mvRangeLowY; /* Lower boundary for vert. MV range */ - int mvRangeHighY; /* Higher boundary for vert. MV range */ - int prevPredMode; /* Flag for prediction of forward prediction vector in IPB - 1 => MB to the left has a FWD MV - 0 => Otherwise */ - 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 */ - int leftOfBorder; /* There is a border on the right of the previous MB */ - int rightOfBorderPrev; /* There is a border on the left of the previous MB */ - int downOfBorderPrev; /* There is a border on top of the previous MB */ - int upRightMBIsStart; /* The MB, on the previous line and next column is - the starting MB of the slice. If Annex K is not - in use returns zero.*/ - int fSS; /* Annex K use flag */ - - - int range; /* allowed range of the MVs: low= -range; high= range-1 */ - int f_code; /* f_code_forward for P-frames */ - -} mvcData_t; -/* {{-output"mvcData_t.txt"}} */ - - -/* - * Function prototypes - */ - -void mvcCalcMV(mvcData_t *mvcData, int mvdx, int mvdy, - int *mvx, int *mvy, u_char predictorMode, u_char fourMVs, - u_char unrestrictedMV, u_char nonEmptyGOBHeader, int x, - int y, int time, int mbType, int16 *error, int fPLUSPTYPE, - int fUMVLimited); - -void mvcSetBorders( - mvcData_t *mvcData, int x, int y, int mba, int numMBsInMBLine, - int *rightOfBorder, int *downOfBorder); - -void mvcCalcMPEGMV(mvcData_t *mvcData, - int mvdx, int mvdy, int *mvx, int *mvy, - u_char predictorMode, u_char fourMVs, - u_char topOfVP, u_char leftOfVP, u_char fmv3_out, - int x, int y, int time, int mbType, int16 *error); - -void mvcCalcMVsForBFrame(mvcData_t *mvcData, int *mvfx, int *mvfy, - int *mvbx, int *mvby, int *mvx, int *mvy, int mvdx, int mvdy, - int trb, int trd, int numMVs, u_char unrestrictedMV, - int x, int y, int time); - -void mvcCalcFwdMVsForImpBFrame(mvcData_t *mvcData, int *mvfx, int *mvfy, - int *mvbx, int *mvby, int mvdx, int mvdy, int x, int y, int fUMV); - -void mvcFree(mvcData_t *mvcData); - -void mvcGetCurrNeighbourMVs(mvcData_t *mvcData, int *nmvx, int *nmvy, - int16 *error); - -void mvcGetPrevNeighbourMVs(mvcData_t *mvcData, int *nmvx, int *nmvy, - int *pmvx, int *pmvy, u_char *fourMVs, int16 *error); - -void mvcGetPrevMVFsAndMVBs(mvcData_t *mvcData, int *mvfx, int *mvfy, - int *mvbx, int *mvby, u_char *fourMVs, int16 *error); - -void mvcMarkMBIntra(mvcData_t *mvcData, int x, int y, int time); - -void mvcMarkMBNotCoded(mvcData_t *mvcData, int x, int y, int time); - -void mvcStart(mvcData_t *mvcData, int maxX, int lumWidth, - int lumHeight, int16 *error); - -void mvcGetCurrentMVs(mvcData_t *mvcData, int *mvx, int *mvy, - int16 *error); - -#endif -// End of File