mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
libde265: W32 thread count support
This code is imported from GLib g_get_num_processors(). This function was added in 2.36 but we depend on 2.32. https://bugzilla.gnome.org/show_bug.cgi?id=748495
This commit is contained in:
parent
283fc200c6
commit
0a95a4ea24
1 changed files with 27 additions and 0 deletions
|
@ -42,6 +42,9 @@
|
|||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#ifdef G_OS_WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include "libde265-dec.h"
|
||||
|
||||
|
@ -378,6 +381,30 @@ gst_libde265_dec_start (GstVideoDecoder * decoder)
|
|||
threads = sysconf (_SC_NPROC_ONLN);
|
||||
#elif defined(_SC_NPROCESSORS_ONLN)
|
||||
threads = sysconf (_SC_NPROCESSORS_ONLN);
|
||||
#elif defined(G_OS_WIN32)
|
||||
/* FIXME 2.0, use g_get_num_processors() */
|
||||
SYSTEM_INFO sysinfo;
|
||||
DWORD_PTR process_cpus;
|
||||
DWORD_PTR system_cpus;
|
||||
|
||||
/* This *never* fails, but doesn't take CPU affinity into account */
|
||||
GetSystemInfo (&sysinfo);
|
||||
threads = (int) sysinfo.dwNumberOfProcessors;
|
||||
|
||||
/* This *can* fail, but produces correct results if affinity mask is used,
|
||||
* unlike the simpler code above.
|
||||
*/
|
||||
if (GetProcessAffinityMask (GetCurrentProcess (),
|
||||
&process_cpus, &system_cpus)) {
|
||||
unsigned int count;
|
||||
|
||||
for (count = 0; process_cpus != 0; process_cpus >>= 1)
|
||||
if (process_cpus & 1)
|
||||
count++;
|
||||
|
||||
if (count > 0)
|
||||
threads = (int) count;
|
||||
}
|
||||
#else
|
||||
#warning "Don't know how to get number of CPU cores, will use the default thread count"
|
||||
threads = DEFAULT_THREAD_COUNT;
|
||||
|
|
Loading…
Reference in a new issue