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

Side by Side Diff: media/filters/media_source_state.h

Issue 1564983003: MSE: Log a warning if muxed AV media segment has no A or has no V block (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed previous CR comments Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_ 5 #ifndef MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_
6 #define MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_ 6 #define MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_
7 7
8 #include <list> 8 #include <list>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 const StreamParser::TextBufferQueueMap& text_map); 145 const StreamParser::TextBufferQueueMap& text_map);
146 146
147 void OnSourceInitDone(const StreamParser::InitParameters& params); 147 void OnSourceInitDone(const StreamParser::InitParameters& params);
148 148
149 // EstimateVideoDataSize uses some heuristics to estimate the size of the 149 // EstimateVideoDataSize uses some heuristics to estimate the size of the
150 // video size in the chunk of muxed audio/video data without parsing it. 150 // video size in the chunk of muxed audio/video data without parsing it.
151 // This is used by EvictCodedFrames algorithm, which happens before Append 151 // This is used by EvictCodedFrames algorithm, which happens before Append
152 // (and therefore before parsing is performed) to prepare space for new data. 152 // (and therefore before parsing is performed) to prepare space for new data.
153 size_t EstimateVideoDataSize(size_t muxed_data_chunk_size) const; 153 size_t EstimateVideoDataSize(size_t muxed_data_chunk_size) const;
154 154
155 // Tracks the number of MEDIA_LOGs emitted for segments missing expected audio
156 // or video blocks. Useful to prevent log spam.
157 int num_missing_track_logs_ = 0;
158
155 CreateDemuxerStreamCB create_demuxer_stream_cb_; 159 CreateDemuxerStreamCB create_demuxer_stream_cb_;
156 NewTextTrackCB new_text_track_cb_; 160 NewTextTrackCB new_text_track_cb_;
157 161
158 // During Append(), if OnNewBuffers() coded frame processing updates the 162 // During Append(), if OnNewBuffers() coded frame processing updates the
159 // timestamp offset then |*timestamp_offset_during_append_| is also updated 163 // timestamp offset then |*timestamp_offset_during_append_| is also updated
160 // so Append()'s caller can know the new offset. This pointer is only non-NULL 164 // so Append()'s caller can know the new offset. This pointer is only non-NULL
161 // during the lifetime of an Append() call. 165 // during the lifetime of an Append() call.
162 TimeDelta* timestamp_offset_during_append_; 166 TimeDelta* timestamp_offset_during_append_;
163 167
164 // During Append(), coded frame processing triggered by OnNewBuffers() 168 // During Append(), coded frame processing triggered by OnNewBuffers()
165 // requires these two attributes. These are only valid during the lifetime of 169 // requires these two attributes. These are only valid during the lifetime of
166 // an Append() call. 170 // an Append() call.
167 TimeDelta append_window_start_during_append_; 171 TimeDelta append_window_start_during_append_;
168 TimeDelta append_window_end_during_append_; 172 TimeDelta append_window_end_during_append_;
169 173
170 // Set to true if the next buffers appended within the append window 174 // Set to true if the next buffers appended within the append window
171 // represent the start of a new media segment. This flag being set 175 // represent the start of a new media segment. This flag being set
172 // triggers a call to |new_segment_cb_| when the new buffers are 176 // triggers a call to |new_segment_cb_| when the new buffers are
173 // appended. The flag is set on actual media segment boundaries and 177 // appended. The flag is set on actual media segment boundaries and
174 // when the "append window" filtering causes discontinuities in the 178 // when the "append window" filtering causes discontinuities in the
175 // appended data. 179 // appended data.
176 // TODO(wolenetz/acolwell): Investigate if we need this, or if coded frame 180 // TODO(wolenetz/acolwell): Investigate if we need this, or if coded frame
177 // processing's discontinuity logic is enough. See http://crbug.com/351489. 181 // processing's discontinuity logic is enough. See http://crbug.com/351489.
178 bool new_media_segment_; 182 bool new_media_segment_;
179 183
180 // Keeps track of whether a media segment is being parsed. 184 // Keeps track of whether a media segment is being parsed.
181 bool parsing_media_segment_; 185 bool parsing_media_segment_;
182 186
187 // Valid only while |parsing_media_segment_| is true. These flags enable
188 // warning when at least one frame for each A/V track is not in a parsed media
189 // segment.
190 bool media_segment_contained_audio_frame_;
191 bool media_segment_contained_video_frame_;
192
183 // The object used to parse appended data. 193 // The object used to parse appended data.
184 scoped_ptr<StreamParser> stream_parser_; 194 scoped_ptr<StreamParser> stream_parser_;
185 195
186 ChunkDemuxerStream* audio_; // Not owned by |this|. 196 ChunkDemuxerStream* audio_; // Not owned by |this|.
187 ChunkDemuxerStream* video_; // Not owned by |this|. 197 ChunkDemuxerStream* video_; // Not owned by |this|.
188 198
189 typedef std::map<StreamParser::TrackId, ChunkDemuxerStream*> TextStreamMap; 199 typedef std::map<StreamParser::TrackId, ChunkDemuxerStream*> TextStreamMap;
190 TextStreamMap text_stream_map_; // |this| owns the map's stream pointers. 200 TextStreamMap text_stream_map_; // |this| owns the map's stream pointers.
191 201
192 scoped_ptr<FrameProcessor> frame_processor_; 202 scoped_ptr<FrameProcessor> frame_processor_;
(...skipping 12 matching lines...) Expand all
205 // TODO(wolenetz): Refactor this function while integrating April 29, 2014 215 // TODO(wolenetz): Refactor this function while integrating April 29, 2014
206 // changes to MSE spec. See http://crbug.com/371499. 216 // changes to MSE spec. See http://crbug.com/371499.
207 bool auto_update_timestamp_offset_; 217 bool auto_update_timestamp_offset_;
208 218
209 DISALLOW_COPY_AND_ASSIGN(MediaSourceState); 219 DISALLOW_COPY_AND_ASSIGN(MediaSourceState);
210 }; 220 };
211 221
212 } // namespace media 222 } // namespace media
213 223
214 #endif // MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_ 224 #endif // MEDIA_FILTERS_MEDIA_SOURCE_STATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698