Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Unified Diff: media/filters/decoder_stream.cc

Issue 1954633002: MEDIA_LOG for large encoded timestamp gaps in decoder stream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moar feedback Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/decoder_stream.cc
diff --git a/media/filters/decoder_stream.cc b/media/filters/decoder_stream.cc
index 495fec15680f9a744280f0f2e26263557ede4f42..d03bdea9965a09be610ddc6435bf4f5b0dba1952 100644
--- a/media/filters/decoder_stream.cc
+++ b/media/filters/decoder_stream.cc
@@ -42,12 +42,28 @@ const char* GetTraceString<DemuxerStream::AUDIO>() {
return "DecoderStream<AUDIO>::Decode";
}
+template <typename ConfigType>
+ConfigType GetConfig(DemuxerStream* stream) {
+ return nullptr;
+}
+
+template <>
+AudioDecoderConfig GetConfig(DemuxerStream* stream) {
+ return stream->audio_decoder_config();
+}
+
+template <>
+VideoDecoderConfig GetConfig(DemuxerStream* stream) {
+ return stream->video_decoder_config();
+}
+
template <DemuxerStream::Type StreamType>
DecoderStream<StreamType>::DecoderStream(
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
ScopedVector<Decoder> decoders,
const scoped_refptr<MediaLog>& media_log)
- : task_runner_(task_runner),
+ : traits_(media_log),
+ task_runner_(task_runner),
media_log_(media_log),
state_(STATE_UNINITIALIZED),
stream_(NULL),
@@ -110,6 +126,8 @@ void DecoderStream<StreamType>::Initialize(
waiting_for_decryption_key_cb_ = waiting_for_decryption_key_cb;
stream_ = stream;
+ traits_.OnStreamReset(GetConfig<Config>(stream_));
DaleCurtis 2016/06/24 00:11:29 Why was GetConfig() necessary again? Seems like yo
chcunningham 2016/06/24 01:56:34 We chatted. Documenting for posterity: I disliked
+
state_ = STATE_INITIALIZING;
SelectDecoder(cdm_context);
}
@@ -165,6 +183,7 @@ void DecoderStream<StreamType>::Reset(const base::Closure& closure) {
}
ready_outputs_.clear();
+ traits_.OnStreamReset(GetConfig<Config>(stream_));
// It's possible to have received a DECODE_ERROR and entered STATE_ERROR right
// before a Reset() is executed. If we are still waiting for a demuxer read,
@@ -245,7 +264,7 @@ base::TimeDelta DecoderStream<StreamType>::AverageDuration() const {
template <DemuxerStream::Type StreamType>
void DecoderStream<StreamType>::SelectDecoder(CdmContext* cdm_context) {
decoder_selector_->SelectDecoder(
- stream_, cdm_context,
+ &traits_, stream_, cdm_context,
base::Bind(&DecoderStream<StreamType>::OnDecoderSelected,
weak_factory_.GetWeakPtr()),
base::Bind(&DecoderStream<StreamType>::OnDecodeOutputReady,
@@ -360,6 +379,8 @@ void DecoderStream<StreamType>::DecodeInternal(
DCHECK(reset_cb_.is_null());
DCHECK(buffer.get());
+ traits_.OnDecode(buffer);
+
int buffer_size = buffer->end_of_stream() ? 0 : buffer->data_size();
TRACE_EVENT_ASYNC_BEGIN2(
@@ -425,7 +446,7 @@ void DecoderStream<StreamType>::OnDecodeDone(int buffer_size,
state_ = STATE_REINITIALIZING_DECODER;
decoder_selector_->SelectDecoder(
- stream_, nullptr,
+ &traits_, stream_, nullptr,
base::Bind(&DecoderStream<StreamType>::OnDecoderSelected,
weak_factory_.GetWeakPtr()),
base::Bind(&DecoderStream<StreamType>::OnDecodeOutputReady,
@@ -488,6 +509,8 @@ void DecoderStream<StreamType>::OnDecodeOutputReady(
if (!reset_cb_.is_null())
return;
+ traits_.OnDecodeDone(output);
+
++decoded_frames_since_fallback_;
// |decoder_| sucessfully decoded a frame. No need to keep buffers for a
@@ -688,7 +711,7 @@ void DecoderStream<StreamType>::ReinitializeDecoder() {
state_ = STATE_REINITIALIZING_DECODER;
// Decoders should not need a new CDM during reinitialization.
- DecoderStreamTraits<StreamType>::InitializeDecoder(
+ traits_.InitializeDecoder(
decoder_.get(), stream_, nullptr,
base::Bind(&DecoderStream<StreamType>::OnDecoderReinitialized,
weak_factory_.GetWeakPtr()),

Powered by Google App Engine
This is Rietveld 408576698