comparison dsputil.h @ 706:e65798d228ea libavcodec

idct permutation cleanup, idct can be selected per context now fixing some threadunsafe code
author michaelni
date Sun, 29 Sep 2002 22:44:22 +0000
parents efcbfbd18864
children 8e1f0939d15d
comparison
equal deleted inserted replaced
705:107a56aa74f5 706:e65798d228ea
32 void j_rev_dct (DCTELEM *data); 32 void j_rev_dct (DCTELEM *data);
33 33
34 void ff_fdct_mmx(DCTELEM *block); 34 void ff_fdct_mmx(DCTELEM *block);
35 35
36 /* encoding scans */ 36 /* encoding scans */
37 extern UINT8 ff_alternate_horizontal_scan[64]; 37 extern const UINT8 ff_alternate_horizontal_scan[64];
38 extern UINT8 ff_alternate_vertical_scan[64]; 38 extern const UINT8 ff_alternate_vertical_scan[64];
39 extern UINT8 zigzag_direct[64]; 39 extern const UINT8 ff_zigzag_direct[64];
40
41 /* permutation table */
42 extern UINT8 permutation[64];
43 40
44 /* pixel operations */ 41 /* pixel operations */
45 #define MAX_NEG_CROP 384 42 #define MAX_NEG_CROP 384
46 43
47 /* temporary */ 44 /* temporary */
59 56
60 !future video codecs might need functions with less strict alignment 57 !future video codecs might need functions with less strict alignment
61 */ 58 */
62 59
63 /* pixel ops : interface with DCT */ 60 /* pixel ops : interface with DCT */
64 extern void (*ff_idct)(DCTELEM *block/*align 16*/);
65 extern void (*ff_idct_put)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);
66 extern void (*ff_idct_add)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);
67 extern void (*get_pixels)(DCTELEM *block/*align 16*/, const UINT8 *pixels/*align 8*/, int line_size); 61 extern void (*get_pixels)(DCTELEM *block/*align 16*/, const UINT8 *pixels/*align 8*/, int line_size);
68 extern void (*diff_pixels)(DCTELEM *block/*align 16*/, const UINT8 *s1/*align 8*/, const UINT8 *s2/*align 8*/, int stride); 62 extern void (*diff_pixels)(DCTELEM *block/*align 16*/, const UINT8 *s1/*align 8*/, const UINT8 *s2/*align 8*/, int stride);
69 extern void (*put_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size); 63 extern void (*put_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size);
70 extern void (*add_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size); 64 extern void (*add_pixels_clamped)(const DCTELEM *block/*align 16*/, UINT8 *pixels/*align 8*/, int line_size);
71 extern void (*gmc1)(UINT8 *dst/*align 8*/, UINT8 *src/*align 1*/, int srcStride, int h, int x16, int y16, int rounder); 65 extern void (*gmc1)(UINT8 *dst/*align 8*/, UINT8 *src/*align 1*/, int srcStride, int h, int x16, int y16, int rounder);
117 int pix_abs16x16_c(UINT8 *blk1, UINT8 *blk2, int lx); 111 int pix_abs16x16_c(UINT8 *blk1, UINT8 *blk2, int lx);
118 int pix_abs16x16_x2_c(UINT8 *blk1, UINT8 *blk2, int lx); 112 int pix_abs16x16_x2_c(UINT8 *blk1, UINT8 *blk2, int lx);
119 int pix_abs16x16_y2_c(UINT8 *blk1, UINT8 *blk2, int lx); 113 int pix_abs16x16_y2_c(UINT8 *blk1, UINT8 *blk2, int lx);
120 int pix_abs16x16_xy2_c(UINT8 *blk1, UINT8 *blk2, int lx); 114 int pix_abs16x16_xy2_c(UINT8 *blk1, UINT8 *blk2, int lx);
121 115
122 static inline int block_permute_op(int j) 116 void block_permute(INT16 *block, UINT8 *permutation);
123 {
124 return permutation[j];
125 }
126
127 void block_permute(INT16 *block);
128 117
129 #if defined(HAVE_MMX) 118 #if defined(HAVE_MMX)
130 119
131 #define MM_MMX 0x0001 /* standard MMX */ 120 #define MM_MMX 0x0001 /* standard MMX */
132 #define MM_3DNOW 0x0004 /* AMD 3DNOW */ 121 #define MM_3DNOW 0x0004 /* AMD 3DNOW */