comparison mlib/dsputil_mlib.c @ 730:b24ea84b23e2 libavcodec

trying to fix the non-x86 IDCTs (untested)
author michaelni
date Sun, 06 Oct 2002 15:27:01 +0000
parents 8be211ca9db9
children b4bf95260ffe
comparison
equal deleted inserted replaced
729:fb7d96d818cf 730:b24ea84b23e2
110 static void add_pixels_clamped_mlib(const DCTELEM *block, UINT8 *pixels, int line_size) 110 static void add_pixels_clamped_mlib(const DCTELEM *block, UINT8 *pixels, int line_size)
111 { 111 {
112 mlib_VideoAddBlock_U8_S16(pixels, (mlib_s16 *)block, line_size); 112 mlib_VideoAddBlock_U8_S16(pixels, (mlib_s16 *)block, line_size);
113 } 113 }
114 114
115 115 /* XXX: those functions should be suppressed ASAP when all IDCTs are
116 void ff_idct_mlib(DCTELEM *data) 116 converted */
117 static void mlib_idct_put(UINT8 *dest, int line_size, DCTELEM *block)
117 { 118 {
118 mlib_VideoIDCT8x8_S16_S16 (data, data); 119 mlib_VideoIDCT8x8_S16_S16 (data, data);
120 put_pixels_clamped(block, dest, line_size);
119 } 121 }
120 122 static void mlib_idct_add(UINT8 *dest, int line_size, DCTELEM *block)
123 {
124 mlib_VideoIDCT8x8_S16_S16 (data, data);
125 add_pixels_clamped(block, dest, line_size);
126 }
121 127
122 void ff_fdct_mlib(DCTELEM *data) 128 void ff_fdct_mlib(DCTELEM *data)
123 { 129 {
124 mlib_VideoDCT8x8_S16_S16 (data, data); 130 mlib_VideoDCT8x8_S16_S16 (data, data);
125 } 131 }
126 132
127 void dsputil_init_mlib(void) 133 void dsputil_init_mlib(void)
128 { 134 {
129 ff_idct = ff_idct_mlib;
130
131 put_pixels_tab[1][0] = put_pixels_mlib; 135 put_pixels_tab[1][0] = put_pixels_mlib;
132 put_pixels_tab[1][1] = put_pixels_x2_mlib; 136 put_pixels_tab[1][1] = put_pixels_x2_mlib;
133 put_pixels_tab[1][2] = put_pixels_y2_mlib; 137 put_pixels_tab[1][2] = put_pixels_y2_mlib;
134 put_pixels_tab[1][3] = put_pixels_xy2_mlib; 138 put_pixels_tab[1][3] = put_pixels_xy2_mlib;
135 139
143 add_pixels_clamped = add_pixels_clamped_mlib; 147 add_pixels_clamped = add_pixels_clamped_mlib;
144 } 148 }
145 149
146 void MPV_common_init_mlib(MpegEncContext *s) 150 void MPV_common_init_mlib(MpegEncContext *s)
147 { 151 {
152 int i;
153 const int idct_algo= s->avctx->idct_algo;
154
148 if(s->avctx->dct_algo==FF_DCT_AUTO || s->avctx->dct_algo==FF_DCT_MLIB){ 155 if(s->avctx->dct_algo==FF_DCT_AUTO || s->avctx->dct_algo==FF_DCT_MLIB){
149 s->fdct = ff_fdct_mlib; 156 s->fdct = ff_fdct_mlib;
150 } 157 }
158
159 if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_MLIB){
160 s->idct_put= mlib_idct_put;
161 s->idct_add= mlib_idct_add;
162 for(i=0; i<64; i++)
163 s->idct_permutation[i]= i;
164 }
165
151 } 166 }