--- quant.h 2003/10/07 14:16:29 1.1 +++ quant.h 2003/10/09 18:50:22 1.1.2.2 @@ -0,0 +1,140 @@ +/***************************************************************************** + * + * XVID MPEG-4 VIDEO CODEC + * - (de)Quantization related header - + * + * Copyright(C) 2003 Edouard Gomez + * + * 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 + * the Free Software Foundation ; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY ; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program ; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id: quant.h,v 1.1.2.2 2003/10/09 18:50:22 edgomez Exp $ + * + ****************************************************************************/ + +#ifndef _QUANT_H_ +#define _QUANT_H_ + +#include "../portab.h" + +/***************************************************************************** + * Common API for Intra (de)Quant functions + ****************************************************************************/ + +typedef uint32_t (quant_intraFunc) (int16_t * coeff, + const int16_t * data, + const uint32_t quant, + const uint32_t dcscalar); + +typedef quant_intraFunc *quant_intraFuncPtr; + +/* Global function pointers */ +extern quant_intraFuncPtr quant_h263_intra; +extern quant_intraFuncPtr quant_mpeg_intra; +extern quant_intraFuncPtr dequant_h263_intra; +extern quant_intraFuncPtr dequant_mpeg_intra; + +/***************************************************************************** + * Known implementation of Intra (de)Quant functions + ****************************************************************************/ + +/* Quant functions */ +quant_intraFunc quant_h263_intra_c; +quant_intraFunc quant_mpeg_intra_c; + +#ifdef ARCH_IS_IA32 +quant_intraFunc quant_h263_intra_mmx; +quant_intraFunc quant_h263_intra_3dne; +quant_intraFunc quant_h263_intra_sse2; + +quant_intraFunc quant_mpeg_intra_mmx; +quant_intraFunc quant_mpeg_intra_xmm; +#endif + +#ifdef ARCH_IS_IA64 +quant_intraFunc quant_h263_intra_ia64; +#endif + +/* DeQuant functions */ +quant_intraFunc dequant_h263_intra_c; +quant_intraFunc dequant_mpeg_intra_c; + +#ifdef ARCH_IS_IA32 +quant_intraFunc dequant_h263_intra_mmx; +quant_intraFunc dequant_h263_intra_xmm; +quant_intraFunc dequant_h263_intra_3dne; +quant_intraFunc dequant_h263_intra_sse2; + +quant_intraFunc dequant_mpeg_intra_mmx; +quant_intraFunc dequant_mpeg_intra_3dne; +#endif + +#ifdef ARCH_IS_IA64 +quanth263_intraFunc dequant_intra_ia64; +#endif + +/***************************************************************************** + * Common API for Inter (de)Quant functions + ****************************************************************************/ + +typedef uint32_t (quant_interFunc) (int16_t * coeff, + const int16_t * data, + const uint32_t quant); + +typedef quant_interFunc *quant_interFuncPtr; + +/* Global function pointers */ +extern quant_interFuncPtr quant_h263_inter; +extern quant_interFuncPtr quant_mpeg_inter; +extern quant_interFuncPtr dequant_h263_inter; +extern quant_interFuncPtr dequant_mpeg_inter; + +/***************************************************************************** + * Known implementation of Inter (de)Quant functions + ****************************************************************************/ + +quant_interFunc quant_h263_inter_c; +quant_interFunc quant_mpeg_inter_c; + +#ifdef ARCH_IS_IA32 +quant_interFunc quant_h263_inter_mmx; +quant_interFunc quant_h263_inter_3dne; +quant_interFunc quant_h263_inter_sse2; + +quant_interFunc quant_mpeg_inter_mmx; +quant_interFunc quant_mpeg_inter_xmm; +#endif + +#ifdef ARCH_IS_IA64 +quant_interFunc quant_h263_inter_ia64; +#endif + +quant_interFunc dequant_h263_inter_c; +quant_interFunc dequant_mpeg_inter_c; + +#ifdef ARCH_IS_IA32 +quant_interFunc dequant_h263_inter_mmx; +quant_interFunc dequant_h263_inter_xmm; +quant_interFunc dequant_h263_inter_3dne; +quant_interFunc dequant_h263_inter_sse2; + +quant_interFunc dequant_mpeg_inter_mmx; +quant_interFunc dequant_mpeg_inter_3dne; +#endif + +#ifdef ARCH_IS_IA64 +quant_interFunc dequant_h263_inter_ia64; +#endif + +#endif /* _QUANT_H_ */