OLD | NEW |
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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 | 66 |
67 private: | 67 private: |
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, | |
77 VideoEncoderRateObserver* encoder_rate_observer, | 76 VideoEncoderRateObserver* encoder_rate_observer, |
78 VCMQMSettingsCallback* qm_settings_callback, | 77 VCMQMSettingsCallback* qm_settings_callback, |
79 NackSender* nack_sender, | 78 NackSender* nack_sender, |
80 KeyFrameRequestSender* keyframe_request_sender, | 79 KeyFrameRequestSender* keyframe_request_sender, |
81 EncodedImageCallback* pre_decode_image_callback) | 80 EncodedImageCallback* pre_decode_image_callback) |
82 : VideoCodingModule(), | 81 : VideoCodingModule(), |
83 sender_(clock, | 82 sender_(clock, |
84 &post_encode_callback_, | 83 &post_encode_callback_, |
85 encoder_rate_observer, | 84 encoder_rate_observer, |
86 qm_settings_callback), | 85 qm_settings_callback), |
87 receiver_(clock, | 86 receiver_(clock, |
88 event_factory, | 87 event_factory, |
89 pre_decode_image_callback, | 88 pre_decode_image_callback, |
90 nack_sender, | 89 nack_sender, |
91 keyframe_request_sender), | 90 keyframe_request_sender) {} |
92 own_event_factory_(owns_event_factory ? event_factory : NULL) {} | |
93 | 91 |
94 virtual ~VideoCodingModuleImpl() { own_event_factory_.reset(); } | 92 virtual ~VideoCodingModuleImpl() {} |
95 | 93 |
96 int64_t TimeUntilNextProcess() override { | 94 int64_t TimeUntilNextProcess() override { |
97 int64_t sender_time = sender_.TimeUntilNextProcess(); | 95 int64_t sender_time = sender_.TimeUntilNextProcess(); |
98 int64_t receiver_time = receiver_.TimeUntilNextProcess(); | 96 int64_t receiver_time = receiver_.TimeUntilNextProcess(); |
99 assert(sender_time >= 0); | 97 assert(sender_time >= 0); |
100 assert(receiver_time >= 0); | 98 assert(receiver_time >= 0); |
101 return VCM_MIN(sender_time, receiver_time); | 99 return VCM_MIN(sender_time, receiver_time); |
102 } | 100 } |
103 | 101 |
104 void Process() override { | 102 void Process() override { |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 EncodedImageCallback* observer) override { | 277 EncodedImageCallback* observer) override { |
280 post_encode_callback_.Register(observer); | 278 post_encode_callback_.Register(observer); |
281 } | 279 } |
282 | 280 |
283 void TriggerDecoderShutdown() override { receiver_.TriggerDecoderShutdown(); } | 281 void TriggerDecoderShutdown() override { receiver_.TriggerDecoderShutdown(); } |
284 | 282 |
285 private: | 283 private: |
286 EncodedImageCallbackWrapper post_encode_callback_; | 284 EncodedImageCallbackWrapper post_encode_callback_; |
287 vcm::VideoSender sender_; | 285 vcm::VideoSender sender_; |
288 vcm::VideoReceiver receiver_; | 286 vcm::VideoReceiver receiver_; |
289 std::unique_ptr<EventFactory> own_event_factory_; | |
290 }; | 287 }; |
291 } // namespace | 288 } // namespace |
292 | 289 |
293 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) { | 290 void VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) { |
294 VCMCodecDataBase::Codec(codecType, codec); | 291 VCMCodecDataBase::Codec(codecType, codec); |
295 } | 292 } |
296 | 293 |
297 // Create method for current interface, will be removed when the | 294 // Create method for current interface, will be removed when the |
298 // new jitter buffer is in place. | 295 // new jitter buffer is in place. |
299 VideoCodingModule* VideoCodingModule::Create( | 296 VideoCodingModule* VideoCodingModule::Create( |
300 Clock* clock, | 297 Clock* clock, |
301 VideoEncoderRateObserver* encoder_rate_observer, | 298 VideoEncoderRateObserver* encoder_rate_observer, |
302 VCMQMSettingsCallback* qm_settings_callback) { | 299 VCMQMSettingsCallback* qm_settings_callback) { |
303 return VideoCodingModule::Create(clock, encoder_rate_observer, | 300 return VideoCodingModule::Create(clock, encoder_rate_observer, |
304 qm_settings_callback, | 301 qm_settings_callback, |
305 nullptr, // NackSender | 302 nullptr, // NackSender |
306 nullptr, // KeyframeRequestSender | 303 nullptr, // KeyframeRequestSender |
307 nullptr); // Pre-decode image callback | 304 nullptr); // Pre-decode image callback |
308 } | 305 } |
309 | 306 |
310 // Create method for the new jitter buffer. | 307 // Create method for the new jitter buffer. |
311 VideoCodingModule* VideoCodingModule::Create( | 308 VideoCodingModule* VideoCodingModule::Create( |
312 Clock* clock, | 309 Clock* clock, |
313 VideoEncoderRateObserver* encoder_rate_observer, | 310 VideoEncoderRateObserver* encoder_rate_observer, |
314 VCMQMSettingsCallback* qm_settings_callback, | 311 VCMQMSettingsCallback* qm_settings_callback, |
315 NackSender* nack_sender, | 312 NackSender* nack_sender, |
316 KeyFrameRequestSender* keyframe_request_sender, | 313 KeyFrameRequestSender* keyframe_request_sender, |
317 EncodedImageCallback* pre_decode_image_callback) { | 314 EncodedImageCallback* pre_decode_image_callback) { |
318 return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true, | 315 return new VideoCodingModuleImpl( |
319 encoder_rate_observer, qm_settings_callback, | 316 clock, nullptr, encoder_rate_observer, qm_settings_callback, nack_sender, |
320 nack_sender, keyframe_request_sender, | 317 keyframe_request_sender, pre_decode_image_callback); |
321 pre_decode_image_callback); | |
322 } | 318 } |
323 | 319 |
324 // Create method for current interface, will be removed when the | 320 // Create method for current interface, will be removed when the |
325 // new jitter buffer is in place. | 321 // new jitter buffer is in place. |
326 VideoCodingModule* VideoCodingModule::Create(Clock* clock, | 322 VideoCodingModule* VideoCodingModule::Create(Clock* clock, |
327 EventFactory* event_factory) { | 323 EventFactory* event_factory) { |
328 return VideoCodingModule::Create(clock, event_factory, | 324 return VideoCodingModule::Create(clock, event_factory, |
329 nullptr, // NackSender | 325 nullptr, // NackSender |
330 nullptr); // KeyframeRequestSender | 326 nullptr); // KeyframeRequestSender |
331 } | 327 } |
332 | 328 |
333 // Create method for the new jitter buffer. | 329 // Create method for the new jitter buffer. |
334 VideoCodingModule* VideoCodingModule::Create( | 330 VideoCodingModule* VideoCodingModule::Create( |
335 Clock* clock, | 331 Clock* clock, |
336 EventFactory* event_factory, | 332 EventFactory* event_factory, |
337 NackSender* nack_sender, | 333 NackSender* nack_sender, |
338 KeyFrameRequestSender* keyframe_request_sender) { | 334 KeyFrameRequestSender* keyframe_request_sender) { |
339 assert(clock); | 335 assert(clock); |
340 assert(event_factory); | 336 assert(event_factory); |
341 return new VideoCodingModuleImpl(clock, event_factory, false, nullptr, | 337 return new VideoCodingModuleImpl(clock, event_factory, nullptr, nullptr, |
342 nullptr, nack_sender, | 338 nack_sender, keyframe_request_sender, |
343 keyframe_request_sender, nullptr); | 339 nullptr); |
344 } | 340 } |
345 | 341 |
346 } // namespace webrtc | 342 } // namespace webrtc |
OLD | NEW |