44 |
#include "utils/emms.h" |
#include "utils/emms.h" |
45 |
#include "utils/timer.h" |
#include "utils/timer.h" |
46 |
#include "bitstream/mbcoding.h" |
#include "bitstream/mbcoding.h" |
|
#include "image/qpel.h" |
|
47 |
|
|
48 |
#if defined(ARCH_IS_IA32) |
#if defined(ARCH_IS_IA32) |
49 |
|
|
181 |
|
|
182 |
init_param->cpu_flags = cpu_flags; |
init_param->cpu_flags = cpu_flags; |
183 |
|
|
|
/* Qpel stuff */ |
|
|
xvid_QP_Funcs = &xvid_QP_Funcs_C; |
|
|
xvid_QP_Add_Funcs = &xvid_QP_Add_Funcs_C; |
|
|
xvid_Init_QP_mmx(); |
|
184 |
|
|
185 |
/* Initialize the function pointers */ |
/* Initialize the function pointers */ |
186 |
idct_int32_init(); |
idct_int32_init(); |
318 |
|
|
319 |
if ((cpu_flags & XVID_CPU_MMX)) { |
if ((cpu_flags & XVID_CPU_MMX)) { |
320 |
|
|
|
/* Qpel stuff */ |
|
|
xvid_QP_Funcs = &xvid_QP_Funcs_mmx; |
|
|
xvid_QP_Add_Funcs = &xvid_QP_Add_Funcs_mmx; |
|
|
xvid_Init_QP_mmx(); |
|
|
|
|
321 |
/* Forward and Inverse Discrete Cosine Transformation functions */ |
/* Forward and Inverse Discrete Cosine Transformation functions */ |
322 |
fdct = fdct_mmx; |
fdct = fdct_mmx; |
323 |
idct = idct_mmx; |
idct = simple_idct_mmx; /* use simple idct by default */ |
324 |
|
|
325 |
/* Quantization related functions */ |
/* Quantization related functions */ |
326 |
quant_intra = quant_intra_mmx; |
quant_intra = quant_intra_mmx; |
406 |
if ((cpu_flags & XVID_CPU_MMXEXT)) { |
if ((cpu_flags & XVID_CPU_MMXEXT)) { |
407 |
|
|
408 |
/* Inverse DCT */ |
/* Inverse DCT */ |
409 |
idct = idct_xmm; |
/* idct = idct_xmm; Don't use Walken idct anymore! */ |
410 |
|
|
411 |
/* Interpolation */ |
/* Interpolation */ |
412 |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_xmm; |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_xmm; |
452 |
if ((cpu_flags & XVID_CPU_3DNOWEXT)) { |
if ((cpu_flags & XVID_CPU_3DNOWEXT)) { |
453 |
|
|
454 |
/* Inverse DCT */ |
/* Inverse DCT */ |
455 |
idct = idct_3dne; |
/* idct = idct_3dne; Don't use Walken idct anymore */ |
456 |
|
|
457 |
/* Buffer transfer */ |
/* Buffer transfer */ |
458 |
transfer_8to16copy = transfer_8to16copy_3dne; |
transfer_8to16copy = transfer_8to16copy_3dne; |
502 |
dev16 = dev16_sse2; |
dev16 = dev16_sse2; |
503 |
#endif |
#endif |
504 |
/* Forward and Inverse DCT */ |
/* Forward and Inverse DCT */ |
505 |
idct = idct_sse2; |
/* idct = idct_sse2; |
506 |
fdct = fdct_sse2; |
/* fdct = fdct_sse2; Both are none to be unprecise - better deactivate for now */ |
507 |
} |
} |
508 |
#endif |
#endif |
509 |
|
|