1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_
6 #define MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_
10 #include "media/base/renderer.h"
11 #include "media/mojo/clients/mojo_renderer.h"
15 // Simple wrapper around a MojoRenderer.
16 // Provides a default behavior for forwarding all Renderer calls to a
17 // 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 {
22 explicit MojoRendererWrapper(std::unique_ptr<MojoRenderer> mojo_renderer);
24 MojoRendererWrapper(const MojoRendererWrapper&) = delete;
25 MojoRendererWrapper& operator=(const MojoRendererWrapper&) = delete;
27 ~MojoRendererWrapper() override;
29 // Renderer implementation.
30 void Initialize(MediaResource* media_resource,
31 RendererClient* client,
32 PipelineStatusCallback init_cb) override;
33 void SetCdm(CdmContext* cdm_context, CdmAttachedCB cdm_attached_cb) override;
34 void SetLatencyHint(absl::optional<base::TimeDelta> latency_hint) override;
35 void Flush(base::OnceClosure flush_cb) override;
36 #if defined(TIZEN_MULTIMEDIA)
37 void Seek(base::TimeDelta time, base::OnceClosure seek_cb) override;
38 void Suspend() override;
39 void ToggleFullscreenMode(bool is_fullscreen,
40 ToggledFullscreenCB cb) override;
42 void StartPlayingFrom(base::TimeDelta time) override;
43 void SetPlaybackRate(double playback_rate) override;
44 void SetVolume(float volume) override;
46 #if defined(TIZEN_VIDEO_HOLE)
47 void SetVideoHole(bool is_video_hole) override;
48 void SetMediaGeometry(const gfx::RectF& rect,
49 VideoRotation rotation) override;
52 #if BUILDFLAG(IS_TIZEN_TV)
53 using StartDateCB = base::OnceCallback<void(double)>;
54 using GetVideoIdCB = base::OnceCallback<void(int32_t)>;
55 void GetVideoId(GetVideoIdCB cb) override;
56 void SetContentMimeType(const std::string& mime_type) override;
57 void SetParentalRatingResult(bool is_pass) override;
58 void SetActiveTextTrack(int id, bool is_in_band) override;
59 void SetActiveVideoTrack(int index) override;
60 void SetActiveAudioTrack(int index) override;
61 void SetPreferTextLanguage(const std::string& lang) override;
62 void GetStartDate(StartDateCB cb) override;
63 void DestroyPlayerSync(base::OnceClosure cb) override;
66 base::TimeDelta GetMediaTime() override;
69 std::unique_ptr<MojoRenderer> mojo_renderer_;
74 #endif // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_