Experiment for the nack module.
Testing the nack module by implementing it into the current jitter buffer
under the experiment WebRTC-NewVideoJitterBuffer.
BUG=webrtc:5514
Review URL: https://codereview.webrtc.org/1778503002
Cr-Commit-Position: refs/heads/master@{#11969}
diff --git a/webrtc/modules/video_coding/video_coding_impl.cc b/webrtc/modules/video_coding/video_coding_impl.cc
index 01a7a42..e5f0ee1 100644
--- a/webrtc/modules/video_coding/video_coding_impl.cc
+++ b/webrtc/modules/video_coding/video_coding_impl.cc
@@ -75,13 +75,18 @@
EventFactory* event_factory,
bool owns_event_factory,
VideoEncoderRateObserver* encoder_rate_observer,
- VCMQMSettingsCallback* qm_settings_callback)
+ VCMQMSettingsCallback* qm_settings_callback,
+ NackSender* nack_sender,
+ KeyFrameRequestSender* keyframe_request_sender)
: VideoCodingModule(),
sender_(clock,
&post_encode_callback_,
encoder_rate_observer,
qm_settings_callback),
- receiver_(clock, event_factory),
+ receiver_(clock,
+ event_factory,
+ nack_sender,
+ keyframe_request_sender),
own_event_factory_(owns_event_factory ? event_factory : NULL) {}
virtual ~VideoCodingModuleImpl() { own_event_factory_.reset(); }
@@ -291,20 +296,51 @@
VCMCodecDataBase::Codec(codecType, codec);
}
+// Create method for current interface, will be removed when the
+// new jitter buffer is in place.
VideoCodingModule* VideoCodingModule::Create(
Clock* clock,
VideoEncoderRateObserver* encoder_rate_observer,
VCMQMSettingsCallback* qm_settings_callback) {
- return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true,
- encoder_rate_observer, qm_settings_callback);
+ return VideoCodingModule::Create(clock, encoder_rate_observer,
+ qm_settings_callback,
+ nullptr, // NackSender
+ nullptr); // KeyframeRequestSender
}
+// Create method for the new jitter buffer.
+VideoCodingModule* VideoCodingModule::Create(
+ Clock* clock,
+ VideoEncoderRateObserver* encoder_rate_observer,
+ VCMQMSettingsCallback* qm_settings_callback,
+ NackSender* nack_sender,
+ KeyFrameRequestSender* keyframe_request_sender) {
+ return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true,
+ encoder_rate_observer, qm_settings_callback,
+ nack_sender,
+ keyframe_request_sender);
+}
+
+// Create method for current interface, will be removed when the
+// new jitter buffer is in place.
VideoCodingModule* VideoCodingModule::Create(Clock* clock,
EventFactory* event_factory) {
+ return VideoCodingModule::Create(clock, event_factory,
+ nullptr, // NackSender
+ nullptr); // KeyframeRequestSender
+}
+
+// Create method for the new jitter buffer.
+VideoCodingModule* VideoCodingModule::Create(
+ Clock* clock,
+ EventFactory* event_factory,
+ NackSender* nack_sender,
+ KeyFrameRequestSender* keyframe_request_sender) {
assert(clock);
assert(event_factory);
return new VideoCodingModuleImpl(clock, event_factory, false, nullptr,
- nullptr);
+ nullptr, nack_sender,
+ keyframe_request_sender);
}
} // namespace webrtc