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 // Implements the Demuxer interface using FFmpeg's libavformat. At this time | 5 // Implements the Demuxer interface using FFmpeg's libavformat. At this time |
6 // will support demuxing any audio/video format thrown at it. The streams | 6 // will support demuxing any audio/video format thrown at it. The streams |
7 // output mime types audio/x-ffmpeg and video/x-ffmpeg and include an integer | 7 // output mime types audio/x-ffmpeg and video/x-ffmpeg and include an integer |
8 // key FFmpegCodecID which contains the CodecID enumeration value. The CodecIDs | 8 // key FFmpegCodecID which contains the CodecID enumeration value. The CodecIDs |
9 // can be used to create and initialize the corresponding FFmpeg decoder. | 9 // can be used to create and initialize the corresponding FFmpeg decoder. |
10 // | 10 // |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 Type type() const override; | 109 Type type() const override; |
110 Liveness liveness() const override; | 110 Liveness liveness() const override; |
111 void Read(const ReadCB& read_cb) override; | 111 void Read(const ReadCB& read_cb) override; |
112 void EnableBitstreamConverter() override; | 112 void EnableBitstreamConverter() override; |
113 bool SupportsConfigChanges() override; | 113 bool SupportsConfigChanges() override; |
114 AudioDecoderConfig audio_decoder_config() override; | 114 AudioDecoderConfig audio_decoder_config() override; |
115 VideoDecoderConfig video_decoder_config() override; | 115 VideoDecoderConfig video_decoder_config() override; |
116 VideoRotation video_rotation() override; | 116 VideoRotation video_rotation() override; |
117 bool enabled() const override; | 117 bool enabled() const override; |
118 void set_enabled(bool enabled, base::TimeDelta timestamp) override; | 118 void set_enabled(bool enabled, base::TimeDelta timestamp) override; |
119 void SetStreamStatusChangeCB(const StreamStatusChangeCB& cb) override; | 119 |
| 120 void SetStreamStatusChangeCB(const StreamStatusChangeCB& cb); |
120 | 121 |
121 void SetLiveness(Liveness liveness); | 122 void SetLiveness(Liveness liveness); |
122 | 123 |
123 // Returns the range of buffered data in this stream. | 124 // Returns the range of buffered data in this stream. |
124 Ranges<base::TimeDelta> GetBufferedRanges() const; | 125 Ranges<base::TimeDelta> GetBufferedRanges() const; |
125 | 126 |
126 // Returns true if this stream has capacity for additional data. | 127 // Returns true if this stream has capacity for additional data. |
127 bool HasAvailableCapacity(); | 128 bool HasAvailableCapacity(); |
128 | 129 |
129 // Returns the total buffer size FFMpegDemuxerStream is holding onto. | 130 // Returns the total buffer size FFMpegDemuxerStream is holding onto. |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 std::string GetDisplayName() const override; | 212 std::string GetDisplayName() const override; |
212 void Initialize(DemuxerHost* host, | 213 void Initialize(DemuxerHost* host, |
213 const PipelineStatusCB& status_cb, | 214 const PipelineStatusCB& status_cb, |
214 bool enable_text_tracks) override; | 215 bool enable_text_tracks) override; |
215 void AbortPendingReads() override; | 216 void AbortPendingReads() override; |
216 void Stop() override; | 217 void Stop() override; |
217 void StartWaitingForSeek(base::TimeDelta seek_time) override; | 218 void StartWaitingForSeek(base::TimeDelta seek_time) override; |
218 void CancelPendingSeek(base::TimeDelta seek_time) override; | 219 void CancelPendingSeek(base::TimeDelta seek_time) override; |
219 void Seek(base::TimeDelta time, const PipelineStatusCB& cb) override; | 220 void Seek(base::TimeDelta time, const PipelineStatusCB& cb) override; |
220 base::Time GetTimelineOffset() const override; | 221 base::Time GetTimelineOffset() const override; |
221 DemuxerStream* GetStream(DemuxerStream::Type type) override; | 222 std::vector<DemuxerStream*> GetStreams() override; |
| 223 void SetStreamStatusChangeCB(const StreamStatusChangeCB& cb) override; |
222 base::TimeDelta GetStartTime() const override; | 224 base::TimeDelta GetStartTime() const override; |
223 int64_t GetMemoryUsage() const override; | 225 int64_t GetMemoryUsage() const override; |
224 | 226 |
225 // Calls |encrypted_media_init_data_cb_| with the initialization data | 227 // Calls |encrypted_media_init_data_cb_| with the initialization data |
226 // encountered in the file. | 228 // encountered in the file. |
227 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, | 229 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, |
228 const std::string& encryption_key_id); | 230 const std::string& encryption_key_id); |
229 | 231 |
230 // Allow FFmpegDemuxerStream to notify us when there is updated information | 232 // Allow FFmpegDemuxerStream to notify us when there is updated information |
231 // about capacity and what buffered data is available. | 233 // about capacity and what buffered data is available. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 | 271 |
270 // Returns true if the maximum allowed memory usage has been reached. | 272 // Returns true if the maximum allowed memory usage has been reached. |
271 bool IsMaxMemoryUsageReached() const; | 273 bool IsMaxMemoryUsageReached() const; |
272 | 274 |
273 // Signal all FFmpegDemuxerStreams that the stream has ended. | 275 // Signal all FFmpegDemuxerStreams that the stream has ended. |
274 void StreamHasEnded(); | 276 void StreamHasEnded(); |
275 | 277 |
276 // Called by |url_protocol_| whenever |data_source_| returns a read error. | 278 // Called by |url_protocol_| whenever |data_source_| returns a read error. |
277 void OnDataSourceError(); | 279 void OnDataSourceError(); |
278 | 280 |
279 // Returns the stream from |streams_| that matches |type| as an | 281 // Returns the first stream from |streams_| that matches |type| as an |
280 // FFmpegDemuxerStream. | 282 // FFmpegDemuxerStream and is enabled. |
281 FFmpegDemuxerStream* GetFFmpegStream(DemuxerStream::Type type) const; | 283 FFmpegDemuxerStream* GetFirstEnabledFFmpegStream( |
| 284 DemuxerStream::Type type) const; |
282 | 285 |
283 // Called after the streams have been collected from the media, to allow | 286 // Called after the streams have been collected from the media, to allow |
284 // the text renderer to bind each text stream to the cue rendering engine. | 287 // the text renderer to bind each text stream to the cue rendering engine. |
285 void AddTextStreams(); | 288 void AddTextStreams(); |
286 | 289 |
287 void SetLiveness(DemuxerStream::Liveness liveness); | 290 void SetLiveness(DemuxerStream::Liveness liveness); |
288 | 291 |
289 DemuxerHost* host_; | 292 DemuxerHost* host_; |
290 | 293 |
291 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 294 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 base::WeakPtr<FFmpegDemuxer> weak_this_; | 369 base::WeakPtr<FFmpegDemuxer> weak_this_; |
367 base::WeakPtrFactory<FFmpegDemuxer> cancel_pending_seek_factory_; | 370 base::WeakPtrFactory<FFmpegDemuxer> cancel_pending_seek_factory_; |
368 base::WeakPtrFactory<FFmpegDemuxer> weak_factory_; | 371 base::WeakPtrFactory<FFmpegDemuxer> weak_factory_; |
369 | 372 |
370 DISALLOW_COPY_AND_ASSIGN(FFmpegDemuxer); | 373 DISALLOW_COPY_AND_ASSIGN(FFmpegDemuxer); |
371 }; | 374 }; |
372 | 375 |
373 } // namespace media | 376 } // namespace media |
374 | 377 |
375 #endif // MEDIA_FILTERS_FFMPEG_DEMUXER_H_ | 378 #endif // MEDIA_FILTERS_FFMPEG_DEMUXER_H_ |
OLD | NEW |