Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: webrtc/modules/video_coding/video_coding_impl.cc

Issue 1778503002: Experiment for the nack module. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 std::unique_ptr<CriticalSectionWrapper> cs_; 68 std::unique_ptr<CriticalSectionWrapper> cs_;
69 EncodedImageCallback* callback_ GUARDED_BY(cs_); 69 EncodedImageCallback* callback_ GUARDED_BY(cs_);
70 }; 70 };
71 71
72 class VideoCodingModuleImpl : public VideoCodingModule { 72 class VideoCodingModuleImpl : public VideoCodingModule {
73 public: 73 public:
74 VideoCodingModuleImpl(Clock* clock, 74 VideoCodingModuleImpl(Clock* clock,
75 EventFactory* event_factory, 75 EventFactory* event_factory,
76 bool owns_event_factory, 76 bool owns_event_factory,
77 VideoEncoderRateObserver* encoder_rate_observer, 77 VideoEncoderRateObserver* encoder_rate_observer,
78 VCMQMSettingsCallback* qm_settings_callback) 78 VCMQMSettingsCallback* qm_settings_callback,
79 ProcessThread* module_process_thread,
80 NackSender* nack_sender,
81 KeyFrameRequestSender* keyframe_request_sender)
79 : VideoCodingModule(), 82 : VideoCodingModule(),
80 sender_(clock, 83 sender_(clock,
81 &post_encode_callback_, 84 &post_encode_callback_,
82 encoder_rate_observer, 85 encoder_rate_observer,
83 qm_settings_callback), 86 qm_settings_callback),
84 receiver_(clock, event_factory), 87 receiver_(clock,
88 event_factory,
89 module_process_thread,
90 nack_sender,
91 keyframe_request_sender),
85 own_event_factory_(owns_event_factory ? event_factory : NULL) {} 92 own_event_factory_(owns_event_factory ? event_factory : NULL) {}
86 93
87 virtual ~VideoCodingModuleImpl() { own_event_factory_.reset(); } 94 virtual ~VideoCodingModuleImpl() { own_event_factory_.reset(); }
88 95
89 int64_t TimeUntilNextProcess() override { 96 int64_t TimeUntilNextProcess() override {
90 int64_t sender_time = sender_.TimeUntilNextProcess(); 97 int64_t sender_time = sender_.TimeUntilNextProcess();
91 int64_t receiver_time = receiver_.TimeUntilNextProcess(); 98 int64_t receiver_time = receiver_.TimeUntilNextProcess();
92 assert(sender_time >= 0); 99 assert(sender_time >= 0);
93 assert(receiver_time >= 0); 100 assert(receiver_time >= 0);
94 return VCM_MIN(sender_time, receiver_time); 101 return VCM_MIN(sender_time, receiver_time);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 vcm::VideoSender sender_; 291 vcm::VideoSender sender_;
285 vcm::VideoReceiver receiver_; 292 vcm::VideoReceiver receiver_;
286 std::unique_ptr<EventFactory> own_event_factory_; 293 std::unique_ptr<EventFactory> own_event_factory_;
287 }; 294 };
288 } // namespace 295 } // namespace
289 296
290 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) { 297 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) {
291 VCMCodecDataBase::Codec(codecType, codec); 298 VCMCodecDataBase::Codec(codecType, codec);
292 } 299 }
293 300
301 // Create method for current interface, will be removed when the
302 // new jitter buffer is in place.
294 VideoCodingModule* VideoCodingModule::Create( 303 VideoCodingModule* VideoCodingModule::Create(
295 Clock* clock, 304 Clock* clock,
296 VideoEncoderRateObserver* encoder_rate_observer, 305 VideoEncoderRateObserver* encoder_rate_observer,
297 VCMQMSettingsCallback* qm_settings_callback) { 306 VCMQMSettingsCallback* qm_settings_callback) {
298 return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true, 307 return VideoCodingModule::Create(clock, encoder_rate_observer,
299 encoder_rate_observer, qm_settings_callback); 308 qm_settings_callback,
309 nullptr, // ProcessThread
310 nullptr, // NackSender
311 nullptr); // KeyframeRequestSender
300 } 312 }
301 313
314 // Create method for the new jitter buffer.
315 VideoCodingModule* VideoCodingModule::Create(
316 Clock* clock,
317 VideoEncoderRateObserver* encoder_rate_observer,
318 VCMQMSettingsCallback* qm_settings_callback,
319 ProcessThread* module_process_thread,
320 NackSender* nack_sender,
321 KeyFrameRequestSender* keyframe_request_sender) {
322 return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true,
323 encoder_rate_observer, qm_settings_callback,
324 module_process_thread, nack_sender,
325 keyframe_request_sender);
326 }
327
328 // Create method for current interface, will be removed when the
329 // new jitter buffer is in place.
302 VideoCodingModule* VideoCodingModule::Create(Clock* clock, 330 VideoCodingModule* VideoCodingModule::Create(Clock* clock,
303 EventFactory* event_factory) { 331 EventFactory* event_factory) {
332 return VideoCodingModule::Create(clock, event_factory,
333 nullptr, // ProcessThread
334 nullptr, // NackSender
335 nullptr); // KeyframeRequestSender
336 }
337
338 // Create method for the new jitter buffer.
339 VideoCodingModule* VideoCodingModule::Create(
340 Clock* clock,
341 EventFactory* event_factory,
342 ProcessThread* module_process_thread,
343 NackSender* nack_sender,
344 KeyFrameRequestSender* keyframe_request_sender) {
304 assert(clock); 345 assert(clock);
305 assert(event_factory); 346 assert(event_factory);
306 return new VideoCodingModuleImpl(clock, event_factory, false, nullptr, 347 return new VideoCodingModuleImpl(clock, event_factory, false, nullptr,
307 nullptr); 348 nullptr, module_process_thread, nack_sender,
349 keyframe_request_sender);
308 } 350 }
309 351
310 } // namespace webrtc 352 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698