--- trunk/xvidcore/src/xvid.c 2009/06/02 13:06:54 1873 +++ trunk/xvidcore/src/xvid.c 2009/06/05 07:58:41 1874 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: xvid.c,v 1.81 2009-06-02 13:06:49 Isibaar Exp $ + * $Id: xvid.c,v 1.82 2009-06-05 07:58:41 Isibaar Exp $ * ****************************************************************************/ @@ -43,6 +43,11 @@ #endif #endif +#if defined(__amigaos4__) +#include +#include +#endif + #include "xvid.h" #include "decoder.h" #include "encoder.h" @@ -69,7 +74,7 @@ #if (defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)) && defined(_MSC_VER) # include -#elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || defined(ARCH_IS_PPC) +#elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || (defined(ARCH_IS_PPC) && !defined(__amigaos4__)) # include # include @@ -82,7 +87,6 @@ } #endif - /* * Calls the funcptr, and returns whether SIGILL (illegal instruction) was * signalled @@ -105,7 +109,7 @@ } return(0); } -#elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || defined(ARCH_IS_PPC) +#elif defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) || (defined(ARCH_IS_PPC) && !defined(__amigaos4__)) static int sigill_check(void (*func)()) { @@ -157,9 +161,19 @@ #endif #if defined(ARCH_IS_PPC) +#if defined(__amigaos4__) + { + uint32_t vector_unit = VECTORTYPE_NONE; + IExec->GetCPUInfoTags(GCIT_VectorUnit, &vector_unit, TAG_END); + if (vector_unit == VECTORTYPE_ALTIVEC) { + cpu_flags |= XVID_CPU_ALTIVEC; + } + } +#else if (!sigill_check(altivec_trigger)) cpu_flags |= XVID_CPU_ALTIVEC; #endif +#endif return cpu_flags; } @@ -707,6 +721,14 @@ info -> num_threads = 1; } +#elif defined(__amigaos4__) + + { + uint32_t num_threads = 1; + IExec->GetCPUInfoTags(GCIT_NumberOfCPUs, &num_threads, TAG_END); + info->num_threads = num_threads; + } + #endif return 0;