Index: chromecast/media/cma/pipeline/media_pipeline_impl.h |
diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.h b/chromecast/media/cma/pipeline/media_pipeline_impl.h |
index e2dba4fa3dc6634538d46d5e928c819bd97ef99d..92453cd2539d75e4f8db29c8079bcb9ffc2856eb 100644 |
--- a/chromecast/media/cma/pipeline/media_pipeline_impl.h |
+++ b/chromecast/media/cma/pipeline/media_pipeline_impl.h |
@@ -12,20 +12,26 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/threading/thread_checker.h" |
#include "chromecast/media/cma/pipeline/load_type.h" |
-#include "chromecast/media/cma/pipeline/media_pipeline.h" |
#include "chromecast/media/cma/pipeline/media_pipeline_client.h" |
+#include "chromecast/public/media/media_pipeline_backend.h" |
#include "media/base/serial_runner.h" |
+namespace media { |
+class AudioDecoderConfig; |
+class VideoDecoderConfig; |
+} // namespace media |
+ |
namespace chromecast { |
namespace media { |
class AudioPipelineImpl; |
+struct AvPipelineClient; |
+struct VideoPipelineClient; |
class BrowserCdmCast; |
class BufferingController; |
-class MediaClockDevice; |
-class MediaPipelineBackend; |
+class CodedFrameProvider; |
class VideoPipelineImpl; |
-class MediaPipelineImpl : public MediaPipeline { |
+class MediaPipelineImpl : public MediaPipelineBackend::Delegate { |
public: |
MediaPipelineImpl(); |
~MediaPipelineImpl() override; |
@@ -35,26 +41,30 @@ class MediaPipelineImpl : public MediaPipeline { |
void Initialize(LoadType load_type, |
scoped_ptr<MediaPipelineBackend> media_pipeline_backend); |
- // MediaPipeline implementation. |
- void SetClient(const MediaPipelineClient& client) override; |
- void SetCdm(int cdm_id) override; |
- AudioPipeline* GetAudioPipeline() const override; |
- VideoPipeline* GetVideoPipeline() const override; |
- void InitializeAudio( |
- const ::media::AudioDecoderConfig& config, |
- scoped_ptr<CodedFrameProvider> frame_provider, |
- const ::media::PipelineStatusCB& status_cb) override; |
- void InitializeVideo( |
- const std::vector<::media::VideoDecoderConfig>& configs, |
- scoped_ptr<CodedFrameProvider> frame_provider, |
- const ::media::PipelineStatusCB& status_cb) override; |
- void StartPlayingFrom(base::TimeDelta time) override; |
- void Flush(const ::media::PipelineStatusCB& status_cb) override; |
- void Stop() override; |
- void SetPlaybackRate(double playback_rate) override; |
- |
- AudioPipelineImpl* GetAudioPipelineImpl() const; |
- VideoPipelineImpl* GetVideoPipelineImpl() const; |
+ void SetClient(const MediaPipelineClient& client); |
+ void SetCdm(int cdm_id); |
+ |
+ // MediaPipelineBackendDelegate implementation: |
+ void OnVideoResolutionChanged(MediaPipelineBackend::VideoDecoder* decoder, |
+ const Size& size) override; |
+ void OnPushBufferComplete(MediaPipelineBackend::Decoder* decoder, |
+ MediaPipelineBackend::BufferStatus status) override; |
+ void OnEndOfStream(MediaPipelineBackend::Decoder* decoder) override; |
+ void OnDecoderError(MediaPipelineBackend::Decoder* decoder) override; |
+ |
+ void InitializeAudio(const ::media::AudioDecoderConfig& config, |
+ const AvPipelineClient& client, |
+ scoped_ptr<CodedFrameProvider> frame_provider, |
+ const ::media::PipelineStatusCB& status_cb); |
+ void InitializeVideo(const std::vector< ::media::VideoDecoderConfig>& configs, |
+ const VideoPipelineClient& client, |
+ scoped_ptr<CodedFrameProvider> frame_provider, |
+ const ::media::PipelineStatusCB& status_cb); |
+ void StartPlayingFrom(base::TimeDelta time); |
+ void Flush(const ::media::PipelineStatusCB& status_cb); |
+ void Stop(); |
+ void SetPlaybackRate(double playback_rate); |
+ void SetVolume(float volume); |
void SetCdm(BrowserCdmCast* cdm); |
@@ -77,20 +87,21 @@ class MediaPipelineImpl : public MediaPipeline { |
// Interface with the underlying hardware media pipeline. |
scoped_ptr<MediaPipelineBackend> media_pipeline_backend_; |
- MediaClockDevice* clock_device_; |
+ MediaPipelineBackend::AudioDecoder* audio_decoder_; |
+ MediaPipelineBackend::VideoDecoder* video_decoder_; |
+ bool backend_initialized_; |
bool has_audio_; |
bool has_video_; |
scoped_ptr<AudioPipelineImpl> audio_pipeline_; |
scoped_ptr<VideoPipelineImpl> video_pipeline_; |
scoped_ptr< ::media::SerialRunner> pending_flush_callbacks_; |
+ // Whether or not the backend is currently paused. |
+ bool paused_; |
// Playback rate set by the upper layer. |
float target_playback_rate_; |
- // Indicate a possible re-buffering phase. |
- bool is_buffering_; |
- |
// The media time is retrieved at regular intervals. |
// Indicate whether time update is enabled. |
bool enable_time_update_; |