Index: media/renderers/audio_renderer_impl.cc |
diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc |
index 12d53f7a1837aec3c125446b09b8fd4639e0acb1..e5fa699e73c2b122231e96f0a16adf2e5b069397 100644 |
--- a/media/renderers/audio_renderer_impl.cc |
+++ b/media/renderers/audio_renderer_impl.cc |
@@ -21,7 +21,6 @@ |
#include "media/base/audio_buffer.h" |
#include "media/base/audio_buffer_converter.h" |
#include "media/base/audio_latency.h" |
-#include "media/base/audio_splicer.h" |
#include "media/base/bind_to_current_loop.h" |
#include "media/base/demuxer_stream.h" |
#include "media/base/media_log.h" |
@@ -58,8 +57,6 @@ AudioRendererImpl::AudioRendererImpl( |
rendered_end_of_stream_(false), |
is_suspending_(false), |
weak_factory_(this) { |
- audio_buffer_stream_->set_splice_observer(base::Bind( |
- &AudioRendererImpl::OnNewSpliceBuffer, weak_factory_.GetWeakPtr())); |
audio_buffer_stream_->set_config_change_observer(base::Bind( |
&AudioRendererImpl::OnConfigChange, weak_factory_.GetWeakPtr())); |
@@ -301,7 +298,6 @@ void AudioRendererImpl::ResetDecoderDone() { |
if (buffering_state_ != BUFFERING_HAVE_NOTHING) |
SetBufferingState_Locked(BUFFERING_HAVE_NOTHING); |
- splicer_->Reset(); |
if (buffer_converter_) |
buffer_converter_->Reset(); |
algorithm_->FlushBuffers(); |
@@ -466,7 +462,6 @@ void AudioRendererImpl::OnAudioBufferStreamInitialized(bool success) { |
if (expecting_config_changes_) |
buffer_converter_.reset(new AudioBufferConverter(audio_parameters_)); |
- splicer_.reset(new AudioSplicer(audio_parameters_.sample_rate(), media_log_)); |
// We're all good! Continue initializing the rest of the audio renderer |
// based on the decoder format. |
@@ -561,6 +556,8 @@ void AudioRendererImpl::DecodedAudioReady( |
return; |
} |
+ bool need_another_buffer = false; |
+ |
if (expecting_config_changes_) { |
if (last_decoded_sample_rate_ && |
buffer->sample_rate() != last_decoded_sample_rate_) { |
@@ -574,11 +571,15 @@ void AudioRendererImpl::DecodedAudioReady( |
DCHECK(buffer_converter_); |
buffer_converter_->AddInput(buffer); |
+ |
+ if (!buffer_converter_->HasNextBuffer()) { |
+ AttemptRead_Locked(); |
+ return; |
+ } |
+ |
while (buffer_converter_->HasNextBuffer()) { |
- if (!splicer_->AddInput(buffer_converter_->GetNextBuffer())) { |
- HandleAbortedReadOrDecodeError(AUDIO_RENDERER_ERROR_SPLICE_FAILED); |
- return; |
- } |
+ need_another_buffer = |
+ HandleDecodedBuffer_Locked(buffer_converter_->GetNextBuffer()); |
} |
} else { |
// TODO(chcunningham, tguilbert): Figure out if we want to support implicit |
@@ -601,28 +602,16 @@ void AudioRendererImpl::DecodedAudioReady( |
return; |
} |
- if (!splicer_->AddInput(buffer)) { |
- HandleAbortedReadOrDecodeError(AUDIO_RENDERER_ERROR_SPLICE_FAILED); |
- return; |
- } |
- } |
- |
- if (!splicer_->HasNextBuffer()) { |
- AttemptRead_Locked(); |
- return; |
+ need_another_buffer = HandleDecodedBuffer_Locked(buffer); |
} |
- bool need_another_buffer = false; |
- while (splicer_->HasNextBuffer()) |
- need_another_buffer = HandleSplicerBuffer_Locked(splicer_->GetNextBuffer()); |
- |
if (!need_another_buffer && !CanRead_Locked()) |
return; |
AttemptRead_Locked(); |
} |
-bool AudioRendererImpl::HandleSplicerBuffer_Locked( |
+bool AudioRendererImpl::HandleDecodedBuffer_Locked( |
const scoped_refptr<AudioBuffer>& buffer) { |
lock_.AssertAcquired(); |
if (buffer->end_of_stream()) { |
@@ -935,20 +924,10 @@ void AudioRendererImpl::ChangeState_Locked(State new_state) { |
state_ = new_state; |
} |
-void AudioRendererImpl::OnNewSpliceBuffer(base::TimeDelta splice_timestamp) { |
- DCHECK(task_runner_->BelongsToCurrentThread()); |
- splicer_->SetSpliceTimestamp(splice_timestamp); |
-} |
- |
void AudioRendererImpl::OnConfigChange() { |
DCHECK(task_runner_->BelongsToCurrentThread()); |
DCHECK(expecting_config_changes_); |
buffer_converter_->ResetTimestampState(); |
- // Drain flushed buffers from the converter so the AudioSplicer receives all |
- // data ahead of any OnNewSpliceBuffer() calls. Since discontinuities should |
- // only appear after config changes, AddInput() should never fail here. |
- while (buffer_converter_->HasNextBuffer()) |
- CHECK(splicer_->AddInput(buffer_converter_->GetNextBuffer())); |
} |
void AudioRendererImpl::SetBufferingState_Locked( |