diff options
author | mikhal@webrtc.org <mikhal@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-03-06 23:29:33 +0000 |
---|---|---|
committer | mikhal@webrtc.org <mikhal@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-03-06 23:29:33 +0000 |
commit | 78e450f6bf7616b68ed28921bda15767cbba79ed (patch) | |
tree | ec4df0d9a6ef8700d849c5caa5b5c73cf0791705 | |
parent | 0f919be3c4aeb12157d9bda58c765050fed1ebf8 (diff) | |
download | webrtc-78e450f6bf7616b68ed28921bda15767cbba79ed.tar.gz |
Enabling bufffering mode with no sync module or VoE
BUG= 1454
Review URL: https://webrtc-codereview.appspot.com/1149006
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3625 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc | 30 | ||||
-rw-r--r-- | video_engine/vie_channel.cc | 3 | ||||
-rw-r--r-- | video_engine/vie_sync_module.cc | 9 | ||||
-rw-r--r-- | video_engine/vie_sync_module.h | 2 |
4 files changed, 29 insertions, 15 deletions
diff --git a/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc b/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc index e944c0c5..a95eab31 100644 --- a/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc +++ b/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc @@ -686,6 +686,24 @@ void ViEAutoTest::ViERtpRtcpAPITest() tbChannel.videoChannel, false)); // Buffering mode - sender side. + EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( + invalid_channel_id, 0)); + int invalid_delay = -1; + EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( + tbChannel.videoChannel, invalid_delay)); + invalid_delay = 15000; + EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( + tbChannel.videoChannel, invalid_delay)); + EXPECT_EQ(0, ViE.rtp_rtcp->SetSenderBufferingMode( + tbChannel.videoChannel, 5000)); + + // Buffering mode - receiver side. + // Run without VoE to verify it that does not crash, but return an error. + EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode( + tbChannel.videoChannel, 0)); + EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode( + tbChannel.videoChannel, 2000)); + // Set VoE (required to set up stream-sync). webrtc::VoiceEngine* voice_engine = webrtc::VoiceEngine::Create(); EXPECT_TRUE(NULL != voice_engine); @@ -698,17 +716,6 @@ void ViEAutoTest::ViERtpRtcpAPITest() EXPECT_EQ(0, ViE.base->ConnectAudioChannel(tbChannel.videoChannel, audio_channel)); - EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( - invalid_channel_id, 0)); - int invalid_delay = -1; - EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( - tbChannel.videoChannel, invalid_delay)); - invalid_delay = 15000; - EXPECT_EQ(-1, ViE.rtp_rtcp->SetSenderBufferingMode( - tbChannel.videoChannel, invalid_delay)); - EXPECT_EQ(0, ViE.rtp_rtcp->SetSenderBufferingMode( - tbChannel.videoChannel, 5000)); - // Buffering mode - receiver side. EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode( invalid_channel_id, 0)); EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode( @@ -718,6 +725,7 @@ void ViEAutoTest::ViERtpRtcpAPITest() tbChannel.videoChannel, invalid_delay)); EXPECT_EQ(0, ViE.rtp_rtcp->SetReceiverBufferingMode( tbChannel.videoChannel, 5000)); + // Real-time mode - sender side. EXPECT_EQ(0, ViE.rtp_rtcp->SetSenderBufferingMode( tbChannel.videoChannel, 0)); diff --git a/video_engine/vie_channel.cc b/video_engine/vie_channel.cc index 70d1a373..9b505a23 100644 --- a/video_engine/vie_channel.cc +++ b/video_engine/vie_channel.cc @@ -799,7 +799,8 @@ int ViEChannel::SetReceiverBufferingMode(int target_delay_ms) { } vcm_.SetNackSettings(max_nack_list_size, max_nack_reordering_threshold_); vcm_.SetMinReceiverDelay(target_delay_ms); - vie_sync_.SetTargetBufferingDelay(target_delay_ms); + if (vie_sync_.SetTargetBufferingDelay(target_delay_ms) < 0) + return -1; return 0; } diff --git a/video_engine/vie_sync_module.cc b/video_engine/vie_sync_module.cc index e01b0e27..e9738986 100644 --- a/video_engine/vie_sync_module.cc +++ b/video_engine/vie_sync_module.cc @@ -172,14 +172,19 @@ WebRtc_Word32 ViESyncModule::Process() { return 0; } -void ViESyncModule::SetTargetBufferingDelay(int target_delay_ms) { +int ViESyncModule::SetTargetBufferingDelay(int target_delay_ms) { CriticalSectionScoped cs(data_cs_.get()); + if (!voe_sync_interface_) { + WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideo, vie_channel_->Id(), + "voe_sync_interface_ NULL, can't set playout delay."); + return -1; + } sync_->SetTargetBufferingDelay(target_delay_ms); // Setting initial playout delay to voice engine (video engine is updated via // the VCM interface). - assert(voe_sync_interface_ != NULL); voe_sync_interface_->SetInitialPlayoutDelay(voe_channel_id_, target_delay_ms); + return 0; } } // namespace webrtc diff --git a/video_engine/vie_sync_module.h b/video_engine/vie_sync_module.h index 8f10c611..94dae57f 100644 --- a/video_engine/vie_sync_module.h +++ b/video_engine/vie_sync_module.h @@ -41,7 +41,7 @@ class ViESyncModule : public Module { int VoiceChannel(); // Set target delay for buffering mode (0 = real-time mode). - void SetTargetBufferingDelay(int target_delay_ms); + int SetTargetBufferingDelay(int target_delay_ms); // Implements Module. virtual WebRtc_Word32 TimeUntilNextProcess(); |