OLD | NEW |
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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 if (decode_timestamp > presentation_timestamp) { | 119 if (decode_timestamp > presentation_timestamp) { |
120 // TODO(wolenetz): Determine whether DTS>PTS should really be allowed. See | 120 // TODO(wolenetz): Determine whether DTS>PTS should really be allowed. See |
121 // http://crbug.com/354518. | 121 // http://crbug.com/354518. |
122 DVLOG(2) << __FUNCTION__ << ": WARNING: Frame DTS(" | 122 DVLOG(2) << __FUNCTION__ << ": WARNING: Frame DTS(" |
123 << decode_timestamp.InSecondsF() << ") > PTS(" | 123 << decode_timestamp.InSecondsF() << ") > PTS(" |
124 << presentation_timestamp.InSecondsF() << ")"; | 124 << presentation_timestamp.InSecondsF() << ")"; |
125 } | 125 } |
126 | 126 |
127 // TODO(acolwell/wolenetz): All stream parsers must emit valid (positive) | 127 // TODO(acolwell/wolenetz): All stream parsers must emit valid (positive) |
128 // frame durations. For now, we allow non-negative frame duration. | 128 // frame durations. For now, we allow non-negative frame duration. |
| 129 // Until frame durations are trusted, SourceBufferStream inter-buffer |
| 130 // distance fudging may merge otherwise discontinuous ranges. |
129 // See http://crbug.com/351166. | 131 // See http://crbug.com/351166. |
130 if (frame_duration == kNoTimestamp()) { | 132 if (frame_duration == kNoTimestamp()) { |
131 DVLOG(2) << __FUNCTION__ << ": Frame missing duration (kNoTimestamp())"; | 133 DVLOG(2) << __FUNCTION__ << ": Frame missing duration (kNoTimestamp())"; |
132 return false; | 134 return false; |
133 } | 135 } |
134 if (frame_duration < base::TimeDelta()) { | 136 if (frame_duration < base::TimeDelta()) { |
135 DVLOG(2) << __FUNCTION__ << ": Frame duration negative: " | 137 DVLOG(2) << __FUNCTION__ << ": Frame duration negative: " |
136 << frame_duration.InSecondsF(); | 138 << frame_duration.InSecondsF(); |
137 return false; | 139 return false; |
138 } | 140 } |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 } | 371 } |
370 | 372 |
371 void FrameProcessor::SetAllTrackBuffersNeedRandomAccessPoint() { | 373 void FrameProcessor::SetAllTrackBuffersNeedRandomAccessPoint() { |
372 for (TrackBufferMap::iterator itr = track_buffers_.begin(); | 374 for (TrackBufferMap::iterator itr = track_buffers_.begin(); |
373 itr != track_buffers_.end(); ++itr) { | 375 itr != track_buffers_.end(); ++itr) { |
374 itr->second->set_needs_random_access_point(true); | 376 itr->second->set_needs_random_access_point(true); |
375 } | 377 } |
376 } | 378 } |
377 | 379 |
378 } // namespace media | 380 } // namespace media |
OLD | NEW |