[go: nahoru, domu]

Add runtime tunables based on finch.

This CL introduces media::Tuneable, which creates a tuneable parameter
based on a finch field trial parameter.  It caches the value to avoid
redundant string conversions, and also has handy helpers for types
that aren't supported by field trial params (base::TimeDelta).

Change-Id: I8b1a6ec3ab0d7f5e36f8ebd496ae2c44e8cd414b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2164227
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792391}
diff --git a/media/renderers/renderer_impl.h b/media/renderers/renderer_impl.h
index f6603d3..ae226a7d 100644
--- a/media/renderers/renderer_impl.h
+++ b/media/renderers/renderer_impl.h
@@ -24,6 +24,7 @@
 #include "media/base/media_export.h"
 #include "media/base/pipeline_status.h"
 #include "media/base/renderer.h"
+#include "media/base/tuneable.h"
 #include "media/base/video_decoder_config.h"
 #include "media/base/waiting.h"
 #include "ui/gfx/geometry/size.h"
@@ -78,7 +79,7 @@
     time_source_ = time_source;
   }
   void set_video_underflow_threshold_for_testing(base::TimeDelta threshold) {
-    video_underflow_threshold_ = threshold;
+    video_underflow_threshold_.set_for_testing(threshold);
   }
 
  private:
@@ -252,7 +253,10 @@
 
   // The amount of time to wait before declaring underflow if the video renderer
   // runs out of data but the audio renderer still has enough.
-  base::TimeDelta video_underflow_threshold_;
+  Tuneable<base::TimeDelta> video_underflow_threshold_ = {
+      "MediaVideoUnderflowThreshold", base::TimeDelta::FromMilliseconds(1000),
+      base::TimeDelta::FromMilliseconds(3000),
+      base::TimeDelta::FromMilliseconds(8000)};
 
   // Lock used to protect access to the |restarting_audio_| flag and
   // |restarting_audio_time_|.