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

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: 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..a5897065092db2c04133fba601120712ea3e1fba 100644
--- a/chromecast/media/cma/pipeline/media_pipeline_impl.h
+++ b/chromecast/media/cma/pipeline/media_pipeline_impl.h
@@ -14,18 +14,20 @@
#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 chromecast {
namespace media {
+
class AudioPipelineImpl;
+struct BrowserAvPipelineClient;
+struct BrowserVideoPipelineClient;
class BrowserCdmCast;
class BufferingController;
-class MediaClockDevice;
-class MediaPipelineBackend;
class VideoPipelineImpl;
-class MediaPipelineImpl : public MediaPipeline {
+class MediaPipelineImpl : public MediaPipelineBackend::Delegate {
public:
MediaPipelineImpl();
~MediaPipelineImpl() override;
@@ -35,26 +37,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 BrowserMediaPipelineClient& client);
+ void SetCdm(int cdm_id);
+
+ // MediaPipelineBackendDelegate implementation:
+ void OnVideoResolutionChanged(MediaPipelineBackend::Decoder* 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 BrowserAvPipelineClient& client,
+ scoped_ptr<CodedFrameProvider> frame_provider,
+ const ::media::PipelineStatusCB& status_cb);
+ void InitializeVideo(const std::vector< ::media::VideoDecoderConfig>& configs,
+ const BrowserVideoPipelineClient& 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);
@@ -71,26 +77,27 @@ class MediaPipelineImpl : public MediaPipeline {
base::ThreadChecker thread_checker_;
- MediaPipelineClient client_;
+ BrowserMediaPipelineClient client_;
scoped_ptr<BufferingController> buffering_controller_;
// 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_;

Powered by Google App Engine
This is Rietveld 408576698