summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormikhal@webrtc.org <mikhal@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-03-06 23:29:33 +0000
committermikhal@webrtc.org <mikhal@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-03-06 23:29:33 +0000
commit78e450f6bf7616b68ed28921bda15767cbba79ed (patch)
treeec4df0d9a6ef8700d849c5caa5b5c73cf0791705
parent0f919be3c4aeb12157d9bda58c765050fed1ebf8 (diff)
downloadwebrtc-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.cc30
-rw-r--r--video_engine/vie_channel.cc3
-rw-r--r--video_engine/vie_sync_module.cc9
-rw-r--r--video_engine/vie_sync_module.h2
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();