OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef MEDIA_FILTERS_CHUNK_DEMUXER_H_ | 5 #ifndef MEDIA_FILTERS_CHUNK_DEMUXER_H_ |
6 #define MEDIA_FILTERS_CHUNK_DEMUXER_H_ | 6 #define MEDIA_FILTERS_CHUNK_DEMUXER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 void UnmarkEndOfStream(); | 100 void UnmarkEndOfStream(); |
101 | 101 |
102 // DemuxerStream methods. | 102 // DemuxerStream methods. |
103 void Read(const ReadCB& read_cb) override; | 103 void Read(const ReadCB& read_cb) override; |
104 Type type() const override; | 104 Type type() const override; |
105 Liveness liveness() const override; | 105 Liveness liveness() const override; |
106 AudioDecoderConfig audio_decoder_config() override; | 106 AudioDecoderConfig audio_decoder_config() override; |
107 VideoDecoderConfig video_decoder_config() override; | 107 VideoDecoderConfig video_decoder_config() override; |
108 bool SupportsConfigChanges() override; | 108 bool SupportsConfigChanges() override; |
109 VideoRotation video_rotation() override; | 109 VideoRotation video_rotation() override; |
| 110 bool enabled() const override; |
| 111 void set_enabled(bool enabled, base::TimeDelta timestamp) override; |
| 112 void SetStreamRestartedCB(const StreamRestartedCB& cb) override; |
110 | 113 |
111 // Returns the text track configuration. It is an error to call this method | 114 // Returns the text track configuration. It is an error to call this method |
112 // if type() != TEXT. | 115 // if type() != TEXT. |
113 TextTrackConfig text_track_config(); | 116 TextTrackConfig text_track_config(); |
114 | 117 |
115 // Sets the memory limit, in bytes, on the SourceBufferStream. | 118 // Sets the memory limit, in bytes, on the SourceBufferStream. |
116 void SetStreamMemoryLimit(size_t memory_limit); | 119 void SetStreamMemoryLimit(size_t memory_limit); |
117 | 120 |
118 bool supports_partial_append_window_trimming() const { | 121 bool supports_partial_append_window_trimming() const { |
119 return partial_append_window_trimming_enabled_; | 122 return partial_append_window_trimming_enabled_; |
(...skipping 23 matching lines...) Expand all Loading... |
143 | 146 |
144 std::unique_ptr<SourceBufferStream> stream_; | 147 std::unique_ptr<SourceBufferStream> stream_; |
145 | 148 |
146 const MediaTrack::Id media_track_id_; | 149 const MediaTrack::Id media_track_id_; |
147 | 150 |
148 mutable base::Lock lock_; | 151 mutable base::Lock lock_; |
149 State state_; | 152 State state_; |
150 ReadCB read_cb_; | 153 ReadCB read_cb_; |
151 bool splice_frames_enabled_; | 154 bool splice_frames_enabled_; |
152 bool partial_append_window_trimming_enabled_; | 155 bool partial_append_window_trimming_enabled_; |
| 156 bool is_enabled_; |
| 157 StreamRestartedCB stream_restarted_cb_; |
153 | 158 |
154 DISALLOW_IMPLICIT_CONSTRUCTORS(ChunkDemuxerStream); | 159 DISALLOW_IMPLICIT_CONSTRUCTORS(ChunkDemuxerStream); |
155 }; | 160 }; |
156 | 161 |
157 // Demuxer implementation that allows chunks of media data to be passed | 162 // Demuxer implementation that allows chunks of media data to be passed |
158 // from JavaScript to the media stack. | 163 // from JavaScript to the media stack. |
159 class MEDIA_EXPORT ChunkDemuxer : public Demuxer { | 164 class MEDIA_EXPORT ChunkDemuxer : public Demuxer { |
160 public: | 165 public: |
161 enum Status { | 166 enum Status { |
162 kOk, // ID added w/o error. | 167 kOk, // ID added w/o error. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 void SetTracksWatcher(const std::string& id, | 220 void SetTracksWatcher(const std::string& id, |
216 const MediaTracksUpdatedCB& tracks_updated_cb); | 221 const MediaTracksUpdatedCB& tracks_updated_cb); |
217 | 222 |
218 // Removed an ID & associated resources that were previously added with | 223 // Removed an ID & associated resources that were previously added with |
219 // AddId(). | 224 // AddId(). |
220 void RemoveId(const std::string& id); | 225 void RemoveId(const std::string& id); |
221 | 226 |
222 // Gets the currently buffered ranges for the specified ID. | 227 // Gets the currently buffered ranges for the specified ID. |
223 Ranges<base::TimeDelta> GetBufferedRanges(const std::string& id) const; | 228 Ranges<base::TimeDelta> GetBufferedRanges(const std::string& id) const; |
224 | 229 |
| 230 void OnEnabledAudioTracksChanged(const std::vector<MediaTrack::Id>& track_ids, |
| 231 base::TimeDelta currTime) override; |
| 232 // |track_ids| is either empty or contains a single video track id. |
| 233 void OnSelectedVideoTrackChanged(const std::vector<MediaTrack::Id>& track_ids, |
| 234 base::TimeDelta currTime) override; |
| 235 |
225 // Appends media data to the source buffer associated with |id|, applying | 236 // Appends media data to the source buffer associated with |id|, applying |
226 // and possibly updating |*timestamp_offset| during coded frame processing. | 237 // and possibly updating |*timestamp_offset| during coded frame processing. |
227 // |append_window_start| and |append_window_end| correspond to the MSE spec's | 238 // |append_window_start| and |append_window_end| correspond to the MSE spec's |
228 // similarly named source buffer attributes that are used in coded frame | 239 // similarly named source buffer attributes that are used in coded frame |
229 // processing. Returns true on success, false if the caller needs to run the | 240 // processing. Returns true on success, false if the caller needs to run the |
230 // append error algorithm with decode error parameter set to true. | 241 // append error algorithm with decode error parameter set to true. |
231 bool AppendData(const std::string& id, | 242 bool AppendData(const std::string& id, |
232 const uint8_t* data, | 243 const uint8_t* data, |
233 size_t length, | 244 size_t length, |
234 base::TimeDelta append_window_start, | 245 base::TimeDelta append_window_start, |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 std::string source_id_video_; | 429 std::string source_id_video_; |
419 | 430 |
420 // Indicates that splice frame generation is enabled. | 431 // Indicates that splice frame generation is enabled. |
421 const bool splice_frames_enabled_; | 432 const bool splice_frames_enabled_; |
422 | 433 |
423 // Accumulate, by type, detected track counts across the SourceBuffers. | 434 // Accumulate, by type, detected track counts across the SourceBuffers. |
424 int detected_audio_track_count_; | 435 int detected_audio_track_count_; |
425 int detected_video_track_count_; | 436 int detected_video_track_count_; |
426 int detected_text_track_count_; | 437 int detected_text_track_count_; |
427 | 438 |
| 439 std::map<MediaTrack::Id, const DemuxerStream*> track_id_to_demux_stream_map_; |
| 440 |
428 DISALLOW_COPY_AND_ASSIGN(ChunkDemuxer); | 441 DISALLOW_COPY_AND_ASSIGN(ChunkDemuxer); |
429 }; | 442 }; |
430 | 443 |
431 } // namespace media | 444 } // namespace media |
432 | 445 |
433 #endif // MEDIA_FILTERS_CHUNK_DEMUXER_H_ | 446 #endif // MEDIA_FILTERS_CHUNK_DEMUXER_H_ |
OLD | NEW |