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));
|
tbChannel.videoChannel, false));
|
||||||
|
|
||||||
// Buffering mode - sender side.
|
// 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).
|
// Set VoE (required to set up stream-sync).
|
||||||
webrtc::VoiceEngine* voice_engine = webrtc::VoiceEngine::Create();
|
webrtc::VoiceEngine* voice_engine = webrtc::VoiceEngine::Create();
|
||||||
EXPECT_TRUE(NULL != voice_engine);
|
EXPECT_TRUE(NULL != voice_engine);
|
||||||
@ -698,17 +716,6 @@ void ViEAutoTest::ViERtpRtcpAPITest()
|
|||||||
EXPECT_EQ(0, ViE.base->ConnectAudioChannel(tbChannel.videoChannel,
|
EXPECT_EQ(0, ViE.base->ConnectAudioChannel(tbChannel.videoChannel,
|
||||||
audio_channel));
|
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(
|
EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode(
|
||||||
invalid_channel_id, 0));
|
invalid_channel_id, 0));
|
||||||
EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode(
|
EXPECT_EQ(-1, ViE.rtp_rtcp->SetReceiverBufferingMode(
|
||||||
@ -718,6 +725,7 @@ void ViEAutoTest::ViERtpRtcpAPITest()
|
|||||||
tbChannel.videoChannel, invalid_delay));
|
tbChannel.videoChannel, invalid_delay));
|
||||||
EXPECT_EQ(0, ViE.rtp_rtcp->SetReceiverBufferingMode(
|
EXPECT_EQ(0, ViE.rtp_rtcp->SetReceiverBufferingMode(
|
||||||
tbChannel.videoChannel, 5000));
|
tbChannel.videoChannel, 5000));
|
||||||
|
|
||||||
// Real-time mode - sender side.
|
// Real-time mode - sender side.
|
||||||
EXPECT_EQ(0, ViE.rtp_rtcp->SetSenderBufferingMode(
|
EXPECT_EQ(0, ViE.rtp_rtcp->SetSenderBufferingMode(
|
||||||
tbChannel.videoChannel, 0));
|
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_.SetNackSettings(max_nack_list_size, max_nack_reordering_threshold_);
|
||||||
vcm_.SetMinReceiverDelay(target_delay_ms);
|
vcm_.SetMinReceiverDelay(target_delay_ms);
|
||||||
vie_sync_.SetTargetBufferingDelay(target_delay_ms);
|
if (vie_sync_.SetTargetBufferingDelay(target_delay_ms) < 0)
|
||||||
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,14 +172,19 @@ WebRtc_Word32 ViESyncModule::Process() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViESyncModule::SetTargetBufferingDelay(int target_delay_ms) {
|
int ViESyncModule::SetTargetBufferingDelay(int target_delay_ms) {
|
||||||
CriticalSectionScoped cs(data_cs_.get());
|
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);
|
sync_->SetTargetBufferingDelay(target_delay_ms);
|
||||||
// Setting initial playout delay to voice engine (video engine is updated via
|
// Setting initial playout delay to voice engine (video engine is updated via
|
||||||
// the VCM interface).
|
// the VCM interface).
|
||||||
assert(voe_sync_interface_ != NULL);
|
|
||||||
voe_sync_interface_->SetInitialPlayoutDelay(voe_channel_id_,
|
voe_sync_interface_->SetInitialPlayoutDelay(voe_channel_id_,
|
||||||
target_delay_ms);
|
target_delay_ms);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
@ -41,7 +41,7 @@ class ViESyncModule : public Module {
|
|||||||
int VoiceChannel();
|
int VoiceChannel();
|
||||||
|
|
||||||
// Set target delay for buffering mode (0 = real-time mode).
|
// Set target delay for buffering mode (0 = real-time mode).
|
||||||
void SetTargetBufferingDelay(int target_delay_ms);
|
int SetTargetBufferingDelay(int target_delay_ms);
|
||||||
|
|
||||||
// Implements Module.
|
// Implements Module.
|
||||||
virtual WebRtc_Word32 TimeUntilNextProcess();
|
virtual WebRtc_Word32 TimeUntilNextProcess();
|
||||||
|
Reference in New Issue
Block a user