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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 base::TimeDelta frame_duration = frame->duration(); | 100 base::TimeDelta frame_duration = frame->duration(); |
101 | 101 |
102 DVLOG(3) << __FUNCTION__ << ": Processing frame " | 102 DVLOG(3) << __FUNCTION__ << ": Processing frame " |
103 << "Type=" << frame->type() | 103 << "Type=" << frame->type() |
104 << ", TrackID=" << frame->track_id() | 104 << ", TrackID=" << frame->track_id() |
105 << ", PTS=" << presentation_timestamp.InSecondsF() | 105 << ", PTS=" << presentation_timestamp.InSecondsF() |
106 << ", DTS=" << decode_timestamp.InSecondsF() | 106 << ", DTS=" << decode_timestamp.InSecondsF() |
107 << ", DUR=" << frame_duration.InSecondsF(); | 107 << ", DUR=" << frame_duration.InSecondsF(); |
108 | 108 |
109 // Sanity check the timestamps. | 109 // Sanity check the timestamps. |
110 if (presentation_timestamp < base::TimeDelta()) { | 110 if (presentation_timestamp == kNoTimestamp()) { |
111 DVLOG(2) << __FUNCTION__ << ": Negative or unknown frame PTS: " | 111 DVLOG(2) << __FUNCTION__ << ": Unknown frame PTS"; |
112 << presentation_timestamp.InSecondsF(); | |
113 return false; | 112 return false; |
114 } | 113 } |
115 if (decode_timestamp < base::TimeDelta()) { | 114 if (decode_timestamp == kNoTimestamp()) { |
116 DVLOG(2) << __FUNCTION__ << ": Negative or unknown frame DTS: " | 115 DVLOG(2) << __FUNCTION__ << ": Unknown frame DTS"; |
117 << decode_timestamp.InSecondsF(); | |
118 return false; | 116 return false; |
119 } | 117 } |
120 if (decode_timestamp > presentation_timestamp) { | 118 if (decode_timestamp > presentation_timestamp) { |
121 // TODO(wolenetz): Determine whether DTS>PTS should really be allowed. See | 119 // TODO(wolenetz): Determine whether DTS>PTS should really be allowed. See |
122 // http://crbug.com/354518. | 120 // http://crbug.com/354518. |
123 DVLOG(2) << __FUNCTION__ << ": WARNING: Frame DTS(" | 121 DVLOG(2) << __FUNCTION__ << ": WARNING: Frame DTS(" |
124 << decode_timestamp.InSecondsF() << ") > PTS(" | 122 << decode_timestamp.InSecondsF() << ") > PTS(" |
125 << presentation_timestamp.InSecondsF() << ")"; | 123 << presentation_timestamp.InSecondsF() << ")"; |
126 } | 124 } |
127 | 125 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 DCHECK(group_end_timestamp_ >= base::TimeDelta()); | 362 DCHECK(group_end_timestamp_ >= base::TimeDelta()); |
365 | 363 |
366 return true; | 364 return true; |
367 } | 365 } |
368 | 366 |
369 NOTREACHED(); | 367 NOTREACHED(); |
370 return false; | 368 return false; |
371 } | 369 } |
372 | 370 |
373 } // namespace media | 371 } // namespace media |
OLD | NEW |