Index: webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc |
index 5950dc75545fc713ed7e16df14b4d150bb80db2a..b9bf8e97e5bfe3405f01fe0b3c316eede9a20f65 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc |
@@ -36,7 +36,8 @@ RtpReceiver* RtpReceiver::CreateVideoReceiver( |
return new RtpReceiverImpl( |
clock, NullObjectRtpAudioFeedback(), incoming_messages_callback, |
rtp_payload_registry, |
- RTPReceiverStrategy::CreateVideoStrategy(incoming_payload_callback)); |
+ RTPReceiverStrategy::CreateVideoStrategy(incoming_payload_callback), |
+ false /*is_audio*/); |
} |
RtpReceiver* RtpReceiver::CreateAudioReceiver( |
@@ -55,7 +56,8 @@ RtpReceiver* RtpReceiver::CreateAudioReceiver( |
clock, incoming_audio_feedback, incoming_messages_callback, |
rtp_payload_registry, |
RTPReceiverStrategy::CreateAudioStrategy(incoming_payload_callback, |
- incoming_audio_feedback)); |
+ incoming_audio_feedback), |
+ true /*is_audio*/); |
} |
RtpReceiverImpl::RtpReceiverImpl( |
@@ -63,10 +65,12 @@ RtpReceiverImpl::RtpReceiverImpl( |
RtpAudioFeedback* incoming_audio_messages_callback, |
RtpFeedback* incoming_messages_callback, |
RTPPayloadRegistry* rtp_payload_registry, |
- RTPReceiverStrategy* rtp_media_receiver) |
+ RTPReceiverStrategy* rtp_media_receiver, |
+ bool is_audio) |
: clock_(clock), |
rtp_payload_registry_(rtp_payload_registry), |
rtp_media_receiver_(rtp_media_receiver), |
+ is_audio_(is_audio), |
cb_rtp_feedback_(incoming_messages_callback), |
critical_section_rtp_receiver_( |
CriticalSectionWrapper::CreateCriticalSection()), |
@@ -185,6 +189,7 @@ bool RtpReceiverImpl::IncomingRtpPacket( |
size_t payload_data_length = payload_length - rtp_header.paddingLength; |
+ |
bool is_first_packet_in_frame = false; |
{ |
CriticalSectionScoped lock(critical_section_rtp_receiver_.get()); |
@@ -205,9 +210,11 @@ bool RtpReceiverImpl::IncomingRtpPacket( |
return false; |
} |
+ bool is_first_packet_in_first_frame = false; |
{ |
CriticalSectionScoped lock(critical_section_rtp_receiver_.get()); |
+ is_first_packet_in_first_frame = (last_receive_time_ == 0); |
last_receive_time_ = clock_->TimeInMilliseconds(); |
last_received_payload_length_ = payload_data_length; |
@@ -219,6 +226,12 @@ bool RtpReceiverImpl::IncomingRtpPacket( |
last_received_sequence_number_ = rtp_header.sequenceNumber; |
} |
} |
+ |
+ if (is_first_packet_in_first_frame) { |
mflodman
2016/03/15 11:05:45
I'd prefer to put this logic in RTPReceiver[Audio/
pthatcher1
2016/03/15 16:44:30
I think it's strange that a parse method would mod
skvlad
2016/03/16 02:05:56
Done.
mflodman
2016/03/16 14:30:54
True, but I do prefer that over adding back a audi
|
+ LOG(LS_INFO) << "Received first RTP packet of the first " << |
+ (is_audio_ ? "audio" : "video") << " frame"; |
+ } |
+ |
return true; |
} |