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 |