OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 22 matching lines...) Expand all Loading... |
33 _receiver(&_timing, | 33 _receiver(&_timing, |
34 clock_, | 34 clock_, |
35 event_factory, | 35 event_factory, |
36 nack_sender, | 36 nack_sender, |
37 keyframe_request_sender), | 37 keyframe_request_sender), |
38 _decodedFrameCallback(&_timing, clock_), | 38 _decodedFrameCallback(&_timing, clock_), |
39 _frameTypeCallback(nullptr), | 39 _frameTypeCallback(nullptr), |
40 _receiveStatsCallback(nullptr), | 40 _receiveStatsCallback(nullptr), |
41 _decoderTimingCallback(nullptr), | 41 _decoderTimingCallback(nullptr), |
42 _packetRequestCallback(nullptr), | 42 _packetRequestCallback(nullptr), |
43 render_buffer_callback_(nullptr), | |
44 _decoder(nullptr), | 43 _decoder(nullptr), |
45 _frameFromFile(), | 44 _frameFromFile(), |
46 _scheduleKeyRequest(false), | 45 _scheduleKeyRequest(false), |
47 drop_frames_until_keyframe_(false), | 46 drop_frames_until_keyframe_(false), |
48 max_nack_list_size_(0), | 47 max_nack_list_size_(0), |
49 _codecDataBase(nullptr, nullptr), | 48 _codecDataBase(nullptr, nullptr), |
50 pre_decode_image_callback_(pre_decode_image_callback), | 49 pre_decode_image_callback_(pre_decode_image_callback), |
51 _receiveStatsTimer(1000, clock_), | 50 _receiveStatsTimer(1000, clock_), |
52 _retransmissionTimer(10, clock_), | 51 _retransmissionTimer(10, clock_), |
53 _keyRequestTimer(500, clock_) {} | 52 _keyRequestTimer(500, clock_) {} |
(...skipping 20 matching lines...) Expand all Loading... |
74 int jitter_buffer_ms; | 73 int jitter_buffer_ms; |
75 int min_playout_delay_ms; | 74 int min_playout_delay_ms; |
76 int render_delay_ms; | 75 int render_delay_ms; |
77 _timing.GetTimings(&decode_ms, &max_decode_ms, ¤t_delay_ms, | 76 _timing.GetTimings(&decode_ms, &max_decode_ms, ¤t_delay_ms, |
78 &target_delay_ms, &jitter_buffer_ms, | 77 &target_delay_ms, &jitter_buffer_ms, |
79 &min_playout_delay_ms, &render_delay_ms); | 78 &min_playout_delay_ms, &render_delay_ms); |
80 _decoderTimingCallback->OnDecoderTiming( | 79 _decoderTimingCallback->OnDecoderTiming( |
81 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms, | 80 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms, |
82 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms); | 81 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms); |
83 } | 82 } |
84 | |
85 // Size of render buffer. | |
86 if (render_buffer_callback_) { | |
87 int buffer_size_ms = _receiver.RenderBufferSizeMs(); | |
88 render_buffer_callback_->RenderBufferSizeMs(buffer_size_ms); | |
89 } | |
90 } | 83 } |
91 | 84 |
92 // Key frame requests | 85 // Key frame requests |
93 if (_keyRequestTimer.TimeUntilProcess() == 0) { | 86 if (_keyRequestTimer.TimeUntilProcess() == 0) { |
94 _keyRequestTimer.Processed(); | 87 _keyRequestTimer.Processed(); |
95 bool request_key_frame = false; | 88 bool request_key_frame = false; |
96 { | 89 { |
97 rtc::CritScope cs(&process_crit_); | 90 rtc::CritScope cs(&process_crit_); |
98 request_key_frame = _scheduleKeyRequest && _frameTypeCallback != nullptr; | 91 request_key_frame = _scheduleKeyRequest && _frameTypeCallback != nullptr; |
99 } | 92 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 return VCM_OK; | 228 return VCM_OK; |
236 } | 229 } |
237 | 230 |
238 int32_t VideoReceiver::RegisterPacketRequestCallback( | 231 int32_t VideoReceiver::RegisterPacketRequestCallback( |
239 VCMPacketRequestCallback* callback) { | 232 VCMPacketRequestCallback* callback) { |
240 rtc::CritScope cs(&process_crit_); | 233 rtc::CritScope cs(&process_crit_); |
241 _packetRequestCallback = callback; | 234 _packetRequestCallback = callback; |
242 return VCM_OK; | 235 return VCM_OK; |
243 } | 236 } |
244 | 237 |
245 int VideoReceiver::RegisterRenderBufferSizeCallback( | |
246 VCMRenderBufferSizeCallback* callback) { | |
247 rtc::CritScope cs(&process_crit_); | |
248 render_buffer_callback_ = callback; | |
249 return VCM_OK; | |
250 } | |
251 | |
252 void VideoReceiver::TriggerDecoderShutdown() { | 238 void VideoReceiver::TriggerDecoderShutdown() { |
253 _receiver.TriggerDecoderShutdown(); | 239 _receiver.TriggerDecoderShutdown(); |
254 } | 240 } |
255 | 241 |
256 // Decode next frame, blocking. | 242 // Decode next frame, blocking. |
257 // Should be called as often as possible to get the most out of the decoder. | 243 // Should be called as often as possible to get the most out of the decoder. |
258 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) { | 244 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) { |
259 int64_t nextRenderTimeMs; | 245 int64_t nextRenderTimeMs; |
260 bool prefer_late_decoding = false; | 246 bool prefer_late_decoding = false; |
261 { | 247 { |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack, | 502 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack, |
517 max_incomplete_time_ms); | 503 max_incomplete_time_ms); |
518 } | 504 } |
519 | 505 |
520 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) { | 506 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) { |
521 return _receiver.SetMinReceiverDelay(desired_delay_ms); | 507 return _receiver.SetMinReceiverDelay(desired_delay_ms); |
522 } | 508 } |
523 | 509 |
524 } // namespace vcm | 510 } // namespace vcm |
525 } // namespace webrtc | 511 } // namespace webrtc |
OLD | NEW |