15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// IPC messages for the Cast transport API. 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Multiply-included message file, hence no include guard. 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ipc/ipc_message_macros.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/cast/cast_sender.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "media/cast/logging/logging_defines.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "media/cast/net/cast_transport_sender.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "media/cast/net/rtcp/rtcp_defines.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "net/base/ip_endpoint.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#undef IPC_MESSAGE_EXPORT 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define IPC_MESSAGE_EXPORT 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define IPC_MESSAGE_START CastMsgStart 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE( 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::EncodedFrame::Dependency, 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::EncodedFrame::DEPENDENCY_LAST) 22116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_ENUM_TRAITS_MAX_VALUE(media::cast::Codec, 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::CODEC_LAST) 24116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_ENUM_TRAITS_MAX_VALUE(media::cast::CastTransportStatus, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::CAST_TRANSPORT_STATUS_LAST) 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(media::cast::CastLoggingEvent, 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) media::cast::kNumOfLoggingEvents) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(media::cast::EventMediaType, 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) media::cast::EVENT_MEDIA_TYPE_LAST) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 31116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_BEGIN(media::cast::EncodedFrame) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(dependency) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(frame_id) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(referenced_frame_id) 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(reference_time) 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(new_playout_delay_ms) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(data) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 41116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_BEGIN(media::cast::RtcpDlrrReportBlock) 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(last_rr) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(delay_since_last_rr) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 46116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_BEGIN(media::cast::CastTransportRtpConfig) 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(ssrc) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(feedback_ssrc) 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(rtp_payload_type) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(aes_key) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(aes_iv_mask) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::PacketEvent) 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp) 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(frame_id) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(max_packet_id) 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(packet_id) 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(size) 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(timestamp) 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(type) 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(media_type) 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::FrameEvent) 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(frame_id) 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(size) 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(timestamp) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(type) 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(media_type) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(delay_delta) 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(key_frame) 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(target_bitrate) 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_STRUCT_TRAITS_END() 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::RtcpCastMessage) 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(media_ssrc) 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(ack_frame_id) 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(target_delay_ms) 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(missing_frames_and_packets) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_STRUCT_TRAITS_END() 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Cast messages sent from the browser to the renderer. 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_MESSAGE_CONTROL3(CastMsg_Rtt, 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int32 /* channel_id */, 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) uint32 /* ssrc */, 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::TimeDelta /* rtt */) 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_MESSAGE_CONTROL3(CastMsg_RtcpCastMessage, 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) uint32 /* ssrc */, 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) media::cast::RtcpCastMessage /* cast_message */) 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2( 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CastMsg_NotifyStatusChange, 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::CastTransportStatus /* status */) 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_MESSAGE_CONTROL3(CastMsg_RawEvents, 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 /* channel_id */, 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<media::cast::PacketEvent> /* packet_events */, 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<media::cast::FrameEvent> /* frame_events */) 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Cast messages sent from the renderer to the browser. 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_MESSAGE_CONTROL2( 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CastHostMsg_InitializeAudio, 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 /*channel_id*/, 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::CastTransportRtpConfig /*config*/) 112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_MESSAGE_CONTROL2( 114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CastHostMsg_InitializeVideo, 115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 /*channel_id*/, 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch media::cast::CastTransportRtpConfig /*config*/) 117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL3( 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CastHostMsg_InsertFrame, 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci uint32 /* ssrc */, 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci media::cast::EncodedFrame /* audio/video frame */) 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)IPC_MESSAGE_CONTROL4( 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CastHostMsg_SendSenderReport, 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) uint32 /* ssrc */, 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::TimeTicks /* current_time */, 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) uint32 /* current_time_as_rtp_timestamp */) 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 13103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)IPC_MESSAGE_CONTROL3( 13203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) CastHostMsg_CancelSendingFrames, 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 13403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uint32 /* ssrc */, 13503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::vector<uint32> /* frame_ids */) 13603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 13703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)IPC_MESSAGE_CONTROL3( 13803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) CastHostMsg_ResendFrameForKickstart, 13903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) int32 /* channel_id */, 14003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uint32 /* ssrc */, 14103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) uint32 /* frame_id */) 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL3( 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CastHostMsg_New, 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32 /* channel_id */, 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::IPEndPoint /* remote_end_point */, 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::DictionaryValue /* options */) 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1( 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CastHostMsg_Delete, 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32 /* channel_id */) 152