Commit 309c3a0e authored by James Almer's avatar James Almer

avcodec/libaom: fix setting amount of threads

The libaom doxy says that a value of 0 for the threads fields is
equivalent to a value of 1, whereas for avctx->thread_count it means
the maximum amount of threads possible for the host system.

Use av_cpu_count() to get the correct thread count when auto threads
is requested.
Reviewed-by: 's avatarJan Ekström <jeebjp@gmail.com>
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 776cdd1d
...@@ -43,7 +43,7 @@ static av_cold int aom_init(AVCodecContext *avctx, ...@@ -43,7 +43,7 @@ static av_cold int aom_init(AVCodecContext *avctx,
AV1DecodeContext *ctx = avctx->priv_data; AV1DecodeContext *ctx = avctx->priv_data;
struct aom_codec_dec_cfg deccfg = { struct aom_codec_dec_cfg deccfg = {
/* token partitions+1 would be a decent choice */ /* token partitions+1 would be a decent choice */
.threads = FFMIN(avctx->thread_count, 16) .threads = FFMIN(avctx->thread_count ? avctx->thread_count : av_cpu_count(), 16)
}; };
av_log(avctx, AV_LOG_INFO, "%s\n", aom_codec_version_str()); av_log(avctx, AV_LOG_INFO, "%s\n", aom_codec_version_str());
......
...@@ -319,7 +319,7 @@ static av_cold int aom_init(AVCodecContext *avctx, ...@@ -319,7 +319,7 @@ static av_cold int aom_init(AVCodecContext *avctx,
enccfg.g_h = avctx->height; enccfg.g_h = avctx->height;
enccfg.g_timebase.num = avctx->time_base.num; enccfg.g_timebase.num = avctx->time_base.num;
enccfg.g_timebase.den = avctx->time_base.den; enccfg.g_timebase.den = avctx->time_base.den;
enccfg.g_threads = avctx->thread_count; enccfg.g_threads = avctx->thread_count ? avctx->thread_count : av_cpu_count();
if (ctx->lag_in_frames >= 0) if (ctx->lag_in_frames >= 0)
enccfg.g_lag_in_frames = ctx->lag_in_frames; enccfg.g_lag_in_frames = ctx->lag_in_frames;
......
Markdown is supported
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