| Index: media/filters/chunk_demuxer.h
|
| diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h
|
| index ced6d97759128200facc3b07f12b01273b72841e..773f1d52a6b5b18fef7237f561d7f6603334ab08 100644
|
| --- a/media/filters/chunk_demuxer.h
|
| +++ b/media/filters/chunk_demuxer.h
|
| @@ -74,6 +74,12 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
|
| // it can accept a new segment.
|
| void Abort(const std::string& id);
|
|
|
| + // Sets a time |offset| in seconds to be applied to subsequent buffers
|
| + // appended to the source buffer assicated with |id|. Returns true if the
|
| + // offset is set properly, false if the offset cannot be applied because we're
|
| + // in the middle of parsing a media segment.
|
| + bool SetTimestampOffset(const std::string& id, double offset);
|
| +
|
| // Signals an EndOfStream request.
|
| // Returns false if called in an unexpected state or if there is a gap between
|
| // the current position and the end of the buffered data.
|
| @@ -117,11 +123,19 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
|
| bool OnNeedKey(scoped_array<uint8> init_data, int init_data_size);
|
| void OnNewMediaSegment(const std::string& source_id,
|
| base::TimeDelta start_timestamp);
|
| + void OnEndOfMediaSegment(const std::string& source_id);
|
|
|
| // Computes the intersection between the video & audio
|
| // buffered ranges.
|
| Ranges<base::TimeDelta> ComputeIntersection() const;
|
|
|
| + // Applies |time_offset| to the timestamps of |buffers|.
|
| + void AdjustBufferTimestamps(const StreamParser::BufferQueue& buffers,
|
| + base::TimeDelta timestamp_offset);
|
| +
|
| + // Returns true if |source_id| is valid, false otherwise.
|
| + bool IsValidId(const std::string& source_id) const;
|
| +
|
| mutable base::Lock lock_;
|
| State state_;
|
|
|
| @@ -138,6 +152,14 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer {
|
| typedef std::map<std::string, StreamParser*> StreamParserMap;
|
| StreamParserMap stream_parser_map_;
|
|
|
| + // Contains state belonging to a source id.
|
| + struct SourceInfo {
|
| + base::TimeDelta timestamp_offset;
|
| + bool can_update_offset;
|
| + };
|
| + typedef std::map<std::string, SourceInfo> SourceInfoMap;
|
| + SourceInfoMap source_info_map_;
|
| +
|
| // Used to ensure that (1) config data matches the type and codec provided in
|
| // AddId(), (2) only 1 audio and 1 video sources are added, and (3) ids may be
|
| // removed with RemoveID() but can not be re-added (yet).
|
|
|