diff options
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/audio_bus_perftest.cc | 2 | ||||
-rw-r--r-- | media/base/audio_converter_unittest.cc | 2 | ||||
-rw-r--r-- | media/base/audio_hash_unittest.cc | 2 | ||||
-rw-r--r-- | media/base/audio_renderer_mixer.cc | 3 | ||||
-rw-r--r-- | media/base/audio_renderer_mixer.h | 4 | ||||
-rw-r--r-- | media/base/audio_renderer_mixer_input.cc | 2 | ||||
-rw-r--r-- | media/base/audio_renderer_mixer_unittest.cc | 8 | ||||
-rw-r--r-- | media/base/audio_renderer_sink.h | 7 | ||||
-rw-r--r-- | media/base/fake_audio_render_callback.cc | 5 | ||||
-rw-r--r-- | media/base/fake_audio_render_callback.h | 4 | ||||
-rw-r--r-- | media/base/fake_audio_renderer_sink.cc | 5 | ||||
-rw-r--r-- | media/base/fake_audio_renderer_sink.h | 3 |
12 files changed, 29 insertions, 18 deletions
diff --git a/media/base/audio_bus_perftest.cc b/media/base/audio_bus_perftest.cc index 71e8132..c126d99 100644 --- a/media/base/audio_bus_perftest.cc +++ b/media/base/audio_bus_perftest.cc @@ -43,7 +43,7 @@ void RunInterleaveBench(AudioBus* bus, const std::string& trace_name) { TEST(AudioBusPerfTest, Interleave) { scoped_ptr<AudioBus> bus = AudioBus::Create(2, 48000 * 120); FakeAudioRenderCallback callback(0.2); - callback.Render(bus.get(), 0); + callback.Render(bus.get(), 0, 0); RunInterleaveBench<int8>(bus.get(), "int8"); RunInterleaveBench<int16>(bus.get(), "int16"); diff --git a/media/base/audio_converter_unittest.cc b/media/base/audio_converter_unittest.cc index 741027f..d427923 100644 --- a/media/base/audio_converter_unittest.cc +++ b/media/base/audio_converter_unittest.cc @@ -111,7 +111,7 @@ class AudioConverterTest converter_->Convert(audio_bus_.get()); // Render expected audio data. - expected_callback_->Render(expected_audio_bus_.get(), 0); + expected_callback_->Render(expected_audio_bus_.get(), 0, 0); // Zero out unused channels in the expected AudioBus just as AudioConverter // would during channel mixing. diff --git a/media/base/audio_hash_unittest.cc b/media/base/audio_hash_unittest.cc index 1adf5bc..742deed 100644 --- a/media/base/audio_hash_unittest.cc +++ b/media/base/audio_hash_unittest.cc @@ -34,7 +34,7 @@ class AudioHashTest : public testing::Test { // audio data, we need to fill each channel manually. for (int ch = 0; ch < audio_bus->channels(); ++ch) { wrapped_bus->SetChannelData(0, audio_bus->channel(ch)); - fake_callback_.Render(wrapped_bus.get(), 0); + fake_callback_.Render(wrapped_bus.get(), 0, 0); } } diff --git a/media/base/audio_renderer_mixer.cc b/media/base/audio_renderer_mixer.cc index 26171f9..218bb9e 100644 --- a/media/base/audio_renderer_mixer.cc +++ b/media/base/audio_renderer_mixer.cc @@ -117,7 +117,8 @@ OutputDevice* AudioRendererMixer::GetOutputDevice() { } int AudioRendererMixer::Render(AudioBus* audio_bus, - int audio_delay_milliseconds) { + uint32_t audio_delay_milliseconds, + uint32_t frames_skipped) { base::AutoLock auto_lock(lock_); // If there are no mixer inputs and we haven't seen one for a while, pause the diff --git a/media/base/audio_renderer_mixer.h b/media/base/audio_renderer_mixer.h index e8a0f8d..80e9d9b 100644 --- a/media/base/audio_renderer_mixer.h +++ b/media/base/audio_renderer_mixer.h @@ -54,7 +54,9 @@ class MEDIA_EXPORT AudioRendererMixer typedef std::map<int, scoped_ptr<LoopbackAudioConverter>> AudioConvertersMap; // AudioRendererSink::RenderCallback implementation. - int Render(AudioBus* audio_bus, int audio_delay_milliseconds) override; + int Render(AudioBus* audio_bus, + uint32_t audio_delay_milliseconds, + uint32_t frames_skipped) override; void OnRenderError() override; bool is_master_sample_rate(int sample_rate) { diff --git a/media/base/audio_renderer_mixer_input.cc b/media/base/audio_renderer_mixer_input.cc index 539cdf3..d0d38d3 100644 --- a/media/base/audio_renderer_mixer_input.cc +++ b/media/base/audio_renderer_mixer_input.cc @@ -166,7 +166,7 @@ OutputDeviceStatus AudioRendererMixerInput::GetDeviceStatus() { double AudioRendererMixerInput::ProvideInput(AudioBus* audio_bus, base::TimeDelta buffer_delay) { int frames_filled = callback_->Render( - audio_bus, static_cast<int>(buffer_delay.InMillisecondsF() + 0.5)); + audio_bus, static_cast<int>(buffer_delay.InMillisecondsF() + 0.5), 0); // AudioConverter expects unfilled frames to be zeroed. if (frames_filled < audio_bus->frames()) { diff --git a/media/base/audio_renderer_mixer_unittest.cc b/media/base/audio_renderer_mixer_unittest.cc index bae2ebb..8f45c2b 100644 --- a/media/base/audio_renderer_mixer_unittest.cc +++ b/media/base/audio_renderer_mixer_unittest.cc @@ -156,12 +156,12 @@ class AudioRendererMixerTest } // Render actual audio data. - int frames = mixer_callback_->Render(audio_bus_.get(), 0); + int frames = mixer_callback_->Render(audio_bus_.get(), 0, 0); if (frames != audio_bus_->frames()) return false; // Render expected audio data (without scaling). - expected_callback_->Render(expected_audio_bus_.get(), 0); + expected_callback_->Render(expected_audio_bus_.get(), 0, 0); if (half_fill_) { // In this case, just verify that every frame was initialized, this will @@ -486,7 +486,7 @@ TEST_P(AudioRendererMixerBehavioralTest, MixerPausesStream) { const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(100); base::TimeTicks start_time = base::TimeTicks::Now(); while (!pause_event.IsSignaled()) { - mixer_callback_->Render(audio_bus_.get(), 0); + mixer_callback_->Render(audio_bus_.get(), 0, 0); base::PlatformThread::Sleep(kSleepTime); ASSERT_TRUE(base::TimeTicks::Now() - start_time < kTestTimeout); } @@ -501,7 +501,7 @@ TEST_P(AudioRendererMixerBehavioralTest, MixerPausesStream) { // Ensure once the input is paused the sink eventually pauses. start_time = base::TimeTicks::Now(); while (!pause_event.IsSignaled()) { - mixer_callback_->Render(audio_bus_.get(), 0); + mixer_callback_->Render(audio_bus_.get(), 0, 0); base::PlatformThread::Sleep(kSleepTime); ASSERT_TRUE(base::TimeTicks::Now() - start_time < kTestTimeout); } diff --git a/media/base/audio_renderer_sink.h b/media/base/audio_renderer_sink.h index 30cbfef..b45c0fc 100644 --- a/media/base/audio_renderer_sink.h +++ b/media/base/audio_renderer_sink.h @@ -35,8 +35,11 @@ class AudioRendererSink class RenderCallback { public: // Attempts to completely fill all channels of |dest|, returns actual - // number of frames filled. - virtual int Render(AudioBus* dest, int audio_delay_milliseconds) = 0; + // number of frames filled. |frames_skipped| contains the number of frames + // the consumer has skipped, if any. + virtual int Render(AudioBus* dest, + uint32_t audio_delay_milliseconds, + uint32_t frames_skipped) = 0; // Signals an error has occurred. virtual void OnRenderError() = 0; diff --git a/media/base/fake_audio_render_callback.cc b/media/base/fake_audio_render_callback.cc index 73d606e..8d7ef20 100644 --- a/media/base/fake_audio_render_callback.cc +++ b/media/base/fake_audio_render_callback.cc @@ -23,7 +23,8 @@ FakeAudioRenderCallback::FakeAudioRenderCallback(double step) FakeAudioRenderCallback::~FakeAudioRenderCallback() {} int FakeAudioRenderCallback::Render(AudioBus* audio_bus, - int audio_delay_milliseconds) { + uint32_t audio_delay_milliseconds, + uint32_t frames_skipped) { last_audio_delay_milliseconds_ = audio_delay_milliseconds; last_channel_count_ = audio_bus->channels(); @@ -46,7 +47,7 @@ int FakeAudioRenderCallback::Render(AudioBus* audio_bus, double FakeAudioRenderCallback::ProvideInput(AudioBus* audio_bus, base::TimeDelta buffer_delay) { - Render(audio_bus, buffer_delay.InMillisecondsF() + 0.5); + Render(audio_bus, buffer_delay.InMillisecondsF() + 0.5, 0); return volume_; } diff --git a/media/base/fake_audio_render_callback.h b/media/base/fake_audio_render_callback.h index 65d7df2..49d64ba 100644 --- a/media/base/fake_audio_render_callback.h +++ b/media/base/fake_audio_render_callback.h @@ -26,7 +26,9 @@ class FakeAudioRenderCallback // Renders a sine wave into the provided audio data buffer. If |half_fill_| // is set, will only fill half the buffer. - int Render(AudioBus* audio_bus, int audio_delay_milliseconds) override; + int Render(AudioBus* audio_bus, + uint32_t audio_delay_milliseconds, + uint32_t frames_skipped) override; MOCK_METHOD0(OnRenderError, void()); // AudioTransform::ProvideAudioTransformInput implementation. diff --git a/media/base/fake_audio_renderer_sink.cc b/media/base/fake_audio_renderer_sink.cc index d8a7262..5ce6074 100644 --- a/media/base/fake_audio_renderer_sink.cc +++ b/media/base/fake_audio_renderer_sink.cc @@ -60,12 +60,13 @@ OutputDevice* FakeAudioRendererSink::GetOutputDevice() { return output_device_.get(); } -bool FakeAudioRendererSink::Render(AudioBus* dest, int audio_delay_milliseconds, +bool FakeAudioRendererSink::Render(AudioBus* dest, + uint32_t audio_delay_milliseconds, int* frames_written) { if (state_ != kPlaying) return false; - *frames_written = callback_->Render(dest, audio_delay_milliseconds); + *frames_written = callback_->Render(dest, audio_delay_milliseconds, 0); return true; } diff --git a/media/base/fake_audio_renderer_sink.h b/media/base/fake_audio_renderer_sink.h index 0a9bd93..765257d 100644 --- a/media/base/fake_audio_renderer_sink.h +++ b/media/base/fake_audio_renderer_sink.h @@ -43,7 +43,8 @@ class FakeAudioRendererSink : public AudioRendererSink { // Returns false if this object is in a state where calling Render() // should not occur. (i.e., in the kPaused or kStopped state.) The // value of |frames_written| is undefined if false is returned. - bool Render(AudioBus* dest, int audio_delay_milliseconds, + bool Render(AudioBus* dest, + uint32_t audio_delay_milliseconds, int* frames_written); void OnRenderError(); |