Index: chrome/browser/media/cast_transport_host_filter.cc |
diff --git a/chrome/browser/media/cast_transport_host_filter.cc b/chrome/browser/media/cast_transport_host_filter.cc |
index 0d6e76964830b0643dda1d87ea8c6ea127059a0f..33fc93084581386b518ef9e4dcae11c95a95d1b3 100644 |
--- a/chrome/browser/media/cast_transport_host_filter.cc |
+++ b/chrome/browser/media/cast_transport_host_filter.cc |
@@ -33,8 +33,8 @@ bool CastTransportHostFilter::OnMessageReceived(const IPC::Message& message) { |
OnInsertCodedAudioFrame) |
IPC_MESSAGE_HANDLER(CastHostMsg_InsertCodedVideoFrame, |
OnInsertCodedVideoFrame) |
- IPC_MESSAGE_HANDLER(CastHostMsg_SendRtcpFromRtpSender, |
- OnSendRtcpFromRtpSender) |
+ IPC_MESSAGE_HANDLER(CastHostMsg_SendSenderReport, |
+ OnSendSenderReport) |
IPC_MESSAGE_HANDLER(CastHostMsg_ResendPackets, |
OnResendPackets) |
IPC_MESSAGE_UNHANDLED(handled = false); |
@@ -48,17 +48,35 @@ void CastTransportHostFilter::NotifyStatusChange( |
Send(new CastMsg_NotifyStatusChange(channel_id, status)); |
} |
-void CastTransportHostFilter::ReceivedPacket( |
+void CastTransportHostFilter::RawEvents( |
int32 channel_id, |
- scoped_ptr<media::cast::Packet> packet) { |
- Send(new CastMsg_ReceivedPacket(channel_id, *packet)); |
+ const std::vector<media::cast::PacketEvent>& packet_events, |
+ const std::vector<media::cast::FrameEvent>& frame_events) { |
+ if (!packet_events.empty()) |
+ Send(new CastMsg_RawEvents(channel_id, |
+ packet_events, |
+ frame_events)); |
} |
-void CastTransportHostFilter::RawEvents( |
+void CastTransportHostFilter::Rtt(int32 channel_id, |
+ uint32 ssrc, |
+ base::TimeDelta rtt, |
+ base::TimeDelta avg_rtt, |
+ base::TimeDelta min_rtt, |
+ base::TimeDelta max_rtt) { |
+ media::cast::RtcpRttReport report; |
+ report.rtt = rtt; |
+ report.avg_rtt = avg_rtt; |
+ report.min_rtt = min_rtt; |
+ report.max_rtt = max_rtt; |
+ Send(new CastMsg_Rtt(channel_id, ssrc, report)); |
+} |
+ |
+void CastTransportHostFilter::CastMessage( |
int32 channel_id, |
- const std::vector<media::cast::PacketEvent>& packet_events) { |
- if (!packet_events.empty()) |
- Send(new CastMsg_RawEvents(channel_id, packet_events)); |
+ uint32 ssrc, |
+ const media::cast::RtcpCastMessage& cast_message) { |
+ Send(new CastMsg_RtcpCastMessage(channel_id, ssrc, cast_message)); |
} |
void CastTransportHostFilter::OnNew( |
@@ -81,11 +99,6 @@ void CastTransportHostFilter::OnNew( |
channel_id), |
base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs), |
base::MessageLoopProxy::current()); |
- |
- sender->SetPacketReceiver(base::Bind(&CastTransportHostFilter::ReceivedPacket, |
- base::Unretained(this), |
- channel_id)); |
- |
id_map_.AddWithID(sender.release(), channel_id); |
} |
@@ -106,7 +119,14 @@ void CastTransportHostFilter::OnInitializeAudio( |
media::cast::CastTransportSender* sender = |
id_map_.Lookup(channel_id); |
if (sender) { |
- sender->InitializeAudio(config); |
+ sender->InitializeAudio( |
+ config, |
+ base::Bind(&CastTransportHostFilter::CastMessage, |
miu
2014/07/18 00:06:22
The base::Unretained() makes me nervous. Can you
Alpha Left Google
2014/07/18 01:14:30
Changed it to WeakPtr.
|
+ base::Unretained(this), |
+ channel_id, config.ssrc), |
+ base::Bind(&CastTransportHostFilter::Rtt, |
+ base::Unretained(this), |
+ channel_id, config.ssrc)); |
} else { |
DVLOG(1) |
<< "CastTransportHostFilter::OnInitializeAudio on non-existing channel"; |
@@ -119,7 +139,14 @@ void CastTransportHostFilter::OnInitializeVideo( |
media::cast::CastTransportSender* sender = |
id_map_.Lookup(channel_id); |
if (sender) { |
- sender->InitializeVideo(config); |
+ sender->InitializeVideo( |
+ config, |
+ base::Bind(&CastTransportHostFilter::CastMessage, |
+ base::Unretained(this), |
+ channel_id, config.ssrc), |
+ base::Bind(&CastTransportHostFilter::Rtt, |
+ base::Unretained(this), |
+ channel_id, config.ssrc)); |
} else { |
DVLOG(1) |
<< "CastTransportHostFilter::OnInitializeVideo on non-existing channel"; |
@@ -154,23 +181,20 @@ void CastTransportHostFilter::OnInsertCodedVideoFrame( |
} |
} |
-void CastTransportHostFilter::OnSendRtcpFromRtpSender( |
+void CastTransportHostFilter::OnSendSenderReport( |
int32 channel_id, |
- const media::cast::SendRtcpFromRtpSenderData& data, |
- const media::cast::RtcpDlrrReportBlock& dlrr) { |
+ uint32 ssrc, |
+ base::TimeTicks current_time, |
+ uint32 current_time_as_rtp_timestamp) { |
media::cast::CastTransportSender* sender = |
id_map_.Lookup(channel_id); |
if (sender) { |
- sender->SendRtcpFromRtpSender(data.packet_type_flags, |
- data.ntp_seconds, |
- data.ntp_fraction, |
- data.rtp_timestamp, |
- dlrr, |
- data.sending_ssrc, |
- data.c_name); |
+ sender->SendSenderReport(ssrc, |
+ current_time, |
+ current_time_as_rtp_timestamp); |
} else { |
DVLOG(1) |
- << "CastTransportHostFilter::OnSendRtcpFromRtpSender " |
+ << "CastTransportHostFilter::OnSendSenderReport " |
<< "on non-existing channel"; |
} |
} |