Always use at least 2 frame threads with dav1d.
Shows significant performance regression on even low core CrOS devices
otherwise on the following test case:
http://crosvideo2.appspot.com/?codec=av1&resolution=720
ARM 4 cores: 3%->17% dropped frame increase.
Intel Skylake 2 cores: 0.5% -> 3% dropped frame increase.
BUG=954659,957511
TEST=none
TBR=hiroh
Change-Id: I3073ca88548e9183dda5ce4d451c5c802a592213
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1602852
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658233}
diff --git a/media/filters/dav1d_video_decoder.cc b/media/filters/dav1d_video_decoder.cc
index b64d9d0..b533e99 100644
--- a/media/filters/dav1d_video_decoder.cc
+++ b/media/filters/dav1d_video_decoder.cc
@@ -194,10 +194,13 @@
//
// We only want 1 frame thread in low delay mode, since otherwise we'll
// require at least two buffers before the first frame can be output.
+ //
+ // 2 frame threads seems desirable even on low core machines:
+ // https://crbug.com/957511
if (low_delay)
s.n_frame_threads = 1;
else if (s.n_frame_threads > max_threads - s.n_tile_threads)
- s.n_frame_threads = std::max(1, max_threads - s.n_tile_threads);
+ s.n_frame_threads = std::max(2, max_threads - s.n_tile_threads);
// Route dav1d internal logs through Chrome's DLOG system.
s.logger = {nullptr, &LogDav1dMessage};