cast_messages.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/cast/rtcp/rtcp_defines.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "media/cast/transport/cast_transport_sender.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "net/base/ip_endpoint.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "net/base/net_util.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)
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS(media::cast::transport::AudioCodec)
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS(media::cast::transport::VideoCodec)
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS(media::cast::transport::RtcpSenderFrameStatus)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS(media::cast::transport::CastTransportStatus)
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::EncodedAudioFrame)
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(codec)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(frame_id)
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp)
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(data)
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::EncodedVideoFrame)
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(codec)
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(key_frame)
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(frame_id)
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(last_referenced_frame_id)
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(data)
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::RtcpSenderInfo)
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(ntp_seconds)
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(ntp_fraction)
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp)
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(send_packet_count)
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(send_octet_count)
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::RtcpDlrrReportBlock)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(last_rr)
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(delay_since_last_rr)
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::RtcpSenderFrameLogMessage)
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(frame_status)
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(rtp_timestamp)
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::RtpConfig)
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(history_ms)
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(max_delay_ms)
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(payload_type)
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::CastTransportConfig)
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(receiver_endpoint)
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(local_endpoint)
665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_ssrc)
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_ssrc)
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_codec)
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_codec)
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_frequency)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_channels)
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(audio_rtp_config)
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(video_rtp_config)
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(aes_key)
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(aes_iv_mask)
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(media::cast::transport::SendRtcpFromRtpSenderData)
795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(packet_type_flags)
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(sending_ssrc)
815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(c_name)
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Cast messages sent from the browser to the renderer.
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2(CastMsg_ReceivedPacket,
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     int32 /* channel_id */,
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     media::cast::Packet /* packet */);
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2(
925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastMsg_NotifyStatusChange,
935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::CastTransportStatus /* status */);
955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL5(
975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastMsg_RtpStatistics,
985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    bool /* audio */,
1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::RtcpSenderInfo /* sender_info */,
1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    base::TimeTicks /* time_sent */,
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    uint32 /* rtp_timestamp */);
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Cast messages sent from the renderer to the browser.
1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_InsertCodedAudioFrame,
1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::EncodedAudioFrame /* audio_frame */,
1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    base::TimeTicks /* recorded_time */)
1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(
1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_InsertCodedVideoFrame,
1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::EncodedVideoFrame /* video_frame */,
1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    base::TimeTicks /* recorded_time */)
1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL5(
1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_SendRtcpFromRtpSender,
1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::SendRtcpFromRtpSenderData /* flags, ssrc, name */,
1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::RtcpSenderInfo /* sender_info */,
1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::RtcpDlrrReportBlock /* dlrr */,
1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::RtcpSenderLogMessage /* sender_log */)
1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(
1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_ResendPackets,
1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    bool /* is_audio */,
1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::MissingFramesAndPacketsMap /* missing_packets */)
1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2(
1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_New,
1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */,
1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    media::cast::transport::CastTransportConfig /* config */);
1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(
1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    CastHostMsg_Delete,
1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int32 /* channel_id */);
141