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