1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_ 6 #define MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_ 7 8 #include <memory> 9 10 #include "media/base/renderer.h" 11 #include "media/mojo/clients/mojo_renderer.h" 12 13 namespace media { 14 15 // Simple wrapper around a MojoRenderer. 16 // Provides a default behavior for forwarding all media::Renderer calls to a 17 // media::Renderer instance in a different process, through |mojo_renderer_|. 18 // Used as a base class to reduce boiler plate code for derived types, which can 19 // override only the methods they need to specialize. 20 class MojoRendererWrapper : public Renderer { 21 public: 22 explicit MojoRendererWrapper(std::unique_ptr<MojoRenderer> mojo_renderer); 23 ~MojoRendererWrapper() override; 24 25 // Renderer implementation. 26 void Initialize(MediaResource* media_resource, 27 media::RendererClient* client, 28 PipelineStatusCallback init_cb) override; 29 void SetCdm(CdmContext* cdm_context, CdmAttachedCB cdm_attached_cb) override; 30 void SetLatencyHint(base::Optional<base::TimeDelta> latency_hint) override; 31 void Flush(base::OnceClosure flush_cb) override; 32 void StartPlayingFrom(base::TimeDelta time) override; 33 void SetPlaybackRate(double playback_rate) override; 34 void SetVolume(float volume) override; 35 base::TimeDelta GetMediaTime() override; 36 37 private: 38 std::unique_ptr<MojoRenderer> mojo_renderer_; 39 40 private: 41 DISALLOW_COPY_AND_ASSIGN(MojoRendererWrapper); 42 }; 43 44 } // namespace media 45 46 #endif // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_ 47