| Index: webrtc/video/rtp_stream_receiver.cc
|
| diff --git a/webrtc/video/rtp_stream_receiver.cc b/webrtc/video/rtp_stream_receiver.cc
|
| index d49d0959f32fc826dd3da0cb26d7dda3fe1e0079..cb1ffc90445ba869c6465ee97386e738eaa76209 100644
|
| --- a/webrtc/video/rtp_stream_receiver.cc
|
| +++ b/webrtc/video/rtp_stream_receiver.cc
|
| @@ -26,6 +26,8 @@
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h"
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| #include "webrtc/modules/rtp_rtcp/include/ulpfec_receiver.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
|
| +#include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h"
|
| #include "webrtc/modules/video_coding/frame_object.h"
|
| #include "webrtc/modules/video_coding/h264_sprop_parameter_sets.h"
|
| #include "webrtc/modules/video_coding/h264_sps_pps_tracker.h"
|
| @@ -316,57 +318,54 @@ void RtpStreamReceiver::OnIncomingSSRCChanged(const uint32_t ssrc) {
|
| rtp_rtcp_->SetRemoteSSRC(ssrc);
|
| }
|
|
|
| -bool RtpStreamReceiver::DeliverRtp(const uint8_t* rtp_packet,
|
| - size_t rtp_packet_length,
|
| - const PacketTime& packet_time) {
|
| +void RtpStreamReceiver::OnRtpPacket(const RtpPacketReceived& packet) {
|
| {
|
| rtc::CritScope lock(&receive_cs_);
|
| if (!receiving_) {
|
| - return false;
|
| + return;
|
| }
|
| }
|
|
|
| - RTPHeader header;
|
| - if (!rtp_header_parser_->Parse(rtp_packet, rtp_packet_length,
|
| - &header)) {
|
| - return false;
|
| - }
|
| - int64_t arrival_time_ms;
|
| int64_t now_ms = clock_->TimeInMilliseconds();
|
| - if (packet_time.timestamp != -1)
|
| - arrival_time_ms = (packet_time.timestamp + 500) / 1000;
|
| - else
|
| - arrival_time_ms = now_ms;
|
|
|
| {
|
| // Periodically log the RTP header of incoming packets.
|
| rtc::CritScope lock(&receive_cs_);
|
| if (now_ms - last_packet_log_ms_ > kPacketLogIntervalMs) {
|
| std::stringstream ss;
|
| - ss << "Packet received on SSRC: " << header.ssrc << " with payload type: "
|
| - << static_cast<int>(header.payloadType) << ", timestamp: "
|
| - << header.timestamp << ", sequence number: " << header.sequenceNumber
|
| - << ", arrival time: " << arrival_time_ms;
|
| - if (header.extension.hasTransmissionTimeOffset)
|
| - ss << ", toffset: " << header.extension.transmissionTimeOffset;
|
| - if (header.extension.hasAbsoluteSendTime)
|
| - ss << ", abs send time: " << header.extension.absoluteSendTime;
|
| + ss << "Packet received on SSRC: " << packet.Ssrc()
|
| + << " with payload type: " << static_cast<int>(packet.PayloadType())
|
| + << ", timestamp: " << packet.Timestamp()
|
| + << ", sequence number: " << packet.SequenceNumber()
|
| + << ", arrival time: " << packet.arrival_time_ms();
|
| + int32_t time_offset;
|
| + if (packet.GetExtension<TransmissionOffset>(&time_offset)) {
|
| + ss << ", toffset: " << time_offset;
|
| + }
|
| + uint32_t send_time;
|
| + if (packet.GetExtension<AbsoluteSendTime>(&send_time)) {
|
| + ss << ", abs send time: " << send_time;
|
| + }
|
| LOG(LS_INFO) << ss.str();
|
| last_packet_log_ms_ = now_ms;
|
| }
|
| }
|
|
|
| + // TODO(nisse): Delete use of GetHeader, but needs refactoring of
|
| + // ReceivePacket and IncomingPacket methods below.
|
| + RTPHeader header;
|
| + packet.GetHeader(&header);
|
| +
|
| header.payload_type_frequency = kVideoPayloadTypeFrequency;
|
|
|
| bool in_order = IsPacketInOrder(header);
|
| rtp_payload_registry_.SetIncomingPayloadType(header);
|
| - bool ret = ReceivePacket(rtp_packet, rtp_packet_length, header, in_order);
|
| + ReceivePacket(packet.data(), packet.size(), header, in_order);
|
| // Update receive statistics after ReceivePacket.
|
| // Receive statistics will be reset if the payload type changes (make sure
|
| // that the first packet is included in the stats).
|
| rtp_receive_statistics_->IncomingPacket(
|
| - header, rtp_packet_length, IsPacketRetransmitted(header, in_order));
|
| - return ret;
|
| + header, packet.size(), IsPacketRetransmitted(header, in_order));
|
| }
|
|
|
| int32_t RtpStreamReceiver::RequestKeyFrame() {
|
| @@ -424,6 +423,7 @@ void RtpStreamReceiver::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) {
|
| nack_module_->UpdateRtt(max_rtt_ms);
|
| }
|
|
|
| +// TODO(nisse): Drop return value.
|
| bool RtpStreamReceiver::ReceivePacket(const uint8_t* packet,
|
| size_t packet_length,
|
| const RTPHeader& header,
|
|
|