| 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 // The pipeline is the public API clients use for playing back media. Clients | 5 // The pipeline is the public API clients use for playing back media. Clients |
| 6 // provide a filter collection containing the filters they want the pipeline to | 6 // provide a filter collection containing the filters they want the pipeline to |
| 7 // use to render media. | 7 // use to render media. |
| 8 | 8 |
| 9 #ifndef MEDIA_BASE_PIPELINE_H_ | 9 #ifndef MEDIA_BASE_PIPELINE_H_ |
| 10 #define MEDIA_BASE_PIPELINE_H_ | 10 #define MEDIA_BASE_PIPELINE_H_ |
| 11 | 11 |
| 12 #include <string> | 12 #include <string> |
| 13 | 13 |
| 14 #include "base/callback.h" | |
| 15 #include "media/base/filters.h" | 14 #include "media/base/filters.h" |
| 16 #include "media/base/pipeline_status.h" | 15 #include "media/base/pipeline_status.h" |
| 17 | 16 |
| 18 namespace base { | 17 namespace base { |
| 19 class TimeDelta; | 18 class TimeDelta; |
| 20 } | 19 } |
| 21 | 20 |
| 22 namespace media { | 21 namespace media { |
| 23 | 22 |
| 24 extern const char kRawMediaScheme[]; | 23 extern const char kRawMediaScheme[]; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 39 | 38 |
| 40 class FilterCollection; | 39 class FilterCollection; |
| 41 | 40 |
| 42 class Pipeline : public base::RefCountedThreadSafe<Pipeline> { | 41 class Pipeline : public base::RefCountedThreadSafe<Pipeline> { |
| 43 public: | 42 public: |
| 44 // Initializes pipeline. Pipeline takes ownership of all callbacks passed | 43 // Initializes pipeline. Pipeline takes ownership of all callbacks passed |
| 45 // into this method. | 44 // into this method. |
| 46 // |ended_callback| will be executed when the media reaches the end. | 45 // |ended_callback| will be executed when the media reaches the end. |
| 47 // |error_callback_| will be executed upon an error in the pipeline. | 46 // |error_callback_| will be executed upon an error in the pipeline. |
| 48 // |network_callback_| will be executed when there's a network event. | 47 // |network_callback_| will be executed when there's a network event. |
| 49 virtual void Init(PipelineStatusCallback* ended_callback, | 48 virtual void Init(const PipelineStatusCB& ended_callback, |
| 50 PipelineStatusCallback* error_callback, | 49 const PipelineStatusCB& error_callback, |
| 51 PipelineStatusCallback* network_callback) = 0; | 50 const PipelineStatusCB& network_callback) = 0; |
| 52 | 51 |
| 53 // Build a pipeline to render the given URL using the given filter collection | 52 // Build a pipeline to render the given URL using the given filter collection |
| 54 // to construct a filter chain. Returns true if successful, false otherwise | 53 // to construct a filter chain. Returns true if successful, false otherwise |
| 55 // (i.e., pipeline already started). Note that a return value of true | 54 // (i.e., pipeline already started). Note that a return value of true |
| 56 // only indicates that the initialization process has started successfully. | 55 // only indicates that the initialization process has started successfully. |
| 57 // Pipeline initialization is an inherently asynchronous process. Clients can | 56 // Pipeline initialization is an inherently asynchronous process. Clients can |
| 58 // either poll the IsInitialized() method (discouraged) or use the | 57 // either poll the IsInitialized() method (discouraged) or use the |
| 59 // |start_callback| as described below. | 58 // |start_callback| as described below. |
| 60 // | 59 // |
| 61 // This method is asynchronous and can execute a callback when completed. | 60 // This method is asynchronous and can execute a callback when completed. |
| 62 // If the caller provides a |start_callback|, it will be called when the | 61 // If the caller provides a |start_callback|, it will be called when the |
| 63 // pipeline initialization completes. | 62 // pipeline initialization completes. |
| 64 virtual bool Start(FilterCollection* filter_collection, | 63 virtual bool Start(FilterCollection* filter_collection, |
| 65 const std::string& url, | 64 const std::string& url, |
| 66 PipelineStatusCallback* start_callback) = 0; | 65 const PipelineStatusCB& start_callback) = 0; |
| 67 | 66 |
| 68 // Asynchronously stops the pipeline and resets it to an uninitialized state. | 67 // Asynchronously stops the pipeline and resets it to an uninitialized state. |
| 69 // If provided, |stop_callback| will be executed when the pipeline has been | 68 // If provided, |stop_callback| will be executed when the pipeline has been |
| 70 // completely torn down and reset to an uninitialized state. It is acceptable | 69 // completely torn down and reset to an uninitialized state. It is acceptable |
| 71 // to call Start() again once the callback has finished executing. | 70 // to call Start() again once the callback has finished executing. |
| 72 // | 71 // |
| 73 // Stop() must be called before destroying the pipeline. Clients can | 72 // Stop() must be called before destroying the pipeline. Clients can |
| 74 // determine whether Stop() must be called by checking IsRunning(). | 73 // determine whether Stop() must be called by checking IsRunning(). |
| 75 // | 74 // |
| 76 // TODO(scherkus): ideally clients would destroy the pipeline after calling | 75 // TODO(scherkus): ideally clients would destroy the pipeline after calling |
| 77 // Stop() and create a new pipeline as needed. | 76 // Stop() and create a new pipeline as needed. |
| 78 virtual void Stop(PipelineStatusCallback* stop_callback) = 0; | 77 virtual void Stop(const PipelineStatusCB& stop_callback) = 0; |
| 79 | 78 |
| 80 // Attempt to seek to the position specified by time. |seek_callback| will be | 79 // Attempt to seek to the position specified by time. |seek_callback| will be |
| 81 // executed when the all filters in the pipeline have processed the seek. | 80 // executed when the all filters in the pipeline have processed the seek. |
| 82 // | 81 // |
| 83 // Clients are expected to call GetCurrentTime() to check whether the seek | 82 // Clients are expected to call GetCurrentTime() to check whether the seek |
| 84 // succeeded. | 83 // succeeded. |
| 85 virtual void Seek(base::TimeDelta time, | 84 virtual void Seek(base::TimeDelta time, |
| 86 PipelineStatusCallback* seek_callback) = 0; | 85 const PipelineStatusCB& seek_callback) = 0; |
| 87 | 86 |
| 88 // Returns true if the pipeline has been started via Start(). If IsRunning() | 87 // Returns true if the pipeline has been started via Start(). If IsRunning() |
| 89 // returns true, it is expected that Stop() will be called before destroying | 88 // returns true, it is expected that Stop() will be called before destroying |
| 90 // the pipeline. | 89 // the pipeline. |
| 91 virtual bool IsRunning() const = 0; | 90 virtual bool IsRunning() const = 0; |
| 92 | 91 |
| 93 // Returns true if the pipeline has been started and fully initialized to a | 92 // Returns true if the pipeline has been started and fully initialized to a |
| 94 // point where playback controls will be respected. Note that it is possible | 93 // point where playback controls will be respected. Note that it is possible |
| 95 // for a pipeline to be started but not initialized (i.e., an error occurred). | 94 // for a pipeline to be started but not initialized (i.e., an error occurred). |
| 96 virtual bool IsInitialized() const = 0; | 95 virtual bool IsInitialized() const = 0; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 166 |
| 168 protected: | 167 protected: |
| 169 // Only allow ourselves to be deleted by reference counting. | 168 // Only allow ourselves to be deleted by reference counting. |
| 170 friend class base::RefCountedThreadSafe<Pipeline>; | 169 friend class base::RefCountedThreadSafe<Pipeline>; |
| 171 virtual ~Pipeline() {} | 170 virtual ~Pipeline() {} |
| 172 }; | 171 }; |
| 173 | 172 |
| 174 } // namespace media | 173 } // namespace media |
| 175 | 174 |
| 176 #endif // MEDIA_BASE_PIPELINE_H_ | 175 #endif // MEDIA_BASE_PIPELINE_H_ |
| OLD | NEW |