Index: media/cast/cast_sender_impl.cc |
diff --git a/media/cast/cast_sender_impl.cc b/media/cast/cast_sender_impl.cc |
index a120d3a930df74b7f003891a0a73a1d946767863..c684858775d6c93651899a1f9f26ca8870246433 100644 |
--- a/media/cast/cast_sender_impl.cc |
+++ b/media/cast/cast_sender_impl.cc |
@@ -9,6 +9,7 @@ |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
#include "media/base/video_frame.h" |
+#include "media/cast/net/rtcp/rtcp_receiver.h" |
namespace media { |
namespace cast { |
@@ -142,68 +143,6 @@ CastSenderImpl::~CastSenderImpl() { |
VLOG(1) << "CastSenderImpl@" << this << "::~CastSenderImpl()"; |
} |
-// ReceivedPacket handle the incoming packets to the cast sender |
-// it's only expected to receive RTCP feedback packets from the remote cast |
-// receiver. The class verifies that that it is a RTCP packet and based on the |
-// SSRC of the incoming packet route the packet to the correct sender; audio or |
-// video. |
-// |
-// Definition of SSRC as defined in RFC 3550. |
-// Synchronization source (SSRC): The source of a stream of RTP |
-// packets, identified by a 32-bit numeric SSRC identifier carried in |
-// the RTP header so as not to be dependent upon the network address. |
-// All packets from a synchronization source form part of the same |
-// timing and sequence number space, so a receiver groups packets by |
-// synchronization source for playback. Examples of synchronization |
-// sources include the sender of a stream of packets derived from a |
-// signal source such as a microphone or a camera, or an RTP mixer |
-// (see below). A synchronization source may change its data format, |
-// e.g., audio encoding, over time. The SSRC identifier is a |
-// randomly chosen value meant to be globally unique within a |
-// particular RTP session (see Section 8). A participant need not |
-// use the same SSRC identifier for all the RTP sessions in a |
-// multimedia session; the binding of the SSRC identifiers is |
-// provided through RTCP (see Section 6.5.1). If a participant |
-// generates multiple streams in one RTP session, for example from |
-// separate video cameras, each MUST be identified as a different |
-// SSRC. |
-void CastSenderImpl::ReceivedPacket(scoped_ptr<Packet> packet) { |
- DCHECK(cast_environment_); |
- size_t length = packet->size(); |
- const uint8_t* data = &packet->front(); |
- if (!Rtcp::IsRtcpPacket(data, length)) { |
- VLOG(1) << "CastSenderImpl@" << this << "::ReceivedPacket() -- " |
- << "Received an invalid (non-RTCP?) packet in the cast sender."; |
- return; |
- } |
- uint32 ssrc_of_sender = Rtcp::GetSsrcOfSender(data, length); |
- if (ssrc_of_sender == ssrc_of_audio_sender_) { |
- if (!audio_sender_) { |
- NOTREACHED(); |
- return; |
- } |
- cast_environment_->PostTask(CastEnvironment::MAIN, |
- FROM_HERE, |
- base::Bind(&AudioSender::IncomingRtcpPacket, |
- audio_sender_->AsWeakPtr(), |
- base::Passed(&packet))); |
- } else if (ssrc_of_sender == ssrc_of_video_sender_) { |
- if (!video_sender_) { |
- NOTREACHED(); |
- return; |
- } |
- cast_environment_->PostTask(CastEnvironment::MAIN, |
- FROM_HERE, |
- base::Bind(&VideoSender::IncomingRtcpPacket, |
- video_sender_->AsWeakPtr(), |
- base::Passed(&packet))); |
- } else { |
- VLOG(1) << "CastSenderImpl@" << this << "::ReceivedPacket() -- " |
- << "Received a RTCP packet with a non matching sender SSRC " |
- << ssrc_of_sender; |
- } |
-} |
- |
scoped_refptr<AudioFrameInput> CastSenderImpl::audio_frame_input() { |
return audio_frame_input_; |
} |
@@ -212,10 +151,5 @@ scoped_refptr<VideoFrameInput> CastSenderImpl::video_frame_input() { |
return video_frame_input_; |
} |
-PacketReceiverCallback CastSenderImpl::packet_receiver() { |
- return base::Bind(&CastSenderImpl::ReceivedPacket, |
- weak_factory_.GetWeakPtr()); |
-} |
- |
} // namespace cast |
} // namespace media |