From: B. <rb...@in...> - 2002-03-26 05:15:11
|
Hi there. I'm sometimes using a PPC to see some videos and I once tried to deinterlace it, but xine exited. I was skimming the code in deinterlace.c and saw that if MMX is not present in the CPU, then xine calls abort_mmx_missing(). Here is a sample code: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - case DEINTERLACE_BOB: if( check_for_mmx() ) deinterlace_bob_yuv_mmx(pdst,psrc,width,height); else /* FIXME: provide an alternative? */ abort_mmx_missing(); break; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Couldn't xine just call xine_fast_memcpy(pdst,psrc[0],width*height) instead of abort_mmx_missing(), as it does in case of no deinterlacing? Another solution could be to just conditionally compile with abort_mmx_missing() if we are compiling in x86 (for older CPUs), but with xine_fast_memcpy(...) if we are compiling in other architectures. Of course, even in the case of older x86s, xine could just ignore the fact that the CPU doesn't have MMX, perhaps warning the user about this (using a static variable to tell if it is the first time the warning is displayed or not). Of course #2, the better, long term solution would be to have a function coded for each platform, with a fallback solution written in C. Well, I could help with the latter part if I understood what the algorithms written in MMX did. :-) []s, Roger... --=20 =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D Rog=E9rio Brito - rb...@in... - http://www.ime.usp.br/~rbrito/ =3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D= -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D |