Chromium Code Reviews| Index: media/base/text_ranges.h |
| diff --git a/media/base/text_ranges.h b/media/base/text_ranges.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a95495207185b5d16c2d34abb69d8211b58248c6 |
| --- /dev/null |
| +++ b/media/base/text_ranges.h |
| @@ -0,0 +1,66 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef MEDIA_BASE_TEXT_RANGES_H_ |
| +#define MEDIA_BASE_TEXT_RANGES_H_ |
| + |
| +#include <map> |
| + |
| +#include "base/macros.h" |
| +#include "base/time/time.h" |
| +#include "media/base/media_export.h" |
| + |
| +namespace media { |
| + |
| +class MEDIA_EXPORT TextRanges { |
| + public: |
| + TextRanges(); |
| + |
| + // We must bind to a new range (either one that exists already, or |
| + // one that is freshly-created) following a seek. |
| + void Flush(); |
|
acolwell GONE FROM CHROMIUM
2014/02/05 19:09:36
nit: The name of the method and the comment above
Matthew Heaney (Chromium)
2014/02/06 02:25:48
Done.
|
| + |
| + // To test whether a cue has already been pushed downstream. |
|
acolwell GONE FROM CHROMIUM
2014/02/05 19:09:36
nit: This does more than simply test whether the c
Matthew Heaney (Chromium)
2014/02/06 02:25:48
Done.
|
| + bool AddCue(base::TimeDelta start_time); |
| + |
| + // To test whether a cue is present on the active time range, |
| + // without causing any side-effect. If no range is active, Present |
| + // returns -1; if a range is active, it returns 1 if |start_time| is |
| + // in the active range and 0 otherwise. |
| + int Present(base::TimeDelta start_time) const; |
| + |
| + private: |
| + // Describes a range of times for cues that have already been |
| + // pushed downstream. |
| + struct Range { |
| + // The last timestamp of this range. |
| + base::TimeDelta last_time; |
| + |
| + // The number of cues we have detected so far, for this range, |
| + // whose timestamp matches last_time. |
| + int max_count; |
| + |
| + // The number of cues we have seen since the most recent seek, |
| + // whose timestamp matches last_time. |
| + int count; |
| + }; |
| + |
| + // Following a seek, we create a new range if no existing range |
| + // matches the seek time. |
|
acolwell GONE FROM CHROMIUM
2014/02/05 19:09:36
nit: Technically this isn't a seek time. It's the
Matthew Heaney (Chromium)
2014/02/06 02:25:48
Done.
|
| + void NewRange(base::TimeDelta start_time); |
| + |
| + // The collection of time ranges, each of which is bounded |
| + // (inclusive) by the key and Range::last_time. |
| + typedef std::map<base::TimeDelta, Range> RangeMap; |
| + RangeMap range_map_; |
| + |
| + // The time range to which we bind following a seek. |
|
acolwell GONE FROM CHROMIUM
2014/02/05 19:09:36
nit: s/seek/Reset()/
Matthew Heaney (Chromium)
2014/02/06 02:25:48
Done.
|
| + RangeMap::iterator curr_range_itr_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TextRanges); |
| +}; |
| + |
| +} // namespace media |
| + |
| +#endif // MEDIA_BASE_TEXT_RANGES_H_ |