| 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_;
 | 
| 
 |