Index: media/filters/media_source_state.h |
diff --git a/media/filters/media_source_state.h b/media/filters/media_source_state.h |
index 47ebc5888e9fabb4cbb7e25782d499e3e9b47f7c..5827abb36bbfb57674d17c656b038fb36c3cc06a 100644 |
--- a/media/filters/media_source_state.h |
+++ b/media/filters/media_source_state.h |
@@ -41,8 +41,7 @@ class MEDIA_EXPORT MediaSourceState { |
~MediaSourceState(); |
void Init(const StreamParser::InitCB& init_cb, |
- bool allow_audio, |
- bool allow_video, |
+ const std::string& expected_codecs, |
const StreamParser::EncryptedMediaInitDataCB& |
encrypted_media_init_data_cb, |
const NewTextTrackCB& new_text_track_cb); |
@@ -136,8 +135,7 @@ class MEDIA_EXPORT MediaSourceState { |
// encountered. |
// Returns true on a successful call. Returns false if an error occurred while |
// processing decoder configurations. |
- bool OnNewConfigs(bool allow_audio, |
- bool allow_video, |
+ bool OnNewConfigs(std::string expected_codecs, |
std::unique_ptr<MediaTracks> tracks, |
const StreamParser::TextTrackConfigMap& text_configs); |
@@ -163,6 +161,9 @@ class MEDIA_EXPORT MediaSourceState { |
// (and therefore before parsing is performed) to prepare space for new data. |
size_t EstimateVideoDataSize(size_t muxed_data_chunk_size) const; |
+ // Sets memory limits for all demuxer streams. |
+ void SetStreamMemoryLimits(); |
+ |
// Tracks the number of MEDIA_LOGs emitted for segments missing expected audio |
// or video blocks. Useful to prevent log spam. |
int num_missing_track_logs_ = 0; |
@@ -186,16 +187,17 @@ class MEDIA_EXPORT MediaSourceState { |
bool parsing_media_segment_; |
// Valid only while |parsing_media_segment_| is true. These flags enable |
- // warning when at least one frame for each A/V track is not in a parsed media |
- // segment. |
- bool media_segment_contained_audio_frame_; |
- bool media_segment_contained_video_frame_; |
+ // warning when the parsed media segment doesn't have frames for some track. |
+ std::map<StreamParser::TrackId, bool> media_segment_has_data_for_track_; |
// The object used to parse appended data. |
std::unique_ptr<StreamParser> stream_parser_; |
- ChunkDemuxerStream* audio_; // Not owned by |this|. |
- ChunkDemuxerStream* video_; // Not owned by |this|. |
+ // Note that ChunkDemuxerStreams are created and owned by the parent |
+ // ChunkDemuxer. They are not owned by |this|. |
+ using DemuxerStreamMap = std::map<StreamParser::TrackId, ChunkDemuxerStream*>; |
+ DemuxerStreamMap audio_streams_; |
+ DemuxerStreamMap video_streams_; |
typedef std::map<StreamParser::TrackId, ChunkDemuxerStream*> TextStreamMap; |
TextStreamMap text_stream_map_; // |this| owns the map's stream pointers. |
@@ -214,6 +216,7 @@ class MEDIA_EXPORT MediaSourceState { |
// invoke this callback. |
Demuxer::MediaTracksUpdatedCB init_segment_received_cb_; |
bool append_in_progress_ = false; |
+ bool first_init_segment_received_ = false; |
// Indicates that timestampOffset should be updated automatically during |
// OnNewBuffers() based on the earliest end timestamp of the buffers provided. |