| Index: source/libvpx/vp9/common/vp9_thread.h
|
| diff --git a/source/libvpx/vp9/common/vp9_thread.h b/source/libvpx/vp9/common/vp9_thread.h
|
| index 864579c03c3cb3934b0d15f956c9767e3d6836d4..12848fedeff0624b91b81a489f7bfcec31492829 100644
|
| --- a/source/libvpx/vp9/common/vp9_thread.h
|
| +++ b/source/libvpx/vp9/common/vp9_thread.h
|
| @@ -22,9 +22,13 @@
|
| extern "C" {
|
| #endif
|
|
|
| +// Set maximum decode threads to be 8 due to the limit of frame buffers
|
| +// and not enough semaphores in the emulation layer on windows.
|
| +#define MAX_DECODE_THREADS 8
|
| +
|
| #if CONFIG_MULTITHREAD
|
|
|
| -#if defined(_WIN32)
|
| +#if defined(_WIN32) && !HAVE_PTHREAD_H
|
| #include <errno.h> // NOLINT
|
| #include <process.h> // NOLINT
|
| #include <windows.h> // NOLINT
|
| @@ -103,8 +107,8 @@ static INLINE int pthread_cond_destroy(pthread_cond_t *const condition) {
|
| static INLINE int pthread_cond_init(pthread_cond_t *const condition,
|
| void* cond_attr) {
|
| (void)cond_attr;
|
| - condition->waiting_sem_ = CreateSemaphore(NULL, 0, 1, NULL);
|
| - condition->received_sem_ = CreateSemaphore(NULL, 0, 1, NULL);
|
| + condition->waiting_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
|
| + condition->received_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
|
| condition->signal_event_ = CreateEvent(NULL, FALSE, FALSE, NULL);
|
| if (condition->waiting_sem_ == NULL ||
|
| condition->received_sem_ == NULL ||
|
|
|