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.
5 #ifndef MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_
6 #define MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_
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"
18 #if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
21 #include "ecore_x_wayland_wrapper.h"
22 #include "ui/gl/efl_pixmap.h"
24 #include <media_packet.h>
25 #include <tbm_surface.h>
30 class MEDIA_EXPORT MediaPlayerBridgeCapi
31 : public MediaPlayerEfl {
33 MediaPlayerBridgeCapi(int player_id, const GURL& url, double volume,
34 MediaPlayerManager* manager,
35 const std::string& user_agent);
36 ~MediaPlayerBridgeCapi() override;
38 // MediaPlayerTizen implementation.
39 void Destroy() 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;
47 void ExecuteDelayedPlayerState();
49 #if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
51 int GetPixmapID() const {return efl_pixmap_->GetId();}
52 void PlatformSurfaceUpdated();
54 void OnMediaPacketUpdated(media_packet_h packet);
55 void SendFrame(tbm_surface_h surface);
58 void OnPlaybackCompleteUpdate();
59 void OnSeekCompleteUpdate();
60 void OnPlayerPrepared();
61 void OnHandleBufferingStatus(int percent);
62 void OnHandleError(int ret, char const* from);
65 void Release() override;
68 // |duration_update_timer_| related
69 void OnCurrentTimeUpdateTimerFired();
70 void StartCurrentTimeUpdateTimer();
71 void StopCurrentTimeUpdateTimer();
73 // |buffering_update_timer_| related
74 void OnBufferingUpdateTimerFired();
75 void StartBufferingUpdateTimer();
76 void StopBufferingUpdateTimer();
79 void UpdateMediaType();
80 void UpdateSeekState(bool state);
81 void UpdateDuration();
83 #if !defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
84 void MediaPacketUpdated(media_packet_h packet);
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();
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_;
99 media_packet_h previous_packet_;
102 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
109 unsigned int video_format_;
111 bool is_end_reached_;
115 bool is_play_pending_;
118 double seek_duration_;
119 double playback_rate_;
121 int delayed_player_state_;
123 base::RepeatingTimer<MediaPlayerBridgeCapi> current_time_update_timer_;
124 base::RepeatingTimer<MediaPlayerBridgeCapi> buffering_update_timer_;
126 DISALLOW_COPY_AND_ASSIGN(MediaPlayerBridgeCapi);
131 #endif // MEDIA_BASE_TIZEN_MEDIA_PLAYER_BRIDGE_CAPI_H_