Mercurial > libavcodec.hg
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 */ |