Index: media/filters/source_buffer_range.h |
diff --git a/media/filters/source_buffer_range.h b/media/filters/source_buffer_range.h |
index c29ed4f29accdad120da717d26faa87b051d32f6..6989763067b2e742e6fdd8d503a304fb8c1ce949 100644 |
--- a/media/filters/source_buffer_range.h |
+++ b/media/filters/source_buffer_range.h |
@@ -37,17 +37,23 @@ class SourceBufferRange { |
ALLOW_GAPS |
}; |
- // Buffers with the same timestamp are only allowed under certain conditions. |
- // More precisely, it is allowed in all situations except when the previous |
- // frame is not a key frame and the current is a key frame. |
- // Examples of situations where DTS of two consecutive frames can be equal: |
+ // Sequential buffers with the same decode timestamp make sense under certain |
+ // conditions, typically when the first buffer is a keyframe. Due to some |
+ // atypical media append behaviors where a new keyframe might have the same |
+ // timestamp as a previous non-keyframe, the playback of the sequence might |
+ // involve some throwaway decode work. This method supports detecting this |
+ // situation so that callers can log warnings (it returns true in this case |
+ // only). |
+ // For all other cases, including more typical same-DTS sequences, this method |
+ // returns false. Examples of typical situations where DTS of two consecutive |
+ // frames can be equal: |
// - Video: VP8 Alt-Ref frames. |
// - Video: IPBPBP...: DTS for I frame and for P frame can be equal. |
// - Text track cues that start at same time. |
// Returns true if |prev_is_keyframe| and |current_is_keyframe| indicate a |
- // same timestamp situation that is allowed. False is returned otherwise. |
- static bool AllowSameTimestamp(bool prev_is_keyframe, |
- bool current_is_keyframe); |
+ // same timestamp situation that is atypical. False is returned otherwise. |
+ static bool IsUncommonSameTimestampSequence(bool prev_is_keyframe, |
wolenetz
2016/02/05 23:27:24
Note that I've inverted the logic and the name her
|
+ bool current_is_keyframe); |
// Creates a source buffer range with |new_buffers|. |new_buffers| cannot be |
// empty and the front of |new_buffers| must be a keyframe. |
@@ -198,8 +204,8 @@ class SourceBufferRange { |
bool EndOverlaps(const SourceBufferRange& range) const; |
// Returns true if |timestamp| is the timestamp of the next buffer in |
- // sequence after |buffers_.back()|, false otherwise. |
- bool IsNextInSequence(DecodeTimestamp timestamp, bool is_key_frame) const; |
+ // sequence after |buffers_.back()|, false othewise. |
wolenetz
2016/02/05 23:27:24
nit-to-self: fix this typo.
wolenetz
2016/02/12 01:23:47
Done.
|
+ bool IsNextInSequence(DecodeTimestamp timestamp) const; |
// Adds all buffers which overlap [start, end) to the end of |buffers|. If |
// no buffers exist in the range returns false, true otherwise. |