1 |
/************************************************************************** |
/***************************************************************************** |
2 |
* |
* |
3 |
* XVID MPEG-4 VIDEO CODEC |
* XVID MPEG-4 VIDEO CODEC |
4 |
* - Motion sad header - |
* - Motion Estimation header - |
5 |
|
* |
6 |
|
* Copyright(C) 2002 Christoph Lampert <gruel@web.de> |
7 |
|
* |
8 |
|
* This program is an implementation of a part of one or more MPEG-4 |
9 |
|
* Video tools as specified in ISO/IEC 14496-2 standard. Those intending |
10 |
|
* to use this software module in hardware or software products are |
11 |
|
* advised that its use may infringe existing patents or copyrights, and |
12 |
|
* any such use would be at such party's own risk. The original |
13 |
|
* developer of this software module and his/her company, and subsequent |
14 |
|
* editors and their companies, will have no liability for use of this |
15 |
|
* software or modifications or derivatives thereof. |
16 |
* |
* |
17 |
* This program is free software; you can redistribute it and/or modify |
* This program is free software; you can redistribute it and/or modify |
18 |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
28 |
* along with this program; if not, write to the Free Software |
* along with this program; if not, write to the Free Software |
29 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
30 |
* |
* |
31 |
* $Id: motion.h,v 1.13 2002-07-21 23:34:08 chl Exp $ |
* $Id: motion.h,v 1.16 2002-09-07 09:18:48 chl Exp $ |
32 |
* |
* |
33 |
***************************************************************************/ |
***************************************************************************/ |
34 |
|
|
38 |
#include "../portab.h" |
#include "../portab.h" |
39 |
#include "../global.h" |
#include "../global.h" |
40 |
|
|
41 |
/* hard coded motion search parameters for motion_est and smp_motion_est */ |
/* hard coded motion search parameters for motion_est */ |
42 |
|
|
43 |
// very large value |
// very large value |
44 |
#define MV_MAX_ERROR (4096 * 256) |
#define MV_MAX_ERROR (4096 * 256) |
347 |
const IMAGE * const pRefHV, |
const IMAGE * const pRefHV, |
348 |
const uint32_t iLimit); |
const uint32_t iLimit); |
349 |
|
|
|
#ifdef _SMP |
|
|
bool |
|
|
SMP_MotionEstimation(MBParam * const pParam, |
|
|
FRAMEINFO * const current, |
|
|
FRAMEINFO * const reference, |
|
|
const IMAGE * const pRefH, |
|
|
const IMAGE * const pRefV, |
|
|
const IMAGE * const pRefHV, |
|
|
const uint32_t iLimit); |
|
|
#endif |
|
|
|
|
|
|
|
|
void MotionEstimationBVOP(MBParam * const pParam, |
|
|
FRAMEINFO * const frame, |
|
|
// forward (past) reference |
|
|
const int32_t time_bp, |
|
|
const int32_t time_pp, |
|
|
const MACROBLOCK * const f_mbs, |
|
|
const IMAGE * const f_ref, |
|
|
const IMAGE * const f_refH, |
|
|
const IMAGE * const f_refV, |
|
|
const IMAGE * const f_refHV, |
|
|
// backward (future) reference |
|
|
const MACROBLOCK * const b_mbs, |
|
|
const IMAGE * const b_ref, |
|
|
const IMAGE * const b_refH, |
|
|
const IMAGE * const b_refV, |
|
|
const IMAGE * const b_refHV); |
|
|
|
|
|
void MBMotionCompensationBVOP(MBParam * pParam, |
|
|
MACROBLOCK * const mb, |
|
|
const uint32_t i, |
|
|
const uint32_t j, |
|
|
IMAGE * const cur, |
|
|
const IMAGE * const f_ref, |
|
|
const IMAGE * const f_refh, |
|
|
const IMAGE * const f_refv, |
|
|
const IMAGE * const f_refhv, |
|
|
const IMAGE * const b_ref, |
|
|
const IMAGE * const b_refh, |
|
|
const IMAGE * const b_refv, |
|
|
const IMAGE * const b_refhv, |
|
|
int16_t * dct_codes); |
|
|
|
|
|
|
|
|
|
|
350 |
typedef int32_t(Halfpel8_RefineFunc) (const uint8_t * const pRef, |
typedef int32_t(Halfpel8_RefineFunc) (const uint8_t * const pRef, |
351 |
const uint8_t * const pRefH, |
const uint8_t * const pRefH, |
352 |
const uint8_t * const pRefV, |
const uint8_t * const pRefV, |