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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 return VCM_OK; | 237 return VCM_OK; |
238 } | 238 } |
239 | 239 |
240 void VideoReceiver::TriggerDecoderShutdown() { | 240 void VideoReceiver::TriggerDecoderShutdown() { |
241 _receiver.TriggerDecoderShutdown(); | 241 _receiver.TriggerDecoderShutdown(); |
242 } | 242 } |
243 | 243 |
244 // Decode next frame, blocking. | 244 // Decode next frame, blocking. |
245 // Should be called as often as possible to get the most out of the decoder. | 245 // Should be called as often as possible to get the most out of the decoder. |
246 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) { | 246 int32_t VideoReceiver::Decode(uint16_t maxWaitTimeMs) { |
247 int64_t nextRenderTimeMs; | |
248 bool prefer_late_decoding = false; | 247 bool prefer_late_decoding = false; |
249 { | 248 { |
250 rtc::CritScope cs(&receive_crit_); | 249 rtc::CritScope cs(&receive_crit_); |
251 prefer_late_decoding = _codecDataBase.PrefersLateDecoding(); | 250 prefer_late_decoding = _codecDataBase.PrefersLateDecoding(); |
252 } | 251 } |
253 | 252 |
254 VCMEncodedFrame* frame = _receiver.FrameForDecoding( | 253 VCMEncodedFrame* frame = |
255 maxWaitTimeMs, &nextRenderTimeMs, prefer_late_decoding); | 254 _receiver.FrameForDecoding(maxWaitTimeMs, prefer_late_decoding); |
256 | 255 |
257 if (!frame) | 256 if (!frame) |
258 return VCM_FRAME_NOT_READY; | 257 return VCM_FRAME_NOT_READY; |
259 | 258 |
260 { | 259 { |
261 rtc::CritScope cs(&process_crit_); | 260 rtc::CritScope cs(&process_crit_); |
262 if (drop_frames_until_keyframe_) { | 261 if (drop_frames_until_keyframe_) { |
263 // Still getting delta frames, schedule another keyframe request as if | 262 // Still getting delta frames, schedule another keyframe request as if |
264 // decode failed. | 263 // decode failed. |
265 if (frame->FrameType() != kVideoFrameKey) { | 264 if (frame->FrameType() != kVideoFrameKey) { |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack, | 502 _receiver.SetNackSettings(max_nack_list_size, max_packet_age_to_nack, |
504 max_incomplete_time_ms); | 503 max_incomplete_time_ms); |
505 } | 504 } |
506 | 505 |
507 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) { | 506 int VideoReceiver::SetMinReceiverDelay(int desired_delay_ms) { |
508 return _receiver.SetMinReceiverDelay(desired_delay_ms); | 507 return _receiver.SetMinReceiverDelay(desired_delay_ms); |
509 } | 508 } |
510 | 509 |
511 } // namespace vcm | 510 } // namespace vcm |
512 } // namespace webrtc | 511 } // namespace webrtc |
OLD | NEW |