From bc8a62b244c4038d2a005bffcbe7a82bd933d7d1 Mon Sep 17 00:00:00 2001 From: Brett Hebert Date: Thu, 18 Aug 2022 11:32:45 +0000 Subject: [PATCH] Enable Multithreaded H264 Encoding For OpenH264 Re-enabled multithreaded encoding using OpenH264, as the issue described in crbug.com/583348 no longer applies. Bug: webrtc:14368 Change-Id: I5ae768a6edf3b40d99c13fb4ee4662626c993a66 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/271820 Reviewed-by: Sergey Silkin Commit-Queue: Sergey Silkin Cr-Commit-Position: refs/heads/main@{#37837} --- AUTHORS | 2 ++ .../codecs/h264/h264_encoder_impl.cc | 21 ++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/AUTHORS b/AUTHORS index 831ee0dc25..ebcdd21158 100644 --- a/AUTHORS +++ b/AUTHORS @@ -24,6 +24,7 @@ Anil Kumar Ben Strong Berthold Herrmann Bob Withers +Brett Hebert Brett Hebert Bridger Maxwell Bruno Pitrus @@ -153,6 +154,7 @@ NVIDIA Corporation <*@nvidia.com> Opera Software ASA <*@opera.com> Optical Tone Ltd <*@opticaltone.com> Pengutronix e.K. <*@pengutronix.de> +Quebic Inc. <*@quebic.com> Raptor Computing Systems, LLC <*@raptorcs.com> RingCentral, Inc. <*@ringcentral.com> Signal Messenger, LLC <*@signal.org> diff --git a/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/modules/video_coding/codecs/h264/h264_encoder_impl.cc index f6d52c6539..bc823a520a 100644 --- a/modules/video_coding/codecs/h264/h264_encoder_impl.cc +++ b/modules/video_coding/codecs/h264/h264_encoder_impl.cc @@ -53,20 +53,17 @@ enum H264EncoderImplEvent { }; int NumberOfThreads(int width, int height, int number_of_cores) { - // TODO(hbos): In Chromium, multiple threads do not work with sandbox on Mac, - // see crbug.com/583348. Until further investigated, only use one thread. - // if (width * height >= 1920 * 1080 && number_of_cores > 8) { - // return 8; // 8 threads for 1080p on high perf machines. - // } else if (width * height > 1280 * 960 && number_of_cores >= 6) { - // return 3; // 3 threads for 1080p. - // } else if (width * height > 640 * 480 && number_of_cores >= 3) { - // return 2; // 2 threads for qHD/HD. - // } else { - // return 1; // 1 thread for VGA or less. - // } // TODO(sprang): Also check sSliceArgument.uiSliceNum om GetEncoderPrams(), // before enabling multithreading here. - return 1; + if (width * height >= 1920 * 1080 && number_of_cores > 8) { + return 8; // 8 threads for 1080p on high perf machines. + } else if (width * height > 1280 * 960 && number_of_cores >= 6) { + return 3; // 3 threads for 1080p. + } else if (width * height > 640 * 480 && number_of_cores >= 3) { + return 2; // 2 threads for qHD/HD. + } else { + return 1; // 1 thread for VGA or less. + } } VideoFrameType ConvertToVideoFrameType(EVideoFrameType type) {