--- trunk/xvidcore/src/image/x86_asm/yv12_to_rgb32_mmx.asm 2002/11/17 00:20:30 651 +++ trunk/xvidcore/src/image/x86_asm/yv12_to_rgb32_mmx.asm 2003/02/15 15:22:19 851 @@ -1,59 +1,41 @@ -;/***************************************************************************** -; * -; * XVID MPEG-4 VIDEO CODEC -; * mmx yuv planar to rgb conversion -; * -; * Copyright (C) 2001 - Michael Militzer -; * -; * 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. -; * -; * 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 -; * -; * 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: yv12_to_rgb32_mmx.asm,v 1.4 2002-11-17 00:20:30 edgomez Exp $ -; * -; ****************************************************************************/ +;------------------------------------------------------------------------------ +; +; 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. +; +; XviD 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 +; +;------------------------------------------------------------------------------ +;------------------------------------------------------------------------------ +; +; yuv_to_rgb32.asm, MMX optimized color conversion ; +; Copyright (C) 2001 - Michael Militzer +; +; For more information visit the XviD homepage: http://www.xvid.org +; +;------------------------------------------------------------------------------ +;------------------------------------------------------------------------------ +; +; Revision history : +; +; 13.12.2001 initial version (Isibaar) +; 23.07.2002 Thread safe version (edgomez) +; +; $Id: yv12_to_rgb32_mmx.asm,v 1.5 2003-02-15 15:22:18 edgomez Exp $ +; +;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------ ; NB: n contrary to the c implementation this code does the conversion ; using direct calculations. Input data width must be a multiple of 8 @@ -163,10 +145,10 @@ mov ecx, [esp + 24 + localsize] ; dst_stride -> ecx mov edx, ecx - shl edx, 3 - mov ecx, edx ; 8 * dst_stride -> ecx + shl edx, 1 + mov ecx, edx ; 2 * dst_stride -> ecx shl esi, 2 - sub ecx, esi ; 8 * dst_stride - 4 * width -> ecx + sub ecx, esi ; 2 * dst_stride - 4 * width -> ecx mov [dst_dif], ecx @@ -224,10 +206,10 @@ add ebx, ebp ; y_src2 -> ebp mov ecx, [esp + 24 + localsize] ; dst_stride -> ecx - shl ecx, 3 - mov edx, ecx ; 8 * dst_stride -> edx + shl ecx, 1 + mov edx, ecx ; 2 * dst_stride -> edx shl esi, 2 - sub ecx, esi ; 8 * dst_stride - 4 * width -> ecx + sub ecx, esi ; 2 * dst_stride - 4 * width -> ecx mov [dst_dif], ecx