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

Unified Diff: media/filters/decoder_stream.h

Issue 2837613004: media: Support better decoder switching (Closed)
Patch Set: comments Created 3 years, 7 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
« no previous file with comments | « media/filters/decoder_selector.cc ('k') | media/filters/decoder_stream.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/decoder_stream.h
diff --git a/media/filters/decoder_stream.h b/media/filters/decoder_stream.h
index 97ab9705e342091e3e8cf6aa01b890da05e8a062..f3afd2346d783262eaf9088b5bea55be92593938 100644
--- a/media/filters/decoder_stream.h
+++ b/media/filters/decoder_stream.h
@@ -50,14 +50,17 @@ class MEDIA_EXPORT DecoderStream {
DECODE_ERROR, // Decoder returned decode error.
};
+ // Callback to create a list of decoders.
+ using CreateDecodersCB = base::RepeatingCallback<ScopedVector<Decoder>()>;
+
// Indicates completion of a DecoderStream initialization.
- typedef base::Callback<void(bool success)> InitCB;
+ using InitCB = base::Callback<void(bool success)>;
// Indicates completion of a DecoderStream read.
- typedef base::Callback<void(Status, const scoped_refptr<Output>&)> ReadCB;
+ using ReadCB = base::Callback<void(Status, const scoped_refptr<Output>&)>;
DecoderStream(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
- ScopedVector<Decoder> decoders,
+ CreateDecodersCB create_decoders_cb,
MediaLog* media_log);
virtual ~DecoderStream();
@@ -211,6 +214,16 @@ class MEDIA_EXPORT DecoderStream {
// Whether |decoder_| has produced a frame yet. Reset on fallback.
bool decoder_produced_a_frame_;
+ // Whether we have already fallen back once on decode error, used to prevent
+ // issues like infinite fallback like:
+ // 1. select decoder 1
+ // 2. decode error on decoder 1
+ // 3. black list decoder 1 and select decoder 2
+ // 4. decode error again on decoder 2
+ // 5. black list decoder 2 and select decoder 1
+ // 6. go to (2)
+ bool has_fallen_back_once_on_decode_error_;
watk 2017/05/04 23:58:36 +1
+
std::unique_ptr<DecryptingDemuxerStream> decrypting_demuxer_stream_;
ConfigChangeObserverCB config_change_observer_cb_;
« no previous file with comments | « media/filters/decoder_selector.cc ('k') | media/filters/decoder_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698