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 3f140734c2f728dcc3a414e4c29454de16f3a323..125f89ee8853c79c8dbe85f3935ceac52923282c 100644 |
--- a/chrome/browser/media/cast_transport_host_filter.cc |
+++ b/chrome/browser/media/cast_transport_host_filter.cc |
@@ -16,8 +16,52 @@ namespace { |
// How often to send raw events. |
const int kSendRawEventsIntervalSecs = 1; |
+class TransportClient : public media::cast::CastTransportSender::Client { |
+ public: |
+ TransportClient(int32 channel_id, |
+ cast::CastTransportHostFilter* cast_transport_host_filter) |
+ : channel_id_(channel_id), |
+ cast_transport_host_filter_(cast_transport_host_filter) {} |
+ |
+ void OnStatusChange(media::cast::CastTransportStatus status) final; |
+ void OnReceivedLoggingEvents( |
+ scoped_ptr<std::vector<media::cast::FrameEvent>> frame_events, |
+ scoped_ptr<std::vector<media::cast::PacketEvent>> packet_events) final; |
+ bool OnReceivedPackets(scoped_ptr<media::cast::Packet> packet) final; |
+ |
+ private: |
+ int32 channel_id_; |
+ cast::CastTransportHostFilter* cast_transport_host_filter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TransportClient); |
+}; |
+ |
+void TransportClient::OnStatusChange(media::cast::CastTransportStatus status) { |
+ DCHECK(cast_transport_host_filter_); |
+ cast_transport_host_filter_->Send( |
+ new CastMsg_NotifyStatusChange(channel_id_, status)); |
+} |
+ |
+void TransportClient::OnReceivedLoggingEvents( |
+ scoped_ptr<std::vector<media::cast::FrameEvent>> frame_events, |
+ scoped_ptr<std::vector<media::cast::PacketEvent>> packet_events) { |
+ if (frame_events->empty() && packet_events->empty()) |
+ return; |
+ DCHECK(cast_transport_host_filter_); |
+ cast_transport_host_filter_->Send( |
+ new CastMsg_RawEvents(channel_id_, *packet_events, *frame_events)); |
} |
+bool TransportClient::OnReceivedPackets( |
+ scoped_ptr<media::cast::Packet> packet) { |
+ DCHECK(cast_transport_host_filter_); |
+ cast_transport_host_filter_->Send( |
+ new CastMsg_ReceivedPacket(channel_id_, *packet)); |
+ return true; |
+} |
+ |
+} // namespace |
+ |
namespace cast { |
CastTransportHostFilter::CastTransportHostFilter() |
@@ -49,27 +93,6 @@ bool CastTransportHostFilter::OnMessageReceived(const IPC::Message& message) { |
return handled; |
} |
-void CastTransportHostFilter::ReceivedPacket( |
- int32 channel_id, |
- scoped_ptr<media::cast::Packet> packet) { |
- Send(new CastMsg_ReceivedPacket(channel_id, *packet)); |
-} |
- |
-void CastTransportHostFilter::NotifyStatusChange( |
- int32 channel_id, |
- media::cast::CastTransportStatus status) { |
- Send(new CastMsg_NotifyStatusChange(channel_id, status)); |
-} |
- |
-void CastTransportHostFilter::SendRawEvents( |
- int32 channel_id, |
- scoped_ptr<std::vector<media::cast::FrameEvent>> frame_events, |
- scoped_ptr<std::vector<media::cast::PacketEvent>> packet_events) { |
- if (frame_events->empty() && packet_events->empty()) |
- return; |
- Send(new CastMsg_RawEvents(channel_id, *packet_events, *frame_events)); |
-} |
- |
void CastTransportHostFilter::SendRtt(int32 channel_id, |
uint32 ssrc, |
base::TimeDelta rtt) { |
@@ -102,24 +125,13 @@ void CastTransportHostFilter::OnNew( |
id_map_.Remove(channel_id); |
} |
+ TransportClient client(channel_id, this); |
Irfan
2015/12/15 22:23:13
I think we will want to make CastTransportHostFilt
xjz
2015/12/16 18:11:34
Done.
|
+ media::cast::CastTransportSender::CreateParams transport_params( |
+ g_browser_process->net_log(), &clock_, local_end_point, remote_end_point, |
+ &client, base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs), |
+ make_scoped_ptr(options.DeepCopy()), base::ThreadTaskRunnerHandle::Get()); |
scoped_ptr<media::cast::CastTransportSender> sender = |
- media::cast::CastTransportSender::Create( |
- g_browser_process->net_log(), |
- &clock_, |
- local_end_point, |
- remote_end_point, |
- make_scoped_ptr(options.DeepCopy()), |
- base::Bind(&CastTransportHostFilter::NotifyStatusChange, |
- weak_factory_.GetWeakPtr(), |
- channel_id), |
- base::Bind(&CastTransportHostFilter::SendRawEvents, |
- weak_factory_.GetWeakPtr(), |
- channel_id), |
- base::TimeDelta::FromSeconds(kSendRawEventsIntervalSecs), |
- base::Bind(&CastTransportHostFilter::ReceivedPacket, |
- weak_factory_.GetWeakPtr(), |
- channel_id), |
- base::ThreadTaskRunnerHandle::Get()); |
+ media::cast::CastTransportSender::Create(transport_params); |
id_map_.AddWithID(sender.release(), channel_id); |
} |