www.pudn.com > mpeg4_DECORE.rar > 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