Commit 1cdb5439 authored by hkuang's avatar hkuang Committed by Gerrit Code Review
Browse files

Merge "Set the maximum decode threads to be 8."

parents 07eb8c8d dd88f482
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
extern "C" { extern "C" {
#endif #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 CONFIG_MULTITHREAD
#if defined(_WIN32) #if defined(_WIN32)
...@@ -103,8 +107,8 @@ static INLINE int pthread_cond_destroy(pthread_cond_t *const condition) { ...@@ -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, static INLINE int pthread_cond_init(pthread_cond_t *const condition,
void* cond_attr) { void* cond_attr) {
(void)cond_attr; (void)cond_attr;
condition->waiting_sem_ = CreateSemaphore(NULL, 0, 1, NULL); condition->waiting_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
condition->received_sem_ = CreateSemaphore(NULL, 0, 1, NULL); condition->received_sem_ = CreateSemaphore(NULL, 0, MAX_DECODE_THREADS, NULL);
condition->signal_event_ = CreateEvent(NULL, FALSE, FALSE, NULL); condition->signal_event_ = CreateEvent(NULL, FALSE, FALSE, NULL);
if (condition->waiting_sem_ == NULL || if (condition->waiting_sem_ == NULL ||
condition->received_sem_ == NULL || condition->received_sem_ == NULL ||
......
...@@ -363,6 +363,8 @@ static vpx_codec_err_t init_decoder(vpx_codec_alg_priv_t *ctx) { ...@@ -363,6 +363,8 @@ static vpx_codec_err_t init_decoder(vpx_codec_alg_priv_t *ctx) {
ctx->num_cache_frames = 0; ctx->num_cache_frames = 0;
ctx->num_frame_workers = ctx->num_frame_workers =
(ctx->frame_parallel_decode == 1) ? ctx->cfg.threads: 1; (ctx->frame_parallel_decode == 1) ? ctx->cfg.threads: 1;
if (ctx->num_frame_workers > MAX_DECODE_THREADS)
ctx->num_frame_workers = MAX_DECODE_THREADS;
ctx->available_threads = ctx->num_frame_workers; ctx->available_threads = ctx->num_frame_workers;
ctx->flushed = 0; ctx->flushed = 0;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment