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@3625 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
Reference in New Issue
Block a user