diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c index 98c50abe3a..80577ec9c4 100644 --- a/libavcodec/frame_thread_encoder.c +++ b/libavcodec/frame_thread_encoder.c @@ -126,7 +126,7 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){ return 0; if(!avctx->thread_count) { - avctx->thread_count = ff_get_logical_cpus(avctx); + avctx->thread_count = av_cpu_count(); avctx->thread_count = FFMIN(avctx->thread_count, MAX_THREADS); } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 4962f064e1..754d062970 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -207,8 +207,6 @@ int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame); int ff_thread_can_start_frame(AVCodecContext *avctx); -int ff_get_logical_cpus(AVCodecContext *avctx); - int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx); /** diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c index 41d6d624fc..2433880323 100644 --- a/libavcodec/pthread.c +++ b/libavcodec/pthread.c @@ -146,15 +146,6 @@ typedef struct FrameThreadContext { * limit the number of threads to 16 for automatic detection */ #define MAX_AUTO_THREADS 16 -int ff_get_logical_cpus(AVCodecContext *avctx) -{ - int nb_cpus = av_cpu_count(); - if (avctx->height) - nb_cpus = FFMIN(nb_cpus, (avctx->height+15)/16); - - return nb_cpus; -} - static void* attribute_align_arg worker(void *v) { AVCodecContext *avctx = v; @@ -265,7 +256,9 @@ static int thread_init(AVCodecContext *avctx) int thread_count = avctx->thread_count; if (!thread_count) { - int nb_cpus = ff_get_logical_cpus(avctx); + int nb_cpus = av_cpu_count(); + if (avctx->height) + nb_cpus = FFMIN(nb_cpus, (avctx->height+15)/16); // use number of cores + 1 as thread count if there is more than one if (nb_cpus > 1) thread_count = avctx->thread_count = FFMIN(nb_cpus + 1, MAX_AUTO_THREADS);