diff options
Diffstat (limited to 'chromium/media/cast/rtp_receiver/rtp_receiver.cc')
-rw-r--r-- | chromium/media/cast/rtp_receiver/rtp_receiver.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/chromium/media/cast/rtp_receiver/rtp_receiver.cc b/chromium/media/cast/rtp_receiver/rtp_receiver.cc index 97e9b03032c..3c804d9bd9b 100644 --- a/chromium/media/cast/rtp_receiver/rtp_receiver.cc +++ b/chromium/media/cast/rtp_receiver/rtp_receiver.cc @@ -5,18 +5,21 @@ #include "media/cast/rtp_receiver/rtp_receiver.h" #include "base/logging.h" -#include "media/cast/rtp_common/rtp_defines.h" #include "media/cast/rtp_receiver/receiver_stats.h" #include "media/cast/rtp_receiver/rtp_parser/rtp_parser.h" +#include "media/cast/rtp_receiver/rtp_receiver_defines.h" +#include "net/base/big_endian.h" namespace media { namespace cast { -RtpReceiver::RtpReceiver(const AudioReceiverConfig* audio_config, +RtpReceiver::RtpReceiver(base::TickClock* clock, + const AudioReceiverConfig* audio_config, const VideoReceiverConfig* video_config, RtpData* incoming_payload_callback) { DCHECK(incoming_payload_callback) << "Invalid argument"; DCHECK(audio_config || video_config) << "Invalid argument"; + // Configure parser. RtpParserConfig config; if (audio_config) { @@ -29,13 +32,23 @@ RtpReceiver::RtpReceiver(const AudioReceiverConfig* audio_config, config.payload_type = video_config->rtp_payload_type; config.video_codec = video_config->codec; } - stats_.reset(new ReceiverStats(config.ssrc)); + stats_.reset(new ReceiverStats(clock)); parser_.reset(new RtpParser(incoming_payload_callback, config)); } RtpReceiver::~RtpReceiver() {} -bool RtpReceiver::ReceivedPacket(const uint8* packet, int length) { +// static +uint32 RtpReceiver::GetSsrcOfSender(const uint8* rtcp_buffer, size_t length) { + DCHECK_GE(length, kMinLengthOfRtp) << "Invalid RTP packet"; + uint32 ssrc_of_sender; + net::BigEndianReader big_endian_reader(rtcp_buffer, length); + big_endian_reader.Skip(8); // Skip header + big_endian_reader.ReadU32(&ssrc_of_sender); + return ssrc_of_sender; +} + +bool RtpReceiver::ReceivedPacket(const uint8* packet, size_t length) { RtpCastHeader rtp_header; if (!parser_->ParsePacket(packet, length, &rtp_header)) return false; |