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 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 | 574 |
575 stats_proxy_->SetAdaptationStats(GetActiveCounts(kCpu), | 575 stats_proxy_->SetAdaptationStats(GetActiveCounts(kCpu), |
576 GetActiveCounts(kQuality)); | 576 GetActiveCounts(kQuality)); |
577 } | 577 } |
578 | 578 |
579 void ViEEncoder::OnFrame(const VideoFrame& video_frame) { | 579 void ViEEncoder::OnFrame(const VideoFrame& video_frame) { |
580 RTC_DCHECK_RUNS_SERIALIZED(&incoming_frame_race_checker_); | 580 RTC_DCHECK_RUNS_SERIALIZED(&incoming_frame_race_checker_); |
581 VideoFrame incoming_frame = video_frame; | 581 VideoFrame incoming_frame = video_frame; |
582 | 582 |
583 // Local time in webrtc time base. | 583 // Local time in webrtc time base. |
584 int64_t current_time_ms = clock_->TimeInMilliseconds(); | 584 int64_t current_time_us = clock_->TimeInMicroseconds(); |
| 585 int64_t current_time_ms = current_time_us / rtc::kNumMicrosecsPerMillisec; |
| 586 // In some cases, e.g. then the frame from decoder is fed to encoder, |
| 587 // the timestamp may be set to the future. As the encoding pipeline assumes |
| 588 // capture time to be less than present time, we should reset the capture |
| 589 // timestamps here. Otherwise there may be issues with RTP send stream. |
| 590 if (incoming_frame.timestamp_us() > current_time_us) |
| 591 incoming_frame.set_timestamp_us(current_time_us); |
585 | 592 |
586 // Capture time may come from clock with an offset and drift from clock_. | 593 // Capture time may come from clock with an offset and drift from clock_. |
587 int64_t capture_ntp_time_ms; | 594 int64_t capture_ntp_time_ms; |
588 if (video_frame.ntp_time_ms() > 0) { | 595 if (video_frame.ntp_time_ms() > 0) { |
589 capture_ntp_time_ms = video_frame.ntp_time_ms(); | 596 capture_ntp_time_ms = video_frame.ntp_time_ms(); |
590 } else if (video_frame.render_time_ms() != 0) { | 597 } else if (video_frame.render_time_ms() != 0) { |
591 capture_ntp_time_ms = video_frame.render_time_ms() + delta_ntp_internal_ms_; | 598 capture_ntp_time_ms = video_frame.render_time_ms() + delta_ntp_internal_ms_; |
592 } else { | 599 } else { |
593 capture_ntp_time_ms = current_time_ms + delta_ntp_internal_ms_; | 600 capture_ntp_time_ms = current_time_ms + delta_ntp_internal_ms_; |
594 } | 601 } |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 std::string ViEEncoder::AdaptCounter::ToString( | 1058 std::string ViEEncoder::AdaptCounter::ToString( |
1052 const std::vector<int>& counters) const { | 1059 const std::vector<int>& counters) const { |
1053 std::stringstream ss; | 1060 std::stringstream ss; |
1054 for (size_t reason = 0; reason < kScaleReasonSize; ++reason) { | 1061 for (size_t reason = 0; reason < kScaleReasonSize; ++reason) { |
1055 ss << (reason ? " cpu" : "quality") << ":" << counters[reason]; | 1062 ss << (reason ? " cpu" : "quality") << ":" << counters[reason]; |
1056 } | 1063 } |
1057 return ss.str(); | 1064 return ss.str(); |
1058 } | 1065 } |
1059 | 1066 |
1060 } // namespace webrtc | 1067 } // namespace webrtc |
OLD | NEW |