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

Side by Side Diff: media/filters/frame_processor.cc

Issue 344513002: MSE: Reduce spurious discontinuities caused by partial append window start overlaps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | media/filters/frame_processor_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "media/filters/frame_processor.h" 5 #include "media/filters/frame_processor.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "media/base/buffers.h" 8 #include "media/base/buffers.h"
9 #include "media/base/stream_parser_buffer.h" 9 #include "media/base/stream_parser_buffer.h"
10 10
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 frame->SetDecodeTimestamp(decode_timestamp); 254 frame->SetDecodeTimestamp(decode_timestamp);
255 if (track_buffer->stream()->supports_partial_append_window_trimming() && 255 if (track_buffer->stream()->supports_partial_append_window_trimming() &&
256 HandlePartialAppendWindowTrimming(append_window_start, 256 HandlePartialAppendWindowTrimming(append_window_start,
257 append_window_end, 257 append_window_end,
258 frame)) { 258 frame)) {
259 // If |frame| was shortened a discontinuity may exist, so treat the next 259 // If |frame| was shortened a discontinuity may exist, so treat the next
260 // frames appended as if they were the beginning of a new media segment. 260 // frames appended as if they were the beginning of a new media segment.
261 if (frame->timestamp() != presentation_timestamp && !sequence_mode_) 261 if (frame->timestamp() != presentation_timestamp && !sequence_mode_)
262 *new_media_segment = true; 262 *new_media_segment = true;
263 263
264 // |frame| has been partially trimmed or had preroll added. 264 // |frame| has been partially trimmed or had preroll added. Though
265 // |frame|'s duration may have changed, do not update |frame_duration|
266 // here, so |track_buffer|'s last frame duration update uses original
267 // frame duration and reduces spurious discontinuity detection.
265 decode_timestamp = frame->GetDecodeTimestamp(); 268 decode_timestamp = frame->GetDecodeTimestamp();
266 presentation_timestamp = frame->timestamp(); 269 presentation_timestamp = frame->timestamp();
267 frame_duration = frame->duration();
268 270
269 // The end timestamp of the frame should be unchanged. 271 // The end timestamp of the frame should be unchanged.
270 DCHECK(frame_end_timestamp == presentation_timestamp + frame_duration); 272 DCHECK(frame_end_timestamp == presentation_timestamp + frame->duration());
271 } 273 }
272 274
273 if (presentation_timestamp < append_window_start || 275 if (presentation_timestamp < append_window_start ||
274 frame_end_timestamp > append_window_end) { 276 frame_end_timestamp > append_window_end) {
275 track_buffer->set_needs_random_access_point(true); 277 track_buffer->set_needs_random_access_point(true);
276 DVLOG(3) << "Dropping frame that is outside append window."; 278 DVLOG(3) << "Dropping frame that is outside append window.";
277 279
278 if (!sequence_mode_) { 280 if (!sequence_mode_) {
279 // This also triggers a discontinuity so we need to treat the next 281 // This also triggers a discontinuity so we need to treat the next
280 // frames appended within the append window as if they were the 282 // frames appended within the append window as if they were the
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 DCHECK(group_end_timestamp_ >= base::TimeDelta()); 364 DCHECK(group_end_timestamp_ >= base::TimeDelta());
363 365
364 return true; 366 return true;
365 } 367 }
366 368
367 NOTREACHED(); 369 NOTREACHED();
368 return false; 370 return false;
369 } 371 }
370 372
371 } // namespace media 373 } // namespace media
OLDNEW
« no previous file with comments | « no previous file | media/filters/frame_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698