3 |
* XVID MPEG-4 VIDEO CODEC |
* XVID MPEG-4 VIDEO CODEC |
4 |
* - Native API implementation - |
* - Native API implementation - |
5 |
* |
* |
6 |
|
* Copyright(C) 2001-2003 Peter Ross <pross@xvid.org> |
7 |
|
* |
8 |
* This program is free software ; you can redistribute it and/or modify |
* This program is free software ; you can redistribute it and/or modify |
9 |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
10 |
* the Free Software Foundation ; either version 2 of the License, or |
* the Free Software Foundation ; either version 2 of the License, or |
19 |
* along with this program ; if not, write to the Free Software |
* along with this program ; if not, write to the Free Software |
20 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
* |
* |
22 |
* $Id: xvid.c,v 1.45.2.2 2003-03-26 11:01:03 suxen_drol Exp $ |
* $Id: xvid.c,v 1.45.2.10 2003-07-14 12:40:16 syskin Exp $ |
23 |
* |
* |
24 |
****************************************************************************/ |
****************************************************************************/ |
25 |
|
|
47 |
#include "utils/timer.h" |
#include "utils/timer.h" |
48 |
#include "bitstream/mbcoding.h" |
#include "bitstream/mbcoding.h" |
49 |
|
|
50 |
|
#if defined(_DEBUG) |
51 |
|
unsigned int xvid_debug = 0; /* xvid debug mask */ |
52 |
|
#endif |
53 |
|
|
54 |
#if defined(ARCH_IS_IA32) |
#if defined(ARCH_IS_IA32) |
55 |
|
|
56 |
#if defined(_MSC_VER) |
#if defined(_MSC_VER) |
288 |
|
|
289 |
#if defined(ARCH_IS_IA32) |
#if defined(ARCH_IS_IA32) |
290 |
|
|
291 |
if ((cpu_flags & XVID_CPU_ASM)) |
if ((cpu_flags & XVID_CPU_ASM)) { |
|
{ |
|
292 |
vfilter_31 = xvid_VFilter_31_x86; |
vfilter_31 = xvid_VFilter_31_x86; |
293 |
hfilter_31 = xvid_HFilter_31_x86; |
hfilter_31 = xvid_HFilter_31_x86; |
294 |
} |
} |
403 |
add_upsampled_8x8_16to8 = xvid_Add_Upsampled_8x8_16To8_xmm; |
add_upsampled_8x8_16to8 = xvid_Add_Upsampled_8x8_16To8_xmm; |
404 |
|
|
405 |
/* Quantization */ |
/* Quantization */ |
406 |
quant4_intra = quant4_intra_xmm; |
// quant4_intra = quant4_intra_xmm; |
407 |
quant4_inter = quant4_inter_xmm; |
quant4_inter = quant4_inter_xmm; |
408 |
|
|
409 |
dequant_intra = dequant_intra_xmm; |
dequant_intra = dequant_intra_xmm; |
451 |
/* Quantization */ |
/* Quantization */ |
452 |
dequant4_intra = dequant4_intra_3dne; |
dequant4_intra = dequant4_intra_3dne; |
453 |
dequant4_inter = dequant4_inter_3dne; |
dequant4_inter = dequant4_inter_3dne; |
454 |
quant_intra = quant_intra_3dne; |
// quant_intra = quant_intra_3dne; |
455 |
quant_inter = quant_inter_3dne; |
quant_inter = quant_inter_3dne; |
456 |
dequant_intra = dequant_intra_3dne; |
dequant_intra = dequant_intra_3dne; |
457 |
dequant_inter = dequant_inter_3dne; |
dequant_inter = dequant_inter_3dne; |
487 |
dev16 = dev16_sse2; |
dev16 = dev16_sse2; |
488 |
#endif |
#endif |
489 |
/* Forward and Inverse DCT */ |
/* Forward and Inverse DCT */ |
490 |
|
#if 0 /* Both function are known to be unprecise, better keep them deactivated */ |
491 |
idct = idct_sse2; |
idct = idct_sse2; |
492 |
fdct = fdct_sse2; |
fdct = fdct_sse2; |
493 |
|
#endif |
494 |
} |
} |
495 |
#endif |
#endif |
496 |
|
|
517 |
transfer_8to16sub2 = transfer_8to16sub2_ia64; |
transfer_8to16sub2 = transfer_8to16sub2_ia64; |
518 |
transfer_16to8add = transfer_16to8add_ia64; |
transfer_16to8add = transfer_16to8add_ia64; |
519 |
transfer8x8_copy = transfer8x8_copy_ia64; |
transfer8x8_copy = transfer8x8_copy_ia64; |
|
DPRINTF(DPRINTF_DEBUG, "Using IA-64 assembler routines."); |
|
520 |
} |
} |
521 |
#endif |
#endif |
522 |
|
|
538 |
} |
} |
539 |
#endif |
#endif |
540 |
|
|
541 |
|
#if defined(_DEBUG) |
542 |
|
xvid_debug = init->debug; |
543 |
|
#endif |
544 |
|
|
545 |
return 0; |
return 0; |
546 |
} |
} |
547 |
|
|
578 |
if (XVID_MAJOR(convert->version) != 1) /* v1.x.x */ |
if (XVID_MAJOR(convert->version) != 1) /* v1.x.x */ |
579 |
return XVID_ERR_VERSION; |
return XVID_ERR_VERSION; |
580 |
|
|
581 |
// const int flip1 = (convert->input.colorspace & XVID_CSP_VFLIP) ^ (convert->output.colorspace & XVID_CSP_VFLIP); |
#if 0 |
582 |
|
const int flip1 = (convert->input.colorspace & XVID_CSP_VFLIP) ^ (convert->output.colorspace & XVID_CSP_VFLIP); |
583 |
|
#endif |
584 |
width = convert->width; |
width = convert->width; |
585 |
height = convert->height; |
height = convert->height; |
586 |
width2 = convert->width/2; |
width2 = convert->width/2; |
652 |
{ |
{ |
653 |
int i, diff = 0; |
int i, diff = 0; |
654 |
for (i = 0; i < size; i++) |
for (i = 0; i < size; i++) |
655 |
diff += ABS(blockA[i]-blockB[i]); |
diff += abs(blockA[i]-blockB[i]); |
656 |
return diff; |
return diff; |
657 |
} |
} |
658 |
|
|