Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Unified Diff: chromecast/media/cma/pipeline/media_pipeline_impl.h

Issue 1372393007: [Chromecast] Upgrade to new CMA backend API (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Address alokp@ comments Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
« no previous file with comments | « chromecast/media/cma/pipeline/media_pipeline_client.h ('k') | chromecast/media/cma/pipeline/media_pipeline_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698