| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "media/cast/rtp_receiver/rtp_receiver.h" | |
| 6 | |
| 7 #include "base/big_endian.h" | |
| 8 #include "base/logging.h" | |
| 9 #include "media/cast/rtp_receiver/receiver_stats.h" | |
| 10 #include "media/cast/rtp_receiver/rtp_parser/rtp_parser.h" | |
| 11 #include "media/cast/rtp_receiver/rtp_receiver_defines.h" | |
| 12 | |
| 13 namespace media { | |
| 14 namespace cast { | |
| 15 | |
| 16 RtpReceiver::RtpReceiver(base::TickClock* clock, | |
| 17 const FrameReceiverConfig* audio_config, | |
| 18 const FrameReceiverConfig* video_config) : | |
| 19 packet_parser_(audio_config ? audio_config->incoming_ssrc : | |
| 20 (video_config ? video_config->incoming_ssrc : 0), | |
| 21 audio_config ? audio_config->rtp_payload_type : | |
| 22 (video_config ? video_config->rtp_payload_type : 0)), | |
| 23 stats_(clock) { | |
| 24 DCHECK(audio_config || video_config); | |
| 25 } | |
| 26 | |
| 27 RtpReceiver::~RtpReceiver() {} | |
| 28 | |
| 29 // static | |
| 30 uint32 RtpReceiver::GetSsrcOfSender(const uint8* rtcp_buffer, size_t length) { | |
| 31 DCHECK_GE(length, kMinLengthOfRtp) << "Invalid RTP packet"; | |
| 32 uint32 ssrc_of_sender; | |
| 33 base::BigEndianReader big_endian_reader( | |
| 34 reinterpret_cast<const char*>(rtcp_buffer), length); | |
| 35 big_endian_reader.Skip(8); // Skip header | |
| 36 big_endian_reader.ReadU32(&ssrc_of_sender); | |
| 37 return ssrc_of_sender; | |
| 38 } | |
| 39 | |
| 40 bool RtpReceiver::ReceivedPacket(const uint8* packet, size_t length) { | |
| 41 RtpCastHeader rtp_header; | |
| 42 const uint8* payload_data; | |
| 43 size_t payload_size; | |
| 44 if (!packet_parser_.ParsePacket( | |
| 45 packet, length, &rtp_header, &payload_data, &payload_size)) { | |
| 46 return false; | |
| 47 } | |
| 48 | |
| 49 OnReceivedPayloadData(payload_data, payload_size, rtp_header); | |
| 50 stats_.UpdateStatistics(rtp_header); | |
| 51 return true; | |
| 52 } | |
| 53 | |
| 54 } // namespace cast | |
| 55 } // namespace media | |
| OLD | NEW |