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.
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_
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"
23 class BufferingListenerPrivate;
24 class DRMListenerPrivate;
25 class MediaEventsListenerPrivate;
26 class PepperMediaDataSourcePrivate;
27 class PepperMediaPlayerPrivateFactory;
28 class SubtitleListenerPrivate;
30 // Platform depended part of Media Player PPAPI implementation,
31 // see ppapi/api/samsung/ppb_media_player_samsung.idl.
33 class PepperMediaPlayerPrivate
34 : public base::RefCountedThreadSafe<PepperMediaPlayerPrivate> {
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;
44 virtual void AttachDataSource(
45 const scoped_refptr<PepperMediaDataSourcePrivate>&,
46 const base::Callback<void(int32_t)>& callback) = 0;
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;
54 virtual void SetPlaybackRate(
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;
62 virtual void GetPlayerState(
63 const base::Callback<void(int32_t, PP_MediaPlayerState)>& callback) = 0;
65 virtual void GetCurrentVideoTrackInfo(
66 const base::Callback<void(int32_t, const PP_VideoTrackInfo&)>&
68 virtual void GetVideoTracksList(
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&)>&
74 virtual void GetAudioTracksList(
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&)>&
80 virtual void GetTextTracksList(
81 const base::Callback<void(int32_t, const std::vector<PP_TextTrackInfo>&)>&
83 virtual void SelectTrack(PP_ElementaryStream_Type_Samsung,
85 const base::Callback<void(int32_t)>& callback) = 0;
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&)>&
92 virtual void SetSubtitlesDelay(
94 const base::Callback<void(int32_t)>& callback) = 0;
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;
101 virtual void SetDRMSpecificData(
102 PP_MediaPlayerDRMType,
103 PP_MediaPlayerDRMOperation,
106 const base::Callback<void(int32_t)>& callback) = 0;
109 friend class base::RefCountedThreadSafe<PepperMediaPlayerPrivate>;
110 virtual ~PepperMediaPlayerPrivate() {}
111 PepperMediaPlayerPrivate() = default;
114 DISALLOW_COPY_AND_ASSIGN(PepperMediaPlayerPrivate);
117 } // namespace content
119 #endif // CONTENT_BROWSER_RENDERER_HOST_PEPPER_MEDIA_PLAYER_PEPPER_MEDIA_PLAYER_PRIVATE_H_