123456789101112131415161718192021222324252627282930313233343536373839 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "remoting/codec/webrtc_video_encoder.h"
- #include "base/system/sys_info.h"
- namespace remoting {
- WebrtcVideoEncoder::EncodedFrame::EncodedFrame() = default;
- WebrtcVideoEncoder::EncodedFrame::~EncodedFrame() = default;
- WebrtcVideoEncoder::EncodedFrame::EncodedFrame(
- WebrtcVideoEncoder::EncodedFrame&&) = default;
- WebrtcVideoEncoder::EncodedFrame& WebrtcVideoEncoder::EncodedFrame::operator=(
- WebrtcVideoEncoder::EncodedFrame&&) = default;
- // static
- int WebrtcVideoEncoder::GetEncoderThreadCount(int frame_width) {
- int thread_num;
- if (frame_width >= 3840) {
- thread_num = 16;
- } else if (frame_width >= 2560) {
- thread_num = 8;
- } else if (frame_width >= 1280) {
- thread_num = 4;
- } else if (frame_width >= 720) {
- thread_num = 2;
- } else {
- thread_num = 1;
- }
- // Allow multiple cores on a system to be used for encoding to increase
- // performance while at the same time ensuring we don't bog down the system by
- // taking all of the available cores.
- return std::min(thread_num, ((base::SysInfo::NumberOfProcessors() + 1) / 2));
- }
- } // namespace remoting
|