--- motion.h 2002/07/21 23:34:08 1.13 +++ motion.h 2002/11/26 23:44:10 1.18 @@ -1,10 +1,14 @@ -/************************************************************************** +/***************************************************************************** * * XVID MPEG-4 VIDEO CODEC - * - Motion sad header - + * - Motion Estimation header - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * Copyright(C) 2002 Christoph Lampert + * + * This file is part of XviD, a free MPEG-4 video encoder/decoder + * + * XviD is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * @@ -17,7 +21,36 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: motion.h,v 1.13 2002/07/21 23:34:08 chl Exp $ + * Under section 8 of the GNU General Public License, the copyright + * holders of XVID explicitly forbid distribution in the following + * countries: + * + * - Japan + * - United States of America + * + * Linking XviD statically or dynamically with other modules is making a + * combined work based on XviD. Thus, the terms and conditions of the + * GNU General Public License cover the whole combination. + * + * As a special exception, the copyright holders of XviD give you + * permission to link XviD with independent modules that communicate with + * XviD solely through the VFW1.1 and DShow interfaces, regardless of the + * license terms of these independent modules, and to copy and distribute + * the resulting combined work under terms of your choice, provided that + * every copy of the combined work is accompanied by a complete copy of + * the source code of XviD (the version of XviD used to produce the + * combined work), being distributed under the terms of the GNU General + * Public License plus this exception. An independent module is a module + * which is not derived from or based on XviD. + * + * Note that people who make modified versions of XviD are not obligated + * to grant this special exception for their modified versions; it is + * their choice whether to do so. The GNU General Public License gives + * permission to release a modified version without this exception; this + * exception also makes it possible to release a modified version which + * carries forward this exception. + * + * $Id: motion.h,v 1.18 2002/11/26 23:44:10 edgomez Exp $ * ***************************************************************************/ @@ -27,18 +60,18 @@ #include "../portab.h" #include "../global.h" -/* hard coded motion search parameters for motion_est and smp_motion_est */ +/* hard coded motion search parameters for motion_est */ -// very large value +/* very large value */ #define MV_MAX_ERROR (4096 * 256) -// stop search if sdelta < THRESHOLD +/* stop search if sdelta < THRESHOLD */ #define MV16_THRESHOLD 192 #define MV8_THRESHOLD 56 #define NEIGH_MOVE_THRESH 0 -// how much a block's MV must differ from his neighbour -// to be search for INTER4V. The more, the faster... +/* how much a block's MV must differ from his neighbour */ +/* to be search for INTER4V. The more, the faster... */ /* sad16(0,0) bias; mpeg4 spec suggests nb/2+1 */ /* nb = vop pixels * 2^(bpp-8) */ @@ -55,7 +88,7 @@ #define NEIGH_TEND_16X16 2 #define NEIGH_TEND_8X8 2 -// fast ((A)/2)*2 +/* fast ((A)/2)*2 */ #define EVEN(A) (((A)<0?(A)+1:(A)) & ~1) #define MVzero(A) ( ((A).x)==(0) && ((A).y)==(0) ) @@ -65,13 +98,13 @@ #ifndef SEARCH16 #define SEARCH16 PMVfastSearch16 -//#define SEARCH16 FullSearch16 -//#define SEARCH16 EPZSSearch16 +/*#define SEARCH16 FullSearch16 */ +/*#define SEARCH16 EPZSSearch16 */ #endif #ifndef SEARCH8 #define SEARCH8 PMVfastSearch8 -//#define SEARCH8 EPZSSearch8 +/*#define SEARCH8 EPZSSearch8 */ #endif @@ -336,52 +369,6 @@ const IMAGE * const pRefHV, const uint32_t iLimit); -#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); - - - typedef int32_t(Halfpel8_RefineFunc) (const uint8_t * const pRef, const uint8_t * const pRefH, const uint8_t * const pRefV,