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 // IPC messages for efl media player.
6 // Multiply-included message file, hence no include guard.
8 #include "content/common/content_export.h"
9 #include "content/common/media/media_player_messages_enums_efl.h"
10 #include "ipc/ipc_message_macros.h"
11 #include "media/base/media_keys.h"
12 #include "media/base/tizen/demuxer_stream_player_params_efl.h"
13 #include "media/base/tizen/media_player_manager_efl.h"
14 #include "media/base/ipc/media_param_traits_macros.h"
15 #include "third_party/WebKit/public/platform/WebMediaPlayer.h"
16 #include "ui/gfx/geometry/rect_f.h"
18 #undef IPC_MESSAGE_EXPORT
19 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
20 #define IPC_MESSAGE_START MediaPlayerMsgStart
22 IPC_ENUM_TRAITS(blink::WebMediaPlayer::ReadyState)
23 IPC_ENUM_TRAITS(blink::WebMediaPlayer::NetworkState)
24 IPC_ENUM_TRAITS(MediaPlayerHostMsg_Initialize_Type)
26 IPC_STRUCT_TRAITS_BEGIN(media::DemuxerConfigs)
27 IPC_STRUCT_TRAITS_MEMBER(audio_codec)
28 IPC_STRUCT_TRAITS_MEMBER(audio_channels)
29 IPC_STRUCT_TRAITS_MEMBER(audio_sampling_rate)
30 IPC_STRUCT_TRAITS_MEMBER(audio_bit_rate)
31 IPC_STRUCT_TRAITS_MEMBER(is_audio_encrypted)
32 IPC_STRUCT_TRAITS_MEMBER(audio_extra_data)
34 IPC_STRUCT_TRAITS_MEMBER(video_codec)
35 IPC_STRUCT_TRAITS_MEMBER(video_size)
36 IPC_STRUCT_TRAITS_MEMBER(is_video_encrypted)
37 IPC_STRUCT_TRAITS_MEMBER(video_extra_data)
38 #if defined(OS_TIZEN_TV_PRODUCT)
39 IPC_STRUCT_TRAITS_MEMBER(framerate_num)
40 IPC_STRUCT_TRAITS_MEMBER(framerate_den)
41 IPC_STRUCT_TRAITS_MEMBER(is_framerate_changed)
44 #if defined(OS_TIZEN_TV_PRODUCT)
45 IPC_STRUCT_TRAITS_MEMBER(webm_hdr_info)
48 IPC_STRUCT_TRAITS_MEMBER(duration_ms)
49 IPC_STRUCT_TRAITS_END()
51 IPC_STRUCT_TRAITS_BEGIN(media::DemuxedBufferMetaData)
52 IPC_STRUCT_TRAITS_MEMBER(size)
53 IPC_STRUCT_TRAITS_MEMBER(end_of_stream)
54 IPC_STRUCT_TRAITS_MEMBER(timestamp)
55 IPC_STRUCT_TRAITS_MEMBER(time_duration)
56 IPC_STRUCT_TRAITS_MEMBER(type)
57 IPC_STRUCT_TRAITS_MEMBER(status)
58 #if defined(OS_TIZEN_TV_PRODUCT)
59 IPC_STRUCT_TRAITS_MEMBER(tz_handle)
61 IPC_STRUCT_TRAITS_END()
63 #if defined(TIZEN_TBM_SUPPORT)
64 IPC_STRUCT_TRAITS_BEGIN(gfx::TbmBufferHandle)
65 IPC_STRUCT_TRAITS_MEMBER(tbm_surface)
66 IPC_STRUCT_TRAITS_MEMBER(media_packet)
67 IPC_STRUCT_TRAITS_END()
70 // Initialize Efl player.
71 IPC_MESSAGE_ROUTED5(MediaPlayerEflHostMsg_Init,
73 MediaPlayerHostMsg_Initialize_Type /* type */,
75 std::string /*mime_type*/,
76 int /* demuxer client id */)
78 // Requests the player to enter fullscreen.
79 IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_EnteredFullscreen, int /* player_id */)
81 // Requests the player to exit fullscreen.
82 IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_ExitedFullscreen, int /* player_id */)
84 // Deinitialize Gst player.
85 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_DeInit, int /* player_id */)
88 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_Play, int /* player_id */)
91 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_Pause,
93 bool /* is_media_related_action */)
95 // Suspend media player.
96 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_Suspend, int /* player_id */)
98 // Resume media player.
99 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_Resume,
101 bool /* is_last_played_player*/)
103 // Player was activated by an user or an app.
104 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_Activate, int /* player_id*/)
106 // Player should deactivate (ex. save power).
107 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_Deactivate, int /* player_id*/)
109 #if defined(TIZEN_VIDEO_HOLE)
111 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_SetGeometry,
113 gfx::RectF /* position and size */)
116 #if defined(OS_TIZEN_TV_PRODUCT)
117 // Requests to add audio track.
118 IPC_MESSAGE_ROUTED5(MediaPlayerEflMsg_AddAudioTrack,
120 std::string /* kind */,
121 std::string /* language */,
122 std::string /* id */,
124 // Requests to add video track.
125 IPC_MESSAGE_ROUTED5(MediaPlayerEflMsg_AddVideoTrack,
127 std::string /* label */,
128 std::string /* language */,
129 std::string /* id */,
131 // Requests to add text track.
132 IPC_MESSAGE_ROUTED4(MediaPlayerEflMsg_AddTextTrack,
134 std::string /* label */,
135 std::string /* language */,
136 std::string /* id */)
137 // Playback seekable time change.
138 IPC_MESSAGE_ROUTED3(MediaPlayerEflMsg_SeekableTimeChanged,
140 base::TimeDelta /* min time */,
141 base::TimeDelta /* max time */)
144 IPC_MESSAGE_ROUTED1(MediaPlayerEflMsg_DrmError, int /* player_id */)
146 #if defined(TIZEN_TBM_SUPPORT)
147 // Notify video texturing mode.
148 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_NotifyVideoTexturing,
153 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_InbandEventTextTrack,
155 std::string /* info */)
157 IPC_MESSAGE_ROUTED5(MediaPlayerEflMsg_InbandEventTextCue,
159 std::string /* info */,
161 long long int /*startTimeMs*/,
162 long long int /*endTimeMs*/)
165 #if defined(TIZEN_MULTIMEDIA_SUPPORT)
166 // Launch native system volume controller.
167 IPC_MESSAGE_ROUTED1(MediaPlayerEflHostMsg_LaunchSystemVolumeController,
170 // System volume changed.
171 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_SystemVolumeChanged,
173 int /* system volume */)
177 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_SetVolume,
181 // Set playback rate.
182 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_SetRate,
186 // Playback duration.
187 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_DurationChanged,
189 base::TimeDelta /* time */)
192 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_TimeUpdate,
194 base::TimeDelta /* time */)
197 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_PauseStateChanged,
202 IPC_MESSAGE_ROUTED1(MediaPlayerEflMsg_OnSeekComplete, int /* player_id */)
204 // Current buffer range.
205 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_BufferUpdate,
207 int /* buffering_percentage */)
209 // Playback completed.
210 IPC_MESSAGE_ROUTED1(MediaPlayerEflMsg_TimeChanged, int /* player_id */)
212 // Ready state change.
213 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_ReadyStateChange,
215 blink::WebMediaPlayer::ReadyState /* state */)
217 // Network state change.
218 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_NetworkStateChange,
220 blink::WebMediaPlayer::NetworkState /* state */)
222 // Gst media data has changed.
223 IPC_MESSAGE_ROUTED4(MediaPlayerEflMsg_MediaDataChanged,
229 // On new frame available.
230 IPC_MESSAGE_ROUTED4(MediaPlayerEflMsg_NewFrameAvailable,
232 base::SharedMemoryHandle /* Handle */,
233 uint32_t /* length */,
234 base::TimeDelta /* time stamp */)
236 #if defined(TIZEN_TBM_SUPPORT)
237 IPC_MESSAGE_ROUTED3(MediaPlayerEflMsg_NewTbmBufferAvailable,
239 gfx::TbmBufferHandle /* Handle */,
240 base::TimeDelta /* time stamp */)
242 // Requests to release tbm buffer.
243 IPC_MESSAGE_CONTROL1(MediaPlayerEflHostMsg_ReleaseTbmBuffer,
244 gfx::TbmBufferHandle /* Handle */)
248 IPC_MESSAGE_ROUTED2(MediaPlayerEflHostMsg_Seek,
250 base::TimeDelta /* time */)
252 // For MSE internal seek request.
253 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_SeekRequest,
255 base::TimeDelta /* time_to_seek */)
257 // Player has begun suspend procedure
258 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_PlayerSuspend,
260 bool /* is_preempted */)
262 // Player has resumed
263 IPC_MESSAGE_ROUTED2(MediaPlayerEflMsg_PlayerResumed,
265 bool /* is_preempted */)
267 // Sent after the renderer demuxer has seeked.
268 IPC_MESSAGE_CONTROL2(MediaPlayerEflHostMsg_DemuxerSeekDone,
269 int /* demuxer_client_id */,
270 base::TimeDelta /* actual_browser_seek_time */)
272 // Inform the media source player that the demuxer is ready.
273 IPC_MESSAGE_CONTROL2(MediaPlayerEflHostMsg_DemuxerReady,
274 int /* demuxer_client_id */,
275 media::DemuxerConfigs /* configs */)
277 #if defined(OS_TIZEN_TV_PRODUCT)
278 // Inform the media source player that the demuxer data and state change.
279 IPC_MESSAGE_CONTROL2(MediaPlayerEflHostMsg_DemuxerStateChanged,
280 int /* demuxer_client_id */,
281 media::DemuxerConfigs /* configs */)
284 // Sent when the data was read from the ChunkDemuxer.
285 IPC_MESSAGE_CONTROL3(MediaPlayerEflHostMsg_ReadFromDemuxerAck,
286 int /* demuxer_client_id */,
287 base::SharedMemoryHandle /* Handle */,
288 media::DemuxedBufferMetaData /* meta data of buffer*/)
290 // Inform the media source player of changed media duration from demuxer.
291 IPC_MESSAGE_CONTROL2(MediaPlayerEflHostMsg_DurationChanged,
292 int /* demuxer_client_id */,
293 base::TimeDelta /* duration */)
295 // The media source player reads data from demuxer
296 IPC_MESSAGE_CONTROL2(MediaPlayerEflMsg_ReadFromDemuxer,
297 int /* demuxer_client_id */,
298 media::DemuxerStream::Type /* type */)
300 // Requests renderer demuxer seek.
301 IPC_MESSAGE_CONTROL2(MediaPlayerEflMsg_DemuxerSeekRequest,
302 int /* demuxer_client_id */,
303 base::TimeDelta /* time_to_seek */)
305 // Use sync ipc message to get start date of current media.
306 IPC_SYNC_MESSAGE_ROUTED1_1(MediaPlayerEflHostMsg_GetStartDate,
308 double /* start date */)