*** src/xvid.c.old 2009-06-03 11:38:50 --- src/xvid.c 2009-06-03 13:10:25 *************** *** 32,37 **** --- 32,42 ---- #include #endif + #if defined(__amigaos4__) + #include + #include + #endif + #include "xvid.h" #include "decoder.h" #include "encoder.h" *************** *** 56,61 **** --- 61,67 ---- unsigned int xvid_debug = 0; /* xvid debug mask */ #endif + #if !defined(__amigaos4__) #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) *************** *** 70,75 **** --- 76,82 ---- longjmp(mark, 1); } #endif + #endif /* *************** *** 81,86 **** --- 88,94 ---- * 0 : SIGILL was *not* signalled * 1 : SIGILL was signalled */ + #if !defined(__amigaos4__) #if (defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)) && defined(_MSC_VER) static int sigill_check(void (*func)()) *************** *** 127,132 **** --- 135,141 ---- return(jmpret); } #endif + #endif /* detect cpu flags */ *************** *** 136,141 **** --- 145,160 ---- /* enable native assembly optimizations by default */ unsigned int cpu_flags = XVID_CPU_ASM; + #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 defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) cpu_flags |= check_cpu_features(); if ((cpu_flags & XVID_CPU_SSE) && sigill_check(sse_os_trigger)) *************** *** 150,155 **** --- 169,176 ---- cpu_flags |= XVID_CPU_ALTIVEC; #endif + #endif + return cpu_flags; } *************** *** 677,682 **** --- 698,711 ---- info->num_threads = siSysInfo.dwNumberOfProcessors; /* number of _logical_ cores */ } + #elif defined(__amigaos4__) + + { + uint32_t num_threads = 1; + IExec->GetCPUInfoTags(GCIT_NumberOfCPUs, &num_threads, TAG_END); + info->num_threads = num_threads; + } + #else info->num_threads = sysconf(_SC_NPROCESSORS_CONF);