Commit 6f22a41e authored by Dale Curtis's avatar Dale Curtis Committed by Commit Bot

Prevent overflow when negative delay values are encountered.

Similar to 90a508cd, these values may
occur in the wild and should be avoided.

R=tguilbert

Change-Id: Id30a7175649c399ddb3f6c78e29c9beac55c00ae
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1913600
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Thomas Guilbert <tguilbert@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: default avatarThomas Guilbert <tguilbert@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714762}
parent 27f03166
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "media/base/audio_renderer_mixer_input.h" #include "media/base/audio_renderer_mixer_input.h"
#include "media/base/audio_timestamp_helper.h" #include "media/base/audio_timestamp_helper.h"
...@@ -169,6 +170,11 @@ int AudioRendererMixer::Render(base::TimeDelta delay, ...@@ -169,6 +170,11 @@ int AudioRendererMixer::Render(base::TimeDelta delay,
playing_ = false; playing_ = false;
} }
// Since AudioConverter uses uint32_t for delay calculations, we must drop
// negative delay values (which are incorrect anyways).
if (delay < base::TimeDelta())
delay = base::TimeDelta();
uint32_t frames_delayed = uint32_t frames_delayed =
AudioTimestampHelper::TimeToFrames(delay, output_params_.sample_rate()); AudioTimestampHelper::TimeToFrames(delay, output_params_.sample_rate());
master_converter_.ConvertWithDelay(frames_delayed, audio_bus); master_converter_.ConvertWithDelay(frames_delayed, audio_bus);
......
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