| Index: source/libvpx/vp8/common/generic/systemdependent.c | 
| =================================================================== | 
| --- source/libvpx/vp8/common/generic/systemdependent.c	(revision 96967) | 
| +++ source/libvpx/vp8/common/generic/systemdependent.c	(working copy) | 
| @@ -17,9 +17,54 @@ | 
| #include "vp8/common/idct.h" | 
| #include "vp8/common/onyxc_int.h" | 
|  | 
| +#if CONFIG_MULTITHREAD | 
| +#if HAVE_UNISTD_H | 
| +#include <unistd.h> | 
| +#elif defined(_WIN32) | 
| +#include <windows.h> | 
| +typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO); | 
| +#endif | 
| +#endif | 
| + | 
| extern void vp8_arch_x86_common_init(VP8_COMMON *ctx); | 
| extern void vp8_arch_arm_common_init(VP8_COMMON *ctx); | 
|  | 
| +#if CONFIG_MULTITHREAD | 
| +static int get_cpu_count() | 
| +{ | 
| +    int core_count = 16; | 
| + | 
| +#if HAVE_UNISTD_H | 
| +#if defined(_SC_NPROCESSORS_ONLN) | 
| +    core_count = sysconf(_SC_NPROCESSORS_ONLN); | 
| +#elif defined(_SC_NPROC_ONLN) | 
| +    core_count = sysconf(_SC_NPROC_ONLN); | 
| +#endif | 
| +#elif defined(_WIN32) | 
| +    { | 
| +        PGNSI pGNSI; | 
| +        SYSTEM_INFO sysinfo; | 
| + | 
| +        /* Call GetNativeSystemInfo if supported or | 
| +         * GetSystemInfo otherwise. */ | 
| + | 
| +        pGNSI = (PGNSI) GetProcAddress( | 
| +                GetModuleHandle(TEXT("kernel32.dll")), "GetNativeSystemInfo"); | 
| +        if (pGNSI != NULL) | 
| +            pGNSI(&sysinfo); | 
| +        else | 
| +            GetSystemInfo(&sysinfo); | 
| + | 
| +        core_count = sysinfo.dwNumberOfProcessors; | 
| +    } | 
| +#else | 
| +    /* other platforms */ | 
| +#endif | 
| + | 
| +    return core_count > 0 ? core_count : 1; | 
| +} | 
| +#endif | 
| + | 
| void vp8_machine_specific_config(VP8_COMMON *ctx) | 
| { | 
| #if CONFIG_RUNTIME_CPU_DETECT | 
| @@ -43,6 +88,12 @@ | 
| vp8_build_intra_predictors_mby; | 
| rtcd->recon.build_intra_predictors_mby_s = | 
| vp8_build_intra_predictors_mby_s; | 
| +    rtcd->recon.build_intra_predictors_mbuv = | 
| +        vp8_build_intra_predictors_mbuv; | 
| +    rtcd->recon.build_intra_predictors_mbuv_s = | 
| +        vp8_build_intra_predictors_mbuv_s; | 
| +    rtcd->recon.intra4x4_predict = | 
| +        vp8_intra4x4_predict; | 
|  | 
| rtcd->subpix.sixtap16x16   = vp8_sixtap_predict16x16_c; | 
| rtcd->subpix.sixtap8x8     = vp8_sixtap_predict8x8_c; | 
| @@ -57,12 +108,12 @@ | 
| rtcd->loopfilter.normal_b_v  = vp8_loop_filter_bv_c; | 
| rtcd->loopfilter.normal_mb_h = vp8_loop_filter_mbh_c; | 
| rtcd->loopfilter.normal_b_h  = vp8_loop_filter_bh_c; | 
| -    rtcd->loopfilter.simple_mb_v = vp8_loop_filter_mbvs_c; | 
| +    rtcd->loopfilter.simple_mb_v = vp8_loop_filter_simple_vertical_edge_c; | 
| rtcd->loopfilter.simple_b_v  = vp8_loop_filter_bvs_c; | 
| -    rtcd->loopfilter.simple_mb_h = vp8_loop_filter_mbhs_c; | 
| +    rtcd->loopfilter.simple_mb_h = vp8_loop_filter_simple_horizontal_edge_c; | 
| rtcd->loopfilter.simple_b_h  = vp8_loop_filter_bhs_c; | 
|  | 
| -#if CONFIG_POSTPROC || (CONFIG_VP8_ENCODER && CONFIG_PSNR) | 
| +#if CONFIG_POSTPROC || (CONFIG_VP8_ENCODER && CONFIG_INTERNAL_STATS) | 
| rtcd->postproc.down             = vp8_mbpost_proc_down_c; | 
| rtcd->postproc.across           = vp8_mbpost_proc_across_ip_c; | 
| rtcd->postproc.downacross       = vp8_post_proc_down_and_across_c; | 
| @@ -82,4 +133,7 @@ | 
| vp8_arch_arm_common_init(ctx); | 
| #endif | 
|  | 
| +#if CONFIG_MULTITHREAD | 
| +    ctx->processor_core_count = get_cpu_count(); | 
| +#endif /* CONFIG_MULTITHREAD */ | 
| } | 
|  |