[M120 Migration][MM][HBBTV] Support Parental rating feature
[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) override;
49 #endif
50
51 #if BUILDFLAG(IS_TIZEN_TV)
52   void SetContentMimeType(const std::string& mime_type) override;
53   void SetParentalRatingResult(bool is_pass) override;
54 #endif
55
56   base::TimeDelta GetMediaTime() override;
57
58  private:
59   std::unique_ptr<MojoRenderer> mojo_renderer_;
60 };
61
62 }  // namespace media
63
64 #endif  // MEDIA_MOJO_CLIENTS_MOJO_RENDERER_WRAPPER_H_