8d5b85a5ac1f08aed128fe8946e09018b8f69c4a
[platform/framework/web/crosswalk-tizen.git] /
1 // Copyright 2016 Samsung Electronics. 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 CONTENT_BROWSER_RENDERER_HOST_PEPPER_MEDIA_PLAYER_PEPPER_MEDIA_PLAYER_PRIVATE_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_PEPPER_MEDIA_PLAYER_PEPPER_MEDIA_PLAYER_PRIVATE_H_
7
8 #include <memory>
9 #include <string>
10 #include <vector>
11 #include <utility>
12
13 #include "base/callback.h"
14 #include "base/memory/ref_counted.h"
15 #include "ppapi/c/pp_bool.h"
16 #include "ppapi/c/pp_rect.h"
17 #include "ppapi/c/pp_size.h"
18 #include "ppapi/c/pp_time.h"
19 #include "ppapi/c/samsung/pp_media_player_samsung.h"
20
21 namespace content {
22
23 class BufferingListenerPrivate;
24 class DRMListenerPrivate;
25 class MediaEventsListenerPrivate;
26 class PepperMediaDataSourcePrivate;
27 class PepperMediaPlayerPrivateFactory;
28 class SubtitleListenerPrivate;
29
30 // Platform depended part of Media Player PPAPI implementation,
31 // see ppapi/api/samsung/ppb_media_player_samsung.idl.
32
33 class PepperMediaPlayerPrivate
34     : public base::RefCountedThreadSafe<PepperMediaPlayerPrivate> {
35  public:
36   virtual void SetBufferingListener(
37       std::unique_ptr<BufferingListenerPrivate>) = 0;
38   virtual void SetDRMListener(std::unique_ptr<DRMListenerPrivate>) = 0;
39   virtual void SetMediaEventsListener(
40       std::unique_ptr<MediaEventsListenerPrivate>) = 0;
41   virtual void SetSubtitleListener(
42       std::unique_ptr<SubtitleListenerPrivate>) = 0;
43
44   virtual void AttachDataSource(
45       const scoped_refptr<PepperMediaDataSourcePrivate>&,
46       const base::Callback<void(int32_t)>& callback) = 0;
47
48   virtual void Play(const base::Callback<void(int32_t)>& callback) = 0;
49   virtual void Pause(const base::Callback<void(int32_t)>& callback) = 0;
50   virtual void Stop(const base::Callback<void(int32_t)>& callback) = 0;
51   virtual void Seek(PP_TimeTicks,
52                     const base::Callback<void(int32_t)>& callback) = 0;
53
54   virtual void SetPlaybackRate(
55       double rate,
56       const base::Callback<void(int32_t)>& callback) = 0;
57   virtual void GetDuration(
58       const base::Callback<void(int32_t, PP_TimeDelta)>& callback) = 0;
59   virtual void GetCurrentTime(
60       const base::Callback<void(int32_t, PP_TimeTicks)>& callback) = 0;
61
62   virtual void GetPlayerState(
63       const base::Callback<void(int32_t, PP_MediaPlayerState)>& callback) = 0;
64
65   virtual void GetCurrentVideoTrackInfo(
66       const base::Callback<void(int32_t, const PP_VideoTrackInfo&)>&
67           callback) = 0;
68   virtual void GetVideoTracksList(
69       const base::Callback<
70           void(int32_t, const std::vector<PP_VideoTrackInfo>&)>& callback) = 0;
71   virtual void GetCurrentAudioTrackInfo(
72       const base::Callback<void(int32_t, const PP_AudioTrackInfo&)>&
73           callback) = 0;
74   virtual void GetAudioTracksList(
75       const base::Callback<
76           void(int32_t, const std::vector<PP_AudioTrackInfo>&)>& callback) = 0;
77   virtual void GetCurrentTextTrackInfo(
78       const base::Callback<void(int32_t, const PP_TextTrackInfo&)>&
79           callback) = 0;
80   virtual void GetTextTracksList(
81       const base::Callback<void(int32_t, const std::vector<PP_TextTrackInfo>&)>&
82           callback) = 0;
83   virtual void SelectTrack(PP_ElementaryStream_Type_Samsung,
84                            uint32_t track_index,
85                            const base::Callback<void(int32_t)>& callback) = 0;
86
87   virtual void AddExternalSubtitles(
88       const std::string& file_path,
89       const std::string& encoding,
90       const base::Callback<void(int32_t, const PP_TextTrackInfo&)>&
91           callback) = 0;
92   virtual void SetSubtitlesDelay(
93       PP_TimeDelta delay,
94       const base::Callback<void(int32_t)>& callback) = 0;
95
96   virtual void SetDisplayRect(
97       const PP_Rect& display_rect,
98       const PP_FloatRect& crop_ratio_rect,
99       const base::Callback<void(int32_t)>& callback) = 0;
100
101   virtual void SetDRMSpecificData(
102       PP_MediaPlayerDRMType,
103       PP_MediaPlayerDRMOperation,
104       const void*,
105       size_t,
106       const base::Callback<void(int32_t)>& callback) = 0;
107
108  protected:
109   friend class base::RefCountedThreadSafe<PepperMediaPlayerPrivate>;
110   virtual ~PepperMediaPlayerPrivate() {}
111   PepperMediaPlayerPrivate() = default;
112
113  private:
114   DISALLOW_COPY_AND_ASSIGN(PepperMediaPlayerPrivate);
115 };
116
117 }  // namespace content
118
119 #endif  // CONTENT_BROWSER_RENDERER_HOST_PEPPER_MEDIA_PLAYER_PEPPER_MEDIA_PLAYER_PRIVATE_H_