340 |
|
|
341 |
#endif /* ARCH_IS_PPC */ |
#endif /* ARCH_IS_PPC */ |
342 |
|
|
343 |
|
/* mmx impl. (for 64bit bus) declaration (see. qpel_mmx.asm |
344 |
|
****************************************************************************/ |
345 |
|
|
346 |
|
#ifdef ARCH_IS_X86_64 |
347 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_16_x86_64); |
348 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_16_x86_64); |
349 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_16_x86_64); |
350 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_16_x86_64); |
351 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_16_x86_64); |
352 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_16_x86_64); |
353 |
|
|
354 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_8_x86_64); |
355 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_8_x86_64); |
356 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_8_x86_64); |
357 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_8_x86_64); |
358 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_8_x86_64); |
359 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_8_x86_64); |
360 |
|
|
361 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Add_16_x86_64); |
362 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Add_16_x86_64); |
363 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_Add_16_x86_64); |
364 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Add_16_x86_64); |
365 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Add_16_x86_64); |
366 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_Add_16_x86_64); |
367 |
|
|
368 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_8_Add_x86_64); |
369 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_8_Add_x86_64); |
370 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_H_Pass_Avrg_Up_8_Add_x86_64); |
371 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_8_Add_x86_64); |
372 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_8_Add_x86_64); |
373 |
|
extern XVID_QP_PASS_SIGNATURE(xvid_V_Pass_Avrg_Up_8_Add_x86_64); |
374 |
|
|
375 |
|
XVID_QP_FUNCS xvid_QP_Funcs_x86_64 = { |
376 |
|
xvid_H_Pass_16_x86_64, xvid_H_Pass_Avrg_16_x86_64, xvid_H_Pass_Avrg_Up_16_x86_64, |
377 |
|
xvid_V_Pass_16_x86_64, xvid_V_Pass_Avrg_16_x86_64, xvid_V_Pass_Avrg_Up_16_x86_64, |
378 |
|
|
379 |
|
xvid_H_Pass_8_x86_64, xvid_H_Pass_Avrg_8_x86_64, xvid_H_Pass_Avrg_Up_8_x86_64, |
380 |
|
xvid_V_Pass_8_x86_64, xvid_V_Pass_Avrg_8_x86_64, xvid_V_Pass_Avrg_Up_8_x86_64 |
381 |
|
}; |
382 |
|
|
383 |
|
XVID_QP_FUNCS xvid_QP_Add_Funcs_x86_64 = { |
384 |
|
xvid_H_Pass_Add_16_x86_64, xvid_H_Pass_Avrg_Add_16_x86_64, xvid_H_Pass_Avrg_Up_Add_16_x86_64, |
385 |
|
xvid_V_Pass_Add_16_x86_64, xvid_V_Pass_Avrg_Add_16_x86_64, xvid_V_Pass_Avrg_Up_Add_16_x86_64, |
386 |
|
|
387 |
|
xvid_H_Pass_8_Add_x86_64, xvid_H_Pass_Avrg_8_Add_x86_64, xvid_H_Pass_Avrg_Up_8_Add_x86_64, |
388 |
|
xvid_V_Pass_8_Add_x86_64, xvid_V_Pass_Avrg_8_Add_x86_64, xvid_V_Pass_Avrg_Up_8_Add_x86_64, |
389 |
|
}; |
390 |
|
#endif /* ARCH_IS_X86_64 */ |
391 |
|
|
392 |
/* tables for ASM |
/* tables for ASM |
393 |
****************************************************************************/ |
****************************************************************************/ |
394 |
|
|
396 |
uint16_t xvid_Expand_mmx[256][4]; /* 8b -> 64b expansion table */ |
uint16_t xvid_Expand_mmx[256][4]; /* 8b -> 64b expansion table */ |
397 |
#endif |
#endif |
398 |
|
|
399 |
|
#ifdef ARCH_IS_X86_64 |
400 |
|
extern uint16_t xvid_Expand_mmx[][]; /* 8b -> 64b expansion table */ |
401 |
|
#endif |
402 |
|
|
403 |
/* Alternate way of filtering (cf. USE_TABLES flag in qpel_mmx.asm) |
/* Alternate way of filtering (cf. USE_TABLES flag in qpel_mmx.asm) |
404 |
* |
* |
405 |
* 17 tables, 2K each => 34K |
* 17 tables, 2K each => 34K |
407 |
* (for instance: (23,19,-6,3)=(20,20,-6,3)+(3,-1,0,0) |
* (for instance: (23,19,-6,3)=(20,20,-6,3)+(3,-1,0,0) |
408 |
* Using Symmetries (and bswap) could reduce further |
* Using Symmetries (and bswap) could reduce further |
409 |
* the memory to 7 tables (->14K). */ |
* the memory to 7 tables (->14K). */ |
410 |
|
#ifdef ARCH_IS_X86_64 |
411 |
|
extern int16_t xvid_FIR_1_0_0_0[][]; |
412 |
|
extern int16_t xvid_FIR_3_1_0_0[][]; |
413 |
|
extern int16_t xvid_FIR_6_3_1_0[][]; |
414 |
|
extern int16_t xvid_FIR_14_3_2_1[][]; |
415 |
|
extern int16_t xvid_FIR_20_6_3_1[][]; |
416 |
|
extern int16_t xvid_FIR_20_20_6_3[][]; |
417 |
|
extern int16_t xvid_FIR_23_19_6_3[][]; |
418 |
|
extern int16_t xvid_FIR_7_20_20_6[][]; |
419 |
|
extern int16_t xvid_FIR_6_20_20_6[][]; |
420 |
|
extern int16_t xvid_FIR_6_20_20_7[][]; |
421 |
|
extern int16_t xvid_FIR_3_6_20_20[][]; |
422 |
|
extern int16_t xvid_FIR_3_6_19_23[][]; |
423 |
|
extern int16_t xvid_FIR_1_3_6_20[][]; |
424 |
|
extern int16_t xvid_FIR_1_2_3_14[][]; |
425 |
|
extern int16_t xvid_FIR_0_1_3_6[][]; |
426 |
|
extern int16_t xvid_FIR_0_0_1_3[][]; |
427 |
|
extern int16_t xvid_FIR_0_0_0_1[][]; |
428 |
|
#else |
429 |
int16_t xvid_FIR_1_0_0_0[256][4]; |
int16_t xvid_FIR_1_0_0_0[256][4]; |
430 |
int16_t xvid_FIR_3_1_0_0[256][4]; |
int16_t xvid_FIR_3_1_0_0[256][4]; |
431 |
int16_t xvid_FIR_6_3_1_0[256][4]; |
int16_t xvid_FIR_6_3_1_0[256][4]; |
443 |
int16_t xvid_FIR_0_1_3_6[256][4]; |
int16_t xvid_FIR_0_1_3_6[256][4]; |
444 |
int16_t xvid_FIR_0_0_1_3[256][4]; |
int16_t xvid_FIR_0_0_1_3[256][4]; |
445 |
int16_t xvid_FIR_0_0_0_1[256][4]; |
int16_t xvid_FIR_0_0_0_1[256][4]; |
446 |
|
#endif |
447 |
|
|
448 |
static void Init_FIR_Table(int16_t Tab[][4], |
static void Init_FIR_Table(int16_t Tab[][4], |
449 |
int A, int B, int C, int D) |
int A, int B, int C, int D) |