| Index: media/cast/net/cast_transport_sender_impl.h
|
| diff --git a/media/cast/net/cast_transport_sender_impl.h b/media/cast/net/cast_transport_sender_impl.h
|
| index b241ec8aae6fa3bf56fa8a5b91b5d244c263b281..c0d096aabd906fb6ccfb392180aae7a5f076732f 100644
|
| --- a/media/cast/net/cast_transport_sender_impl.h
|
| +++ b/media/cast/net/cast_transport_sender_impl.h
|
| @@ -24,6 +24,8 @@
|
| #ifndef MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_IMPL_H_
|
| #define MEDIA_CAST_NET_CAST_TRANSPORT_SENDER_IMPL_H_
|
|
|
| +#include <set>
|
| +
|
| #include "base/callback.h"
|
| #include "base/gtest_prod_util.h"
|
| #include "base/memory/ref_counted.h"
|
| @@ -38,6 +40,7 @@
|
| #include "media/cast/net/cast_transport_sender.h"
|
| #include "media/cast/net/pacing/paced_sender.h"
|
| #include "media/cast/net/rtcp/rtcp.h"
|
| +#include "media/cast/net/rtp/rtp_parser.h"
|
| #include "media/cast/net/rtp/rtp_sender.h"
|
|
|
| namespace media {
|
| @@ -65,19 +68,23 @@ class CastTransportSenderImpl : public CastTransportSender {
|
| // "disable_wifi_scan" (value ignored) - disable wifi scans while streaming
|
| // "media_streaming_mode" (value ignored) - turn media streaming mode on
|
| // Note, these options may be ignored on some platforms.
|
| + // TODO(hubbe): Too many callbacks, replace with an interface.
|
| CastTransportSenderImpl(
|
| net::NetLog* net_log,
|
| base::TickClock* clock,
|
| + const net::IPEndPoint& local_end_point,
|
| const net::IPEndPoint& remote_end_point,
|
| scoped_ptr<base::DictionaryValue> options,
|
| const CastTransportStatusCallback& status_callback,
|
| const BulkRawEventsCallback& raw_events_callback,
|
| base::TimeDelta raw_events_callback_interval,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
|
| + const PacketReceiverCallback& packet_callback,
|
| PacketSender* external_transport);
|
|
|
| ~CastTransportSenderImpl() override;
|
|
|
| + // CastTransportSender implementation.
|
| void InitializeAudio(const CastTransportRtpConfig& config,
|
| const RtcpCastMessageCallback& cast_message_cb,
|
| const RtcpRttCallback& rtt_cb) override;
|
| @@ -97,6 +104,18 @@ class CastTransportSenderImpl : public CastTransportSender {
|
|
|
| PacketReceiverCallback PacketReceiverForTesting() override;
|
|
|
| + // CastTransportReceiver implementation.
|
| + void AddValidSsrc(uint32 ssrc) override;
|
| +
|
| + void SendRtcpFromRtpReceiver(
|
| + uint32 ssrc,
|
| + uint32 sender_ssrc,
|
| + const RtcpTimeData& time_data,
|
| + const RtcpCastMessage* cast_message,
|
| + base::TimeDelta target_delay,
|
| + const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events,
|
| + const RtpReceiverStatistics* rtp_receiver_statistics) override;
|
| +
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, NacksCancelRetransmits);
|
| FRIEND_TEST_ALL_PREFIXES(CastTransportSenderImplTest, CancelRetransmits);
|
| @@ -118,7 +137,7 @@ class CastTransportSenderImpl : public CastTransportSender {
|
| void SendRawEvents();
|
|
|
| // Called when a packet is received.
|
| - void OnReceivedPacket(scoped_ptr<Packet> packet);
|
| + bool OnReceivedPacket(scoped_ptr<Packet> packet);
|
|
|
| // Called when a log message is received.
|
| void OnReceivedLogMessage(EventMediaType media_type,
|
| @@ -167,6 +186,13 @@ class CastTransportSenderImpl : public CastTransportSender {
|
| // audio packet.
|
| int64 last_byte_acked_for_audio_;
|
|
|
| + // Packets that don't match these ssrcs are ignored.
|
| + std::set<uint32> valid_ssrcs_;
|
| +
|
| + // Called with incoming packets. (Unless they match the
|
| + // channels created by Initialize{Audio,Video}.
|
| + PacketReceiverCallback packet_callback_;
|
| +
|
| scoped_ptr<net::ScopedWifiOptions> wifi_options_autoreset_;
|
|
|
| base::WeakPtrFactory<CastTransportSenderImpl> weak_factory_;
|
|
|