1dc7c141cb9a9e6915a1ce73cb221b5f64f85235
[platform/framework/web/chromium-efl.git] / media / mojo / clients / mojo_renderer_wrapper.h
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.
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 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 {
21  public:
22   explicit MojoRendererWrapper(std::unique_ptr<MojoRenderer> mojo_renderer);
23
24   MojoRendererWrapper(const MojoRendererWrapper&) = delete;
25   MojoRendererWrapper& operator=(const MojoRendererWrapper&) = delete;
26
27   ~MojoRendererWrapper() override;
28
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;
41 #endif
42   void StartPlayingFrom(base::TimeDelta time) override;
43   void SetPlaybackRate(double playback_rate) override;
44   void SetVolume(float volume) override;
45
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;
50 #endif
51
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;
64 #endif
65
66   base::TimeDelta GetMediaTime() override;
67
68  private:
69   std::unique_ptr<MojoRenderer> mojo_renderer_;
70 };
71
72 }  // namespace media
73
74 #endif  // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_