Index: media/filters/decoder_stream.cc |
diff --git a/media/filters/decoder_stream.cc b/media/filters/decoder_stream.cc |
index 350e47f72cd3887c2fd01ee9d878774791254745..c4adc632ba89a897cbc222bae14e3737ff3f93df 100644 |
--- a/media/filters/decoder_stream.cc |
+++ b/media/filters/decoder_stream.cc |
@@ -50,6 +50,7 @@ DecoderStream<StreamType>::DecoderStream( |
new DecoderSelector<StreamType>(task_runner, |
decoders.Pass(), |
set_decryptor_ready_cb)), |
+ active_splice_(false), |
weak_factory_(this) {} |
template <DemuxerStream::Type StreamType> |
@@ -408,9 +409,12 @@ void DecoderStream<StreamType>::OnBufferReady( |
return; |
} |
- if (!splice_observer_cb_.is_null() && !buffer->end_of_stream() && |
- buffer->splice_timestamp() != kNoTimestamp()) { |
- splice_observer_cb_.Run(buffer->splice_timestamp()); |
+ if (!splice_observer_cb_.is_null() && !buffer->end_of_stream()) { |
+ const bool has_splice_ts = buffer->splice_timestamp() != kNoTimestamp(); |
+ if (active_splice_ || has_splice_ts) { |
+ splice_observer_cb_.Run(buffer->splice_timestamp()); |
+ active_splice_ = has_splice_ts; |
+ } |
} |
DCHECK(status == DemuxerStream::kOk) << status; |