[svn] / trunk / xvidcore / src / image / qpel.c Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/image/qpel.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1530, Tue Aug 10 21:58:55 2004 UTC revision 1586, Wed Jan 5 23:02:15 2005 UTC
# Line 19  Line 19 
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: qpel.c,v 1.3 2004-08-10 21:58:55 edgomez Exp $   * $Id: qpel.c,v 1.5 2005-01-05 23:02:15 edgomez Exp $
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
# Line 287  Line 287 
287  };  };
288  #endif /* ARCH_IS_IA32 */  #endif /* ARCH_IS_IA32 */
289    
290    
291    /* altivec impl. declaration (see qpel_altivec.c)
292     ****************************************************************************/
293    
294    #ifdef ARCH_IS_PPC
295    
296    extern XVID_QP_PASS_SIGNATURE(H_Pass_16_Altivec_C);
297    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_16_Altivec_C);
298    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_Up_16_Altivec_C);
299    extern XVID_QP_PASS_SIGNATURE(V_Pass_16_Altivec_C);
300    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_16_Altivec_C);
301    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_Up_16_Altivec_C);
302    
303    extern XVID_QP_PASS_SIGNATURE(H_Pass_8_Altivec_C);
304    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_8_Altivec_C);
305    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_Up_8_Altivec_C);
306    extern XVID_QP_PASS_SIGNATURE(V_Pass_8_Altivec_C);
307    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_8_Altivec_C);
308    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_Up_8_Altivec_C);
309    
310    
311    extern XVID_QP_PASS_SIGNATURE(H_Pass_16_Add_Altivec_C);
312    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_16_Add_Altivec_C);
313    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_Up_16_Add_Altivec_C);
314    extern XVID_QP_PASS_SIGNATURE(V_Pass_16_Add_Altivec_C);
315    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_16_Add_Altivec_C);
316    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_Up_16_Add_Altivec_C);
317    
318    extern XVID_QP_PASS_SIGNATURE(H_Pass_8_Add_Altivec_C);
319    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_8_Add_Altivec_C);
320    extern XVID_QP_PASS_SIGNATURE(H_Pass_Avrg_Up_8_Add_Altivec_C);
321    extern XVID_QP_PASS_SIGNATURE(V_Pass_8_Add_Altivec_C);
322    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_8_Add_Altivec_C);
323    extern XVID_QP_PASS_SIGNATURE(V_Pass_Avrg_Up_8_Add_Altivec_C);
324    
325    XVID_QP_FUNCS xvid_QP_Funcs_Altivec_C = {
326            H_Pass_16_Altivec_C, H_Pass_Avrg_16_Altivec_C, H_Pass_Avrg_Up_16_Altivec_C,
327            V_Pass_16_Altivec_C, V_Pass_Avrg_16_Altivec_C, V_Pass_Avrg_Up_16_Altivec_C,
328    
329            H_Pass_8_Altivec_C, H_Pass_Avrg_8_Altivec_C, H_Pass_Avrg_Up_8_Altivec_C,
330            V_Pass_8_Altivec_C, V_Pass_Avrg_8_Altivec_C, V_Pass_Avrg_Up_8_Altivec_C
331    };
332    
333    XVID_QP_FUNCS xvid_QP_Add_Funcs_Altivec_C = {
334            H_Pass_16_Add_Altivec_C, H_Pass_Avrg_16_Add_Altivec_C, H_Pass_Avrg_Up_16_Add_Altivec_C,
335            V_Pass_16_Add_Altivec_C, V_Pass_Avrg_16_Add_Altivec_C, V_Pass_Avrg_Up_16_Add_Altivec_C,
336    
337            H_Pass_8_Add_Altivec_C, H_Pass_Avrg_8_Add_Altivec_C, H_Pass_Avrg_Up_8_Add_Altivec_C,
338            V_Pass_8_Add_Altivec_C, V_Pass_Avrg_8_Add_Altivec_C, V_Pass_Avrg_Up_8_Add_Altivec_C
339    };
340    
341    #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    
# Line 294  Line 396 
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
# Line 301  Line 407 
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];
# Line 319  Line 443 
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)

Legend:
Removed from v.1530  
changed lines
  Added in v.1586

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4