[M47_2526] Chromium upversion to m47_2526 branch
[platform/framework/web/chromium-efl.git] / tizen_src / chromium_impl / media / base / tizen / media_player_bridge_capi.h
1 // Copyright 2014 Samsung Electronics Inc. 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 MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_
6 #define MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_
7
8 #include <player.h>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/timer/timer.h"
13 #include "content/public/browser/browser_message_filter.h"
14 #include "media/base/ranges.h"
15 #include "media/base/efl/media_player_efl.h"
16 #include "media/base/video_frame.h"
17
18 #if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
19 #include <Ecore.h>
20
21 #include "ecore_x_wayland_wrapper.h"
22 #include "ui/gl/efl_pixmap.h"
23 #else
24 #include <media_packet.h>
25 #include <tbm_surface.h>
26 #endif
27
28 namespace media {
29
30 class MEDIA_EXPORT MediaPlayerBridgeCapi
31     : public MediaPlayerEfl {
32  public:
33   MediaPlayerBridgeCapi(int player_id, const GURL& url, double volume,
34                         MediaPlayerManager* manager,
35                         const std::string& user_agent);
36   ~MediaPlayerBridgeCapi() override;
37
38   // MediaPlayerTizen implementation.
39   void Destroy() override;
40   void Play() override;
41   void Pause(bool is_media_related_action) override;
42   void SetRate(double rate) override;
43   void Seek(const double time) override;
44   void SetVolume(double volume) override;
45   double GetCurrentTime() override;
46
47   void ExecuteDelayedPlayerState();
48
49 #if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
50   void SetPixmap();
51   int GetPixmapID() const {return efl_pixmap_->GetId();}
52   void PlatformSurfaceUpdated();
53 #else
54   void OnMediaPacketUpdated(media_packet_h packet);
55   void SendFrame(tbm_surface_h surface);
56 #endif
57
58   void OnPlaybackCompleteUpdate();
59   void OnSeekCompleteUpdate();
60   void OnPlayerPrepared();
61   void OnHandleBufferingStatus(int percent);
62   void OnHandleError(int ret, char const* from);
63
64  protected:
65   void Release() override;
66
67  private:
68   // |duration_update_timer_| related
69   void OnCurrentTimeUpdateTimerFired();
70   void StartCurrentTimeUpdateTimer();
71   void StopCurrentTimeUpdateTimer();
72
73   // |buffering_update_timer_| related
74   void OnBufferingUpdateTimerFired();
75   void StartBufferingUpdateTimer();
76   void StopBufferingUpdateTimer();
77
78   void OnTimeChanged();
79   void UpdateMediaType();
80   void UpdateSeekState(bool state);
81   void UpdateDuration();
82
83 #if !defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
84   void MediaPacketUpdated(media_packet_h packet);
85 #endif
86   void PlaybackCompleteUpdate();
87   void SeekCompleteUpdate();
88   void PlayerPrepared();
89   void HandleBufferingStatus(int percent);
90   void HandleError(int ret, char const* from);
91   player_state_e GetPlayerState();
92
93  private:
94 #if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
95   scoped_refptr<gfx::EflPixmap> efl_pixmap_;
96   Ecore_X_Damage damage_;
97   Ecore_Event_Handler* damage_handler_;
98 #else
99   media_packet_h previous_packet_;
100 #endif
101
102   const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
103
104   player_h player_;
105
106   int media_type_;
107   int player_width_;
108   int player_height_;
109   unsigned int video_format_;
110
111   bool is_end_reached_;
112   bool is_file_url_;
113   bool is_paused_;
114   bool is_seeking_;
115   bool is_play_pending_;
116
117   double duration_;
118   double seek_duration_;
119   double playback_rate_;
120
121   int delayed_player_state_;
122
123   base::RepeatingTimer<MediaPlayerBridgeCapi> current_time_update_timer_;
124   base::RepeatingTimer<MediaPlayerBridgeCapi> buffering_update_timer_;
125
126   DISALLOW_COPY_AND_ASSIGN(MediaPlayerBridgeCapi);
127 };
128
129 }  // namespace media
130
131 #endif  // MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_