Chromium Code Reviews| Index: webrtc/video/rtp_streams_synchronizer.cc | 
| diff --git a/webrtc/video/vie_sync_module.cc b/webrtc/video/rtp_streams_synchronizer.cc | 
| similarity index 65% | 
| rename from webrtc/video/vie_sync_module.cc | 
| rename to webrtc/video/rtp_streams_synchronizer.cc | 
| index 2e62ff8143938d3591925056657b8a84bfbb082e..735587fe0e9fb8f5a79dbc81baddbf23c0608e83 100644 | 
| --- a/webrtc/video/vie_sync_module.cc | 
| +++ b/webrtc/video/rtp_streams_synchronizer.cc | 
| @@ -8,7 +8,7 @@ | 
| * be found in the AUTHORS file in the root of the source tree. | 
| */ | 
| -#include "webrtc/video/vie_sync_module.h" | 
| +#include "webrtc/video/rtp_streams_synchronizer.h" | 
| #include "webrtc/base/checks.h" | 
| #include "webrtc/base/logging.h" | 
| @@ -25,17 +25,17 @@ | 
| namespace webrtc { | 
| namespace { | 
| int UpdateMeasurements(StreamSynchronization::Measurements* stream, | 
| - const RtpRtcp& rtp_rtcp, const RtpReceiver& receiver) { | 
| - if (!receiver.Timestamp(&stream->latest_timestamp)) | 
| + RtpRtcp* rtp_rtcp, RtpReceiver* receiver) { | 
| + if (!receiver->Timestamp(&stream->latest_timestamp)) | 
| return -1; | 
| - if (!receiver.LastReceivedTimeMs(&stream->latest_receive_time_ms)) | 
| + if (!receiver->LastReceivedTimeMs(&stream->latest_receive_time_ms)) | 
| return -1; | 
| uint32_t ntp_secs = 0; | 
| uint32_t ntp_frac = 0; | 
| uint32_t rtp_timestamp = 0; | 
| - if (rtp_rtcp.RemoteNTP(&ntp_secs, &ntp_frac, nullptr, nullptr, | 
| - &rtp_timestamp) != 0) { | 
| + if (rtp_rtcp->RemoteNTP(&ntp_secs, &ntp_frac, nullptr, nullptr, | 
| + &rtp_timestamp) != 0) { | 
| return -1; | 
| } | 
| @@ -49,57 +49,69 @@ int UpdateMeasurements(StreamSynchronization::Measurements* stream, | 
| } | 
| } // namespace | 
| -ViESyncModule::ViESyncModule(vcm::VideoReceiver* video_receiver) | 
| - : video_receiver_(video_receiver), | 
| - clock_(Clock::GetRealTimeClock()), | 
| - rtp_receiver_(nullptr), | 
| - video_rtp_rtcp_(nullptr), | 
| +RtpStreamsSynchronizer::RtpStreamsSynchronizer( | 
| + vcm::VideoReceiver* video_receiver, | 
| + RtpStreamReceiver* rtp_stream_receiver) | 
| + : clock_(Clock::GetRealTimeClock()), | 
| + video_receiver_(video_receiver), | 
| + video_rtp_receiver_(rtp_stream_receiver->GetRtpReceiver()), | 
| + video_rtp_rtcp_(rtp_stream_receiver->rtp_rtcp()), | 
| voe_channel_id_(-1), | 
| voe_sync_interface_(nullptr), | 
| - last_sync_time_(rtc::TimeNanos()), | 
| - sync_() {} | 
| - | 
| -ViESyncModule::~ViESyncModule() { | 
| + audio_rtp_receiver_(nullptr), | 
| + audio_rtp_rtcp_(nullptr), | 
| + sync_(), | 
| + last_sync_time_(rtc::TimeNanos()) { | 
| + process_thread_checker_.DetachFromThread(); | 
| } | 
| -void ViESyncModule::ConfigureSync(int voe_channel_id, | 
| - VoEVideoSync* voe_sync_interface, | 
| - RtpRtcp* video_rtcp_module, | 
| - RtpReceiver* rtp_receiver) { | 
| +void RtpStreamsSynchronizer::ConfigureSync(int voe_channel_id, | 
| + VoEVideoSync* voe_sync_interface) { | 
| if (voe_channel_id != -1) | 
| RTC_DCHECK(voe_sync_interface); | 
| - rtc::CritScope lock(&data_cs_); | 
| - // Prevent expensive no-ops. | 
| + | 
| + rtc::CritScope lock(&crit_); | 
| if (voe_channel_id_ == voe_channel_id && | 
| - voe_sync_interface_ == voe_sync_interface && | 
| - rtp_receiver_ == rtp_receiver && video_rtp_rtcp_ == video_rtcp_module) { | 
| + voe_sync_interface_ == voe_sync_interface) { | 
| + // This prevents expensive no-ops. | 
| return; | 
| } | 
| voe_channel_id_ = voe_channel_id; | 
| voe_sync_interface_ = voe_sync_interface; | 
| - rtp_receiver_ = rtp_receiver; | 
| - video_rtp_rtcp_ = video_rtcp_module; | 
| - sync_.reset( | 
| - new StreamSynchronization(video_rtp_rtcp_->SSRC(), voe_channel_id)); | 
| + | 
| + audio_rtp_rtcp_ = nullptr; | 
| + audio_rtp_receiver_ = nullptr; | 
| + sync_.reset(nullptr); | 
| + | 
| + if (voe_channel_id_ != -1) { | 
| + voe_sync_interface_->GetRtpRtcp(voe_channel_id_, &audio_rtp_rtcp_, | 
| + &audio_rtp_receiver_); | 
| + RTC_DCHECK(audio_rtp_rtcp_); | 
| + RTC_DCHECK(audio_rtp_receiver_); | 
| + sync_.reset(new StreamSynchronization(video_rtp_rtcp_->SSRC(), | 
| + voe_channel_id_)); | 
| 
 
åsapersson
2016/08/05 09:11:47
nit: check indentation
 
mflodman
2016/08/05 12:33:42
Done.
 
 | 
| + } | 
| } | 
| -int64_t ViESyncModule::TimeUntilNextProcess() { | 
| +int64_t RtpStreamsSynchronizer::TimeUntilNextProcess() { | 
| + RTC_DCHECK_RUN_ON(&process_thread_checker_); | 
| const int64_t kSyncIntervalMs = 1000; | 
| return kSyncIntervalMs - | 
| (rtc::TimeNanos() - last_sync_time_) / rtc::kNumNanosecsPerMillisec; | 
| } | 
| -void ViESyncModule::Process() { | 
| - rtc::CritScope lock(&data_cs_); | 
| - last_sync_time_ = rtc::TimeNanos(); | 
| +void RtpStreamsSynchronizer::Process() { | 
| + RTC_DCHECK_RUN_ON(&process_thread_checker_); | 
| const int current_video_delay_ms = video_receiver_->Delay(); | 
| + last_sync_time_ = rtc::TimeNanos(); | 
| + rtc::CritScope lock(&crit_); | 
| if (voe_channel_id_ == -1) { | 
| return; | 
| } | 
| - assert(video_rtp_rtcp_ && voe_sync_interface_); | 
| - assert(sync_.get()); | 
| + RTC_DCHECK(voe_sync_interface_); | 
| + RTC_DCHECK(sync_.get()); | 
| int audio_jitter_buffer_delay_ms = 0; | 
| int playout_buffer_delay_ms = 0; | 
| @@ -111,22 +123,13 @@ void ViESyncModule::Process() { | 
| const int current_audio_delay_ms = audio_jitter_buffer_delay_ms + | 
| playout_buffer_delay_ms; | 
| - RtpRtcp* voice_rtp_rtcp = nullptr; | 
| - RtpReceiver* voice_receiver = nullptr; | 
| - if (voe_sync_interface_->GetRtpRtcp(voe_channel_id_, &voice_rtp_rtcp, | 
| - &voice_receiver) != 0) { | 
| - return; | 
| - } | 
| - assert(voice_rtp_rtcp); | 
| - assert(voice_receiver); | 
| - | 
| - if (UpdateMeasurements(&video_measurement_, *video_rtp_rtcp_, | 
| - *rtp_receiver_) != 0) { | 
| + if (UpdateMeasurements(&video_measurement_, video_rtp_rtcp_, | 
| + video_rtp_receiver_) != 0) { | 
| return; | 
| } | 
| - if (UpdateMeasurements(&audio_measurement_, *voice_rtp_rtcp, | 
| - *voice_receiver) != 0) { | 
| + if (UpdateMeasurements(&audio_measurement_, audio_rtp_rtcp_, | 
| + audio_rtp_receiver_) != 0) { | 
| return; | 
| } | 
| @@ -158,9 +161,9 @@ void ViESyncModule::Process() { | 
| video_receiver_->SetMinimumPlayoutDelay(target_video_delay_ms); | 
| } | 
| -bool ViESyncModule::GetStreamSyncOffsetInMs(const VideoFrame& frame, | 
| - int64_t* stream_offset_ms) const { | 
| - rtc::CritScope lock(&data_cs_); | 
| +bool RtpStreamsSynchronizer::GetStreamSyncOffsetInMs( | 
| + const VideoFrame& frame, int64_t* stream_offset_ms) const { | 
| + rtc::CritScope lock(&crit_); | 
| if (voe_channel_id_ == -1) | 
| return false; |