32 |
* |
* |
33 |
* History: |
* History: |
34 |
* |
* |
35 |
|
* 17.03.2002 Added interpolate8x8_halfpel_hv_xmm |
36 |
* 22.12.2001 API change: added xvid_init() - Isibaar |
* 22.12.2001 API change: added xvid_init() - Isibaar |
37 |
* 16.12.2001 inital version; (c)2001 peter ross <pross@cs.rmit.edu.au> |
* 16.12.2001 inital version; (c)2001 peter ross <pross@cs.rmit.edu.au> |
38 |
* |
* |
53 |
#include "motion/sad.h" |
#include "motion/sad.h" |
54 |
#include "utils/emms.h" |
#include "utils/emms.h" |
55 |
#include "utils/timer.h" |
#include "utils/timer.h" |
56 |
|
#include "bitstream/mbcoding.h" |
57 |
|
|
58 |
int xvid_init(void *handle, int opt, void *param1, void *param2) |
int xvid_init(void *handle, int opt, void *param1, void *param2) |
59 |
{ |
{ |
77 |
|
|
78 |
// initialize the function pointers |
// initialize the function pointers |
79 |
idct_int32_init(); |
idct_int32_init(); |
80 |
|
init_vlc_tables(); |
|
init_timer(); |
|
81 |
|
|
82 |
fdct = fdct_int32; |
fdct = fdct_int32; |
83 |
idct = idct_int32; |
idct = idct_int32; |
176 |
idct = idct_xmm; |
idct = idct_xmm; |
177 |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_xmm; |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_xmm; |
178 |
interpolate8x8_halfpel_v = interpolate8x8_halfpel_v_xmm; |
interpolate8x8_halfpel_v = interpolate8x8_halfpel_v_xmm; |
179 |
|
interpolate8x8_halfpel_hv = interpolate8x8_halfpel_hv_xmm; |
180 |
yuv_to_yv12 = yuv_to_yv12_xmm; |
yuv_to_yv12 = yuv_to_yv12_xmm; |
181 |
|
|
182 |
sad16 = sad16_xmm; |
sad16 = sad16_xmm; |
188 |
if((cpu_flags & XVID_CPU_3DNOW) > 0) { |
if((cpu_flags & XVID_CPU_3DNOW) > 0) { |
189 |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_3dn; |
interpolate8x8_halfpel_h = interpolate8x8_halfpel_h_3dn; |
190 |
interpolate8x8_halfpel_v = interpolate8x8_halfpel_v_3dn; |
interpolate8x8_halfpel_v = interpolate8x8_halfpel_v_3dn; |
191 |
|
interpolate8x8_halfpel_hv = interpolate8x8_halfpel_hv_3dn; |
192 |
} |
} |
193 |
|
|
194 |
#endif |
#endif |
195 |
|
#ifdef ARCH_PPC |
196 |
|
#ifdef ARCH_PPC_ALTIVEC |
197 |
|
calc_cbp = calc_cbp_altivec; |
198 |
|
fdct = fdct_altivec; |
199 |
|
idct = idct_altivec; |
200 |
|
sad16 = sad16_altivec; |
201 |
|
sad8 = sad8_altivec; |
202 |
|
dev16 = dev16_altivec; |
203 |
|
#else |
204 |
|
calc_cbp = calc_cbp_ppc; |
205 |
|
#endif |
206 |
|
#endif |
207 |
|
|
208 |
// API version |
// API version |
209 |
init_param->api_version = API_VERSION; |
init_param->api_version = API_VERSION; |
211 |
// something clever has to be done for this |
// something clever has to be done for this |
212 |
init_param->core_build = 1000; |
init_param->core_build = 1000; |
213 |
|
|
|
init_timer(); |
|
|
|
|
214 |
return XVID_ERR_OK; |
return XVID_ERR_OK; |
215 |
} |
} |
216 |
|
|