15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IPC messages for android media player.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Multiply-included message file, hence no include guard.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/common/media/media_player_messages_enums_android.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_macros.h"
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "media/base/android/media_player_android.h"
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "media/base/android/demuxer_stream_player_params.h"
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/gfx/rect_f.h"
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef IPC_MESSAGE_EXPORT
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_START MediaPlayerMsgStart
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_ENUM_TRAITS(media::AudioCodec)
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_ENUM_TRAITS(media::DemuxerStream::Status)
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_ENUM_TRAITS(media::DemuxerStream::Type)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_ENUM_TRAITS(media::VideoCodec)
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::DemuxerConfigs)
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_codec)
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_channels)
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_sampling_rate)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(is_audio_encrypted)
32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_extra_data)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_codec)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_size)
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(is_video_encrypted)
37b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_extra_data)
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  IPC_STRUCT_TRAITS_MEMBER(duration)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::DemuxerData)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(type)
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(access_units)
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(demuxer_configs)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::AccessUnit)
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(status)
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(end_of_stream)
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(data)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(timestamp)
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(key_id)
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(iv)
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(subsamples)
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::SubsampleEntry)
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(clear_bytes)
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(cypher_bytes)
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IPC_ENUM_TRAITS(MediaPlayerHostMsg_Initialize_Type)
64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Parameters to describe a media player
66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_BEGIN(MediaPlayerHostMsg_Initialize_Params)
67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(MediaPlayerHostMsg_Initialize_Type, type)
68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(base::SharedMemoryHandle, metafile_data_handle)
69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, player_id)
70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, demuxer_client_id)
71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, url)
72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, first_party_for_cookies)
73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, frame_url)
74929504d64b38e05de7355e162311d6791ad6f54dBo Liu  IPC_STRUCT_MEMBER(bool, allow_credentials)
75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_END()
76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
7768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Chrome for Android seek message sequence is:
7868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// 1. Renderer->Browser MediaPlayerHostMsg_Seek
7968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    This is the beginning of actual seek flow in response to web app requests
8068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    for seeks and browser MediaPlayerMsg_SeekRequests. With this message,
8168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    the renderer asks browser to perform actual seek. At most one of these
8268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    actual seeks will be in process between this message and renderer's later
8368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    receipt of MediaPlayerMsg_SeekCompleted from the browser.
8468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// 2. Browser->Renderer MediaPlayerMsg_SeekCompleted
8568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    Once the browser determines the seek is complete, it sends this message to
8668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    notify the renderer of seek completion.
8768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//
8868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Other seek-related IPC messages:
8968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Browser->Renderer MediaPlayerMsg_SeekRequest
9068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    Browser requests to begin a seek. All browser-initiated seeks must begin
9168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    with this request. Renderer controls actual seek initiation via the normal
9268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    seek flow, above, keeping web apps aware of seeks. These requests are
9368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//    also allowed while another actual seek is in progress.
9468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)//
9568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// If the demuxer is located in the renderer, as in media source players, the
9668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// browser must ensure the renderer demuxer is appropriately seeked between
9768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// receipt of MediaPlayerHostMsg_Seek and transmission of
9868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// MediaPlayerMsg_SeekCompleted. The following two renderer-demuxer control
9968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// messages book-end the renderer-demuxer seek:
10068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// 1.1 Browser->Renderer MediaPlayerMsg_DemuxerSeekRequest
10168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// 1.2 Renderer->Browser MediaPlayerHostMsg_DemuxerSeekDone
10268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Only in short-term hack to seek to reach I-Frame to feed a newly constructed
1041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// video decoder may the above IPC sequence be modified to exclude SeekRequest,
1051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Seek and SeekCompleted, with condition that DemuxerSeekRequest's
1061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// |is_browser_seek| parameter be true. Regular seek messages must still be
1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// handled even when a hack browser seek is in progress. In this case, the
1081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// browser seek request's |time_to_seek| may no longer be buffered and the
1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// demuxer may instead seek to a future buffered time. The resulting
1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// DemuxerSeekDone message's |actual_browser_seek_time| is the time actually
1111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// seeked-to, and is only meaningful for these hack browser seeks.
1121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// TODO(wolenetz): Instead of doing browser seek, replay cached data since last
1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// keyframe. See http://crbug.com/304234.
1141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Messages for notifying the render process of media playback status -------
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Media buffering has updated.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerMsg_MediaBufferingUpdate,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* percent */)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// A media playback error has occurred.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerMsg_MediaError,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* error */)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Playback is completed.
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_MediaPlaybackCompleted,
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Media metadata has changed.
132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_ROUTED5(MediaPlayerMsg_MediaMetadataChanged,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    base::TimeDelta /* duration */,
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    int /* width */,
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    int /* height */,
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    bool /* success */)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Requests renderer player to ask its client (blink HTMLMediaElement) to seek.
14068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerMsg_SeekRequest,
14168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                    int /* player_id */,
14268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                    base::TimeDelta /* time_to_seek_to */)
14368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Media seek is completed.
14568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerMsg_SeekCompleted,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    base::TimeDelta /* current_time */)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Video size has changed.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED3(MediaPlayerMsg_MediaVideoSizeChanged,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* width */,
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* height */)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The current play time has updated.
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerMsg_MediaTimeUpdate,
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    base::TimeDelta /* current_time */)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The player has been released.
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_MediaPlayerReleased,
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The player has entered fullscreen mode.
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_DidEnterFullscreen,
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The player exited fullscreen.
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_DidExitFullscreen,
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The player started playing.
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_DidMediaPlayerPlay,
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The player was paused.
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_DidMediaPlayerPause,
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Requests renderer demuxer seek.
1811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IPC_MESSAGE_CONTROL3(MediaPlayerMsg_DemuxerSeekRequest,
18268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     int /* demuxer_client_id */,
1831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     base::TimeDelta /* time_to_seek */,
1841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     bool /* is_browser_seek */)
18590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// The media source player reads data from demuxer
18768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_CONTROL2(MediaPlayerMsg_ReadFromDemuxer,
18868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     int /* demuxer_client_id */,
18968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     media::DemuxerStream::Type /* type */)
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
191effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Clank has connected to the remote device.
192effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochIPC_MESSAGE_ROUTED2(MediaPlayerMsg_ConnectedToRemoteDevice,
193effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                    int /* player_id */,
194effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch                    std::string /* remote_playback_message */)
1958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
196effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Clank has disconnected from the remote device.
1978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_DisconnectedFromRemoteDevice,
1988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                    int /* player_id */)
1998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Instructs the video element to enter fullscreen.
201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerMsg_RequestFullscreen,
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    int /*player_id */)
203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
204cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Pauses all video playback.
205cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_MESSAGE_ROUTED0(MediaPlayerMsg_PauseVideo)
206cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
20758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Messages for controlling the media playback in browser process ----------
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Destroy the media player object.
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_DestroyMediaPlayer,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
213f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Initialize a media player object.
214f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_ROUTED1(
215a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    MediaPlayerHostMsg_Initialize,
216f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    MediaPlayerHostMsg_Initialize_Params);
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Pause the player.
219d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_Pause,
220d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                    int /* player_id */,
221d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                    bool /* is_media_related_action */)
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Release player resources, but keep the object for future usage.
224a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_Release, int /* player_id */)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Perform a seek.
227a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_Seek,
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* player_id */,
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    base::TimeDelta /* time */)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Start the player for playback.
232a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_Start, int /* player_id */)
233a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Set the volume.
235a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetVolume,
236a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                    int /* player_id */,
237a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                    double /* volume */)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Set the poster image.
2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetPoster,
2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* player_id */,
2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    GURL /* poster url */)
2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
24468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Requests the player to enter fullscreen.
245a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_EnterFullscreen, int /* player_id */)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Requests the player to exit fullscreen.
248a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IPC_MESSAGE_ROUTED1(MediaPlayerHostMsg_ExitFullscreen, int /* player_id */)
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
250e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Requests the player with |player_id| to use the CDM with |cdm_id|.
251e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochIPC_MESSAGE_ROUTED2(MediaPlayerHostMsg_SetCdm,
252e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch                    int /* player_id */,
253e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch                    int /* cdm_id */);
254e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
25568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Sent after the renderer demuxer has seeked.
2561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IPC_MESSAGE_CONTROL2(MediaPlayerHostMsg_DemuxerSeekDone,
2571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     int /* demuxer_client_id */,
2581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     base::TimeDelta /* actual_browser_seek_time */)
259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Inform the media source player that the demuxer is ready.
26168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_CONTROL2(MediaPlayerHostMsg_DemuxerReady,
26268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     int /* demuxer_client_id */,
26368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     media::DemuxerConfigs)
264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Sent when the data was read from the ChunkDemuxer.
26668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_CONTROL2(MediaPlayerHostMsg_ReadFromDemuxerAck,
26768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     int /* demuxer_client_id */,
26868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     media::DemuxerData)
26990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Inform the media source player of changed media duration from demuxer.
27168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_CONTROL2(MediaPlayerHostMsg_DurationChanged,
27268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     int /* demuxer_client_id */,
27368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                     base::TimeDelta /* duration */)
2747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(VIDEO_HOLE)
27690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Notify the player about the external surface, requesting it if necessary.
2775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// |is_request| true if the player is requesting the external surface.
2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// |rect| the boundary rectangle of the video element.
27990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IPC_MESSAGE_ROUTED3(MediaPlayerHostMsg_NotifyExternalSurface,
28090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    int /* player_id */,
28190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    bool /* is_request */,
28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    gfx::RectF /* rect */)
2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // defined(VIDEO_HOLE)
284