| Index: media/filters/source_buffer_stream.cc
|
| diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
|
| index d20969f00c96c81089b8a94436700cf6aee9c5bf..cdb4bac0b3415dad5bdb8cd27736be7cd4611603 100644
|
| --- a/media/filters/source_buffer_stream.cc
|
| +++ b/media/filters/source_buffer_stream.cc
|
| @@ -1548,8 +1548,10 @@ void SourceBufferStream::GenerateSpliceFrame(const BufferQueue& new_buffers) {
|
| //
|
| // We also do not want to generate splices if the first new buffer replaces an
|
| // existing buffer exactly.
|
| - if (pre_splice_buffers.front()->timestamp() >= splice_timestamp)
|
| + if (pre_splice_buffers.front()->timestamp() >= splice_timestamp) {
|
| + LogDegenerateSplice();
|
| return;
|
| + }
|
|
|
| // If any |pre_splice_buffers| are already splices or preroll, do not generate
|
| // a splice.
|
| @@ -1559,11 +1561,13 @@ void SourceBufferStream::GenerateSpliceFrame(const BufferQueue& new_buffers) {
|
| if (!original_splice_buffers.empty()) {
|
| DVLOG(1) << "Can't generate splice: overlapped buffers contain a "
|
| "pre-existing splice.";
|
| + LogDegenerateSplice();
|
| return;
|
| }
|
|
|
| if (pre_splice_buffers[i]->preroll_buffer().get()) {
|
| DVLOG(1) << "Can't generate splice: overlapped buffers contain preroll.";
|
| + LogDegenerateSplice();
|
| return;
|
| }
|
| }
|
| @@ -1582,12 +1586,14 @@ void SourceBufferStream::GenerateSpliceFrame(const BufferQueue& new_buffers) {
|
| DVLOG(1) << "Can't generate splice: not enough samples for crossfade; have "
|
| << splice_duration.InMicroseconds() << " us, but need "
|
| << minimum_splice_duration.InMicroseconds() << " us.";
|
| + LogDegenerateSplice();
|
| return;
|
| }
|
|
|
| DVLOG(1) << "Generating splice frame @ " << new_buffers.front()->timestamp()
|
| << ", splice duration: " << splice_duration.InMicroseconds()
|
| << " us";
|
| + LogSplice(splice_duration.InSecondsF());
|
| new_buffers.front()->ConvertToSpliceBuffer(pre_splice_buffers);
|
| }
|
|
|
| @@ -1609,4 +1615,16 @@ bool SourceBufferStream::SetPendingBuffer(
|
| return true;
|
| }
|
|
|
| +void SourceBufferStream::LogSplice(double splice_duration) {
|
| + splice_stats_.OnSplice(splice_duration);
|
| + media_log_->AddEvent(
|
| + media_log_->CreateBufferedSpliceStatisticsChangedEvent(splice_stats_));
|
| +}
|
| +
|
| +void SourceBufferStream::LogDegenerateSplice() {
|
| + splice_stats_.OnDegenerateSplice();
|
| + media_log_->AddEvent(
|
| + media_log_->CreateBufferedSpliceStatisticsChangedEvent(splice_stats_));
|
| +}
|
| +
|
| } // namespace media
|
|
|