1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #include "vpx_config.h" 12*fb1b10abSAndroid Build Coastguard Worker #include "vp8_rtcd.h" 13*fb1b10abSAndroid Build Coastguard Worker #if VPX_ARCH_ARM 14*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/arm.h" 15*fb1b10abSAndroid Build Coastguard Worker #elif VPX_ARCH_X86 || VPX_ARCH_X86_64 16*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/x86.h" 17*fb1b10abSAndroid Build Coastguard Worker #elif VPX_ARCH_PPC 18*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/ppc.h" 19*fb1b10abSAndroid Build Coastguard Worker #elif VPX_ARCH_MIPS 20*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/mips.h" 21*fb1b10abSAndroid Build Coastguard Worker #elif VPX_ARCH_LOONGARCH 22*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/loongarch.h" 23*fb1b10abSAndroid Build Coastguard Worker #endif 24*fb1b10abSAndroid Build Coastguard Worker #include "vp8/common/onyxc_int.h" 25*fb1b10abSAndroid Build Coastguard Worker #include "vp8/common/systemdependent.h" 26*fb1b10abSAndroid Build Coastguard Worker 27*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_MULTITHREAD 28*fb1b10abSAndroid Build Coastguard Worker #if HAVE_UNISTD_H 29*fb1b10abSAndroid Build Coastguard Worker #include <unistd.h> 30*fb1b10abSAndroid Build Coastguard Worker #elif defined(_WIN32) 31*fb1b10abSAndroid Build Coastguard Worker #include <windows.h> 32*fb1b10abSAndroid Build Coastguard Worker typedef void(WINAPI *PGNSI)(LPSYSTEM_INFO); 33*fb1b10abSAndroid Build Coastguard Worker #endif 34*fb1b10abSAndroid Build Coastguard Worker #endif 35*fb1b10abSAndroid Build Coastguard Worker 36*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_MULTITHREAD get_cpu_count(void)37*fb1b10abSAndroid Build Coastguard Workerstatic int get_cpu_count(void) { 38*fb1b10abSAndroid Build Coastguard Worker int core_count = 16; 39*fb1b10abSAndroid Build Coastguard Worker 40*fb1b10abSAndroid Build Coastguard Worker #if HAVE_UNISTD_H 41*fb1b10abSAndroid Build Coastguard Worker #if defined(_SC_NPROCESSORS_ONLN) 42*fb1b10abSAndroid Build Coastguard Worker core_count = (int)sysconf(_SC_NPROCESSORS_ONLN); 43*fb1b10abSAndroid Build Coastguard Worker #elif defined(_SC_NPROC_ONLN) 44*fb1b10abSAndroid Build Coastguard Worker core_count = (int)sysconf(_SC_NPROC_ONLN); 45*fb1b10abSAndroid Build Coastguard Worker #endif 46*fb1b10abSAndroid Build Coastguard Worker #elif defined(_WIN32) 47*fb1b10abSAndroid Build Coastguard Worker { 48*fb1b10abSAndroid Build Coastguard Worker #if _WIN32_WINNT < 0x0501 49*fb1b10abSAndroid Build Coastguard Worker #error _WIN32_WINNT must target Windows XP or newer. 50*fb1b10abSAndroid Build Coastguard Worker #endif 51*fb1b10abSAndroid Build Coastguard Worker SYSTEM_INFO sysinfo; 52*fb1b10abSAndroid Build Coastguard Worker GetNativeSystemInfo(&sysinfo); 53*fb1b10abSAndroid Build Coastguard Worker core_count = (int)sysinfo.dwNumberOfProcessors; 54*fb1b10abSAndroid Build Coastguard Worker } 55*fb1b10abSAndroid Build Coastguard Worker #else 56*fb1b10abSAndroid Build Coastguard Worker /* other platforms */ 57*fb1b10abSAndroid Build Coastguard Worker #endif 58*fb1b10abSAndroid Build Coastguard Worker 59*fb1b10abSAndroid Build Coastguard Worker return core_count > 0 ? core_count : 1; 60*fb1b10abSAndroid Build Coastguard Worker } 61*fb1b10abSAndroid Build Coastguard Worker #endif 62*fb1b10abSAndroid Build Coastguard Worker vp8_machine_specific_config(VP8_COMMON * ctx)63*fb1b10abSAndroid Build Coastguard Workervoid vp8_machine_specific_config(VP8_COMMON *ctx) { 64*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_MULTITHREAD 65*fb1b10abSAndroid Build Coastguard Worker ctx->processor_core_count = get_cpu_count(); 66*fb1b10abSAndroid Build Coastguard Worker #else 67*fb1b10abSAndroid Build Coastguard Worker (void)ctx; 68*fb1b10abSAndroid Build Coastguard Worker #endif /* CONFIG_MULTITHREAD */ 69*fb1b10abSAndroid Build Coastguard Worker } 70