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