Chromium Code Reviews| Index: chrome/renderer/media/cast_transport_sender_ipc.cc |
| diff --git a/chrome/renderer/media/cast_transport_sender_ipc.cc b/chrome/renderer/media/cast_transport_sender_ipc.cc |
| index da5a26e57800fd8472b9954111b0786e211af644..14daac4366c7f0b63e35de79cd88f80d429d4aef 100644 |
| --- a/chrome/renderer/media/cast_transport_sender_ipc.cc |
| +++ b/chrome/renderer/media/cast_transport_sender_ipc.cc |
| @@ -11,6 +11,9 @@ |
| #include "ipc/ipc_channel_proxy.h" |
| #include "media/cast/cast_sender.h" |
| +CastTransportSenderIPC::ClientCallbacks::ClientCallbacks() {} |
| +CastTransportSenderIPC::ClientCallbacks::~ClientCallbacks() {} |
| + |
| CastTransportSenderIPC::CastTransportSenderIPC( |
| const net::IPEndPoint& remote_end_point, |
| const media::cast::CastTransportStatusCallback& status_cb, |
| @@ -29,18 +32,21 @@ CastTransportSenderIPC::~CastTransportSenderIPC() { |
| } |
| } |
| -void CastTransportSenderIPC::SetPacketReceiver( |
| - const media::cast::PacketReceiverCallback& packet_callback) { |
| - packet_callback_ = packet_callback; |
| -} |
| - |
| void CastTransportSenderIPC::InitializeAudio( |
| - const media::cast::CastTransportRtpConfig& config) { |
| + const media::cast::CastTransportRtpConfig& config, |
| + const media::cast::RtcpCastMessageCallback& cast_message_cb, |
| + const media::cast::RtcpRttCallback& rtt_cb) { |
| + clients_[config.ssrc].cast_message_cb = cast_message_cb; |
| + clients_[config.ssrc].rtt_cb = rtt_cb; |
| Send(new CastHostMsg_InitializeAudio(channel_id_, config)); |
| } |
| void CastTransportSenderIPC::InitializeVideo( |
| - const media::cast::CastTransportRtpConfig& config) { |
| + const media::cast::CastTransportRtpConfig& config, |
| + const media::cast::RtcpCastMessageCallback& cast_message_cb, |
| + const media::cast::RtcpRttCallback& rtt_cb) { |
| + clients_[config.ssrc].cast_message_cb = cast_message_cb; |
| + clients_[config.ssrc].rtt_cb = rtt_cb; |
| Send(new CastHostMsg_InitializeVideo(channel_id_, config)); |
| } |
| @@ -54,25 +60,14 @@ void CastTransportSenderIPC::InsertCodedVideoFrame( |
| Send(new CastHostMsg_InsertCodedVideoFrame(channel_id_, video_frame)); |
| } |
| -void CastTransportSenderIPC::SendRtcpFromRtpSender( |
| - uint32 packet_type_flags, |
| - uint32 ntp_seconds, |
| - uint32 ntp_fraction, |
| - uint32 rtp_timestamp, |
| - const media::cast::RtcpDlrrReportBlock& dlrr, |
| - uint32 sending_ssrc, |
| - const std::string& c_name) { |
| - struct media::cast::SendRtcpFromRtpSenderData data; |
| - data.packet_type_flags = packet_type_flags; |
| - data.sending_ssrc = sending_ssrc; |
| - data.c_name = c_name; |
| - data.ntp_seconds = ntp_seconds; |
| - data.ntp_fraction = ntp_fraction; |
| - data.rtp_timestamp = rtp_timestamp; |
| - Send(new CastHostMsg_SendRtcpFromRtpSender( |
| - channel_id_, |
| - data, |
| - dlrr)); |
| +void CastTransportSenderIPC::SendSenderReport( |
| + uint32 ssrc, |
| + base::TimeTicks current_time, |
| + uint32 current_time_as_rtp_timestamp) { |
| + Send(new CastHostMsg_SendSenderReport(channel_id_, |
| + ssrc, |
| + current_time, |
| + current_time_as_rtp_timestamp)); |
| } |
| void CastTransportSenderIPC::ResendPackets( |
| @@ -87,26 +82,43 @@ void CastTransportSenderIPC::ResendPackets( |
| dedupe_window)); |
| } |
| -void CastTransportSenderIPC::OnReceivedPacket( |
| - const media::cast::Packet& packet) { |
| - if (!packet_callback_.is_null()) { |
| - // TODO(hubbe): Perhaps an non-ownership-transferring cb here? |
| - scoped_ptr<media::cast::Packet> packet_copy( |
| - new media::cast::Packet(packet)); |
| - packet_callback_.Run(packet_copy.Pass()); |
| - } else { |
| - DVLOG(1) << "CastIPCDispatcher::OnReceivedPacket no packet callback yet."; |
| - } |
| -} |
| - |
| void CastTransportSenderIPC::OnNotifyStatusChange( |
| media::cast::CastTransportStatus status) { |
| status_callback_.Run(status); |
| } |
| void CastTransportSenderIPC::OnRawEvents( |
| - const std::vector<media::cast::PacketEvent>& packet_events) { |
| - raw_events_callback_.Run(packet_events); |
| + const std::vector<media::cast::PacketEvent>& packet_events, |
| + const std::vector<media::cast::FrameEvent>& frame_events) { |
| + raw_events_callback_.Run(packet_events, frame_events); |
| +} |
| + |
| +void CastTransportSenderIPC::OnRtt( |
| + uint32 ssrc, |
| + const media::cast::RtcpRttReport& rtt_report) { |
| + if (clients_.find(ssrc) == clients_.end()) { |
|
miu
2014/07/18 00:06:23
This code is doing 3 map look-ups. Consider just
Alpha Left Google
2014/07/18 01:14:30
Done.
|
| + LOG(ERROR) << "Received RTT report from for unknown SSRC: " << ssrc; |
| + return; |
| + } |
| + if (clients_[ssrc].rtt_cb.is_null()) |
| + return; |
| + clients_[ssrc].rtt_cb.Run( |
| + rtt_report.rtt, |
| + rtt_report.avg_rtt, |
| + rtt_report.min_rtt, |
| + rtt_report.max_rtt); |
| +} |
| + |
| +void CastTransportSenderIPC::OnRtcpCastMessage( |
| + uint32 ssrc, |
| + const media::cast::RtcpCastMessage& cast_message) { |
| + if (clients_.find(ssrc) == clients_.end()) { |
|
miu
2014/07/18 00:06:23
ditto: Use an iterator.
Alpha Left Google
2014/07/18 01:14:30
Done.
|
| + LOG(ERROR) << "Received cast message from for unknown SSRC: " << ssrc; |
| + return; |
| + } |
| + if (clients_[ssrc].cast_message_cb.is_null()) |
| + return; |
| + clients_[ssrc].cast_message_cb.Run(cast_message); |
| } |
| void CastTransportSenderIPC::Send(IPC::Message* message) { |