www.pudn.com > MPEG4Codec.zip > deblock_vert.c


/************************************************************************** 
 *                                                                        * 
 * This code has been developed by John Funnell. This software is an      * 
 * implementation of a part of one or more MPEG-4 Video tools as          * 
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    * 
 * software module in hardware or software products are advised that its  * 
 * use may infringe existing patents or copyrights, and any such use      * 
 * would be at such party's own risk.  The original developer of this     * 
 * software module and his/her company, and subsequent editors and their  * 
 * companies (including Project Mayo), will have no liability for use of  * 
 * this software or modifications or derivatives thereof.                 * 
 *                                                                        * 
 * Project Mayo gives users of the Codec a license to this software       * 
 * module or modifications thereof for use in hardware or software        * 
 * products claiming conformance to the MPEG-4 Video Standard as          * 
 * described in the Open DivX license.                                    * 
 *                                                                        * 
 * The complete Open DivX license can be found at                         * 
 * http://www.projectmayo.com/opendivx/license.php                        * 
 *                                                                        * 
 **************************************************************************/ 
/** 
*  Copyright (C) 2001 - Project Mayo 
 * 
 * John Funnell 
 * 
 * DivX Advanced Research Center  
* 
**/ 
 
/*** 
 
References:   
 * ISO/IEC 14496-2 
 * MoMuSys-FDIS-V1.0-990812 
 * Intel Architecture Software Developer's Manual 
   Volume 2: Instruction Set Reference 
 
***/ 
 
#include "postprocess_mmx.h" 
 
/* top level function for vertical deblock that loops from left to right along a line */ 
 
/* John Funnell, December 2000 */ 
 
 
/* this is to help us inline our functions */  
#ifdef PP_COMPONENTS_INLINE 
 #ifndef INLINE 
 #define INLINE static __inline 
 #endif 
 #include "deblock_vert_DC_on.c" 
 #include "deblock_vert_choose_p1p2.c" 
 #include "deblock_vert_copy_and_unpack.c" 
 #include "deblock_vert_default_filter.c" 
 #include "deblock_vert_lpf9.c" 
 #include "deblock_vert_useDC.c" 
#endif 
 
 
/* this is a vertical deblocking filter - i.e. it will smooth _horizontal_ block edges */ 
void deblock_vert( uint8_t *image, int width, int stride, QP_STORE_T *QP_store, int QP_stride, int chromaFlag) { 
	uint64_t v_local[20]; 
	uint64_t p1p2[4]; 
	int Bx, x, y; 
	int QP, QPx16; 
	uint8_t *v; 
	int useDC, DC_on; 
	#ifdef PREFETCH_AHEAD_V 
	void *prefetch_addr; 
	#endif 
 
	y = 0; 
	 
	/* loop over image's block boundary rows */ 
//	for (y=8; y