Chromium Code Reviews| 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; |
| } |