| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 a Demuxer that can switch among different data sources mid-stream. | 5 // Implements a Demuxer that can switch among different data sources mid-stream. |
| 6 // Uses FFmpegDemuxer under the covers, so see the caveats at the top of | 6 // Uses FFmpegDemuxer under the covers, so see the caveats at the top of |
| 7 // ffmpeg_demuxer.h. | 7 // ffmpeg_demuxer.h. |
| 8 | 8 |
| 9 #ifndef MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ | 9 #ifndef MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ |
| 10 #define MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ | 10 #define MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 235 |
| 236 // AdaptiveDemuxerFactory wraps an underlying DemuxerFactory that knows how to | 236 // AdaptiveDemuxerFactory wraps an underlying DemuxerFactory that knows how to |
| 237 // build demuxers for a single URL, and implements a primitive (for now) version | 237 // build demuxers for a single URL, and implements a primitive (for now) version |
| 238 // of multi-file manifests. The manifest is encoded in the |url| parameter to | 238 // of multi-file manifests. The manifest is encoded in the |url| parameter to |
| 239 // Build() as: | 239 // Build() as: |
| 240 // x-adaptive:<initial_audio_index>:<initial_video_index>:<URL>[^<URL>]* where | 240 // x-adaptive:<initial_audio_index>:<initial_video_index>:<URL>[^<URL>]* where |
| 241 // <URL>'s are "real" media URLs which are passed to the underlying | 241 // <URL>'s are "real" media URLs which are passed to the underlying |
| 242 // DemuxerFactory's Build() method individually. For backward-compatibility, | 242 // DemuxerFactory's Build() method individually. For backward-compatibility, |
| 243 // the manifest URL may also simply be a regular URL in which case an implicit | 243 // the manifest URL may also simply be a regular URL in which case an implicit |
| 244 // "x-adaptive:0:0:" is prepended. | 244 // "x-adaptive:0:0:" is prepended. |
| 245 class MEDIA_EXPORT AdaptiveDemuxerFactory : public DemuxerFactory { | 245 class AdaptiveDemuxerFactory : public DemuxerFactory { |
| 246 public: | 246 public: |
| 247 // Takes a reference to |demuxer_factory|. | 247 // Takes a reference to |demuxer_factory|. |
| 248 AdaptiveDemuxerFactory(DemuxerFactory* delegate_factory); | 248 AdaptiveDemuxerFactory(DemuxerFactory* delegate_factory); |
| 249 virtual ~AdaptiveDemuxerFactory(); | 249 virtual ~AdaptiveDemuxerFactory(); |
| 250 | 250 |
| 251 // DemuxerFactory methods. | 251 // DemuxerFactory methods. |
| 252 // If any of the underlying Demuxers encounter construction errors, only the | 252 // If any of the underlying Demuxers encounter construction errors, only the |
| 253 // first one (in manifest order) will get reported back in |cb|. | 253 // first one (in manifest order) will get reported back in |cb|. |
| 254 virtual void Build(const std::string& url, BuildCallback* cb); | 254 virtual void Build(const std::string& url, BuildCallback* cb); |
| 255 virtual DemuxerFactory* Clone() const; | 255 virtual DemuxerFactory* Clone() const; |
| 256 | 256 |
| 257 private: | 257 private: |
| 258 scoped_ptr<DemuxerFactory> delegate_factory_; | 258 scoped_ptr<DemuxerFactory> delegate_factory_; |
| 259 | 259 |
| 260 DISALLOW_IMPLICIT_CONSTRUCTORS(AdaptiveDemuxerFactory); | 260 DISALLOW_IMPLICIT_CONSTRUCTORS(AdaptiveDemuxerFactory); |
| 261 }; | 261 }; |
| 262 | 262 |
| 263 // See AdaptiveDemuxerFactory's class-level comment for |url|'s format. | |
| 264 MEDIA_EXPORT bool ParseAdaptiveUrl( | |
| 265 const std::string& url, int* audio_index, int* video_index, | |
| 266 std::vector<std::string>* urls); | |
| 267 | |
| 268 } // namespace media | 263 } // namespace media |
| 269 | 264 |
| 270 #endif // MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ | 265 #endif // MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ |
| OLD | NEW |