summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-05 12:55:36 +0100
committerwm4 <wm4@nowhere>2015-03-05 12:55:54 +0100
commit9657e5a2caef74de799fab0b9920284660865da9 (patch)
treee8a56a103f04798b2cf84d456b19e77a3deaa1f3 /common
parent4e3f8ccb9d24f2f0940e93d1a8582e562265dede (diff)
downloadmpv-9657e5a2caef74de799fab0b9920284660865da9.tar.bz2
mpv-9657e5a2caef74de799fab0b9920284660865da9.tar.xz
vd_lavc: request 1 more threads than CPU cores
This duplicates the logic which FFmpeg's libavcodec uses. The effects are unknown, though it's somewhat clear that a single thread doesn't necessarily saturate a single CPU. (Eventually we should just let FFmpeg auto-init the thread count, but for now I prefer it this way, so e.g. verbose mode will print the thread count.)
Diffstat (limited to 'common')
-rw-r--r--common/av_common.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/common/av_common.c b/common/av_common.c
index bc2845d4d4..05c694702d 100644
--- a/common/av_common.c
+++ b/common/av_common.c
@@ -135,6 +135,8 @@ void mp_set_avcodec_threads(struct mp_log *l, AVCodecContext *avctx, int threads
threads = 1;
} else {
mp_verbose(l, "Detected %d logical cores.\n", threads);
+ if (threads > 1)
+ threads += 1; // extra thread for better load balancing
}
// Apparently some libavcodec versions have or had trouble with more
// than 16 threads, and/or print a warning when using > 16.