Upstream commit: https://webrtc.googlesource.com/src/+/6733aa5ba16e1e1087f339d1151c80c924a6fbf8 [M146] Reject frames with inconsistent U/V strides. All of openh264, libvpx and libaom seems to have issues with this. For now, rejecting frames with this property. This should be seen as a temporary workaround to be removed when the implementations have been updated to support it. (cherry picked from commit 5460d74631c9df16c9f0d160fb872c9834f8bb59) Bug: chromium:492213293 Change-Id: I44e784ed5f70dc514afbecbcd1aa7957c372a238 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/456203 Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Auto-Submit: Erik Språng <sprang@webrtc.org> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Cr-Original-Commit-Position: refs/heads/main@{#47152} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/459721 Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/branch-heads/7680@{#5} Cr-Branched-From: d1972add2a63b2a528a6471d447f82e0010b5215-refs/heads/main@{#46853}
66 lines
2.9 KiB
Diff
66 lines
2.9 KiB
Diff
From: Wang Qing <wangqing-hf@loongson.cn>
|
|
Date: Wed, 25 Sep 2019 14:15:00 +0000
|
|
Subject: Bug 1579834 - [WebRTC] Add mips64 support; r=dminor
|
|
|
|
Differential Revision: https://phabricator.services.mozilla.com/D45620
|
|
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/1387b2c480b55ecca3fbdf62bd7649dafc62438d
|
|
---
|
|
modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc | 2 +-
|
|
modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc | 8 ++++++--
|
|
2 files changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
|
|
index ee52e72680..e5b9d2d39b 100644
|
|
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
|
|
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.cc
|
|
@@ -50,7 +50,7 @@ const char kVp8PostProcArmFieldTrial[] = "WebRTC-VP8-Postproc-Config-Arm";
|
|
const char kVp8PostProcFieldTrial[] = "WebRTC-VP8-Postproc-Config";
|
|
|
|
#if defined(WEBRTC_ARCH_ARM) || defined(WEBRTC_ARCH_ARM64) || \
|
|
- defined(WEBRTC_ANDROID)
|
|
+ defined(WEBRTC_ANDROID) || defined(WEBRTC_ARCH_MIPS)
|
|
constexpr bool kIsArm = true;
|
|
#else
|
|
constexpr bool kIsArm = false;
|
|
diff --git a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
|
|
index 8fb8c972f2..00d4d503f6 100644
|
|
--- a/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
|
|
+++ b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
|
|
@@ -793,7 +793,7 @@ int LibvpxVp8Encoder::InitEncode(const VideoCodec* inst,
|
|
}
|
|
|
|
int LibvpxVp8Encoder::GetCpuSpeed(int width, int height) {
|
|
-#ifdef MOBILE_ARM
|
|
+#if defined(MOBILE_ARM) || defined(WEBRTC_ARCH_MIPS)
|
|
// On mobile platform, use a lower speed setting for lower resolutions for
|
|
// CPUs with 4 or more cores.
|
|
RTC_DCHECK_GT(number_of_cores_, 0);
|
|
@@ -821,6 +821,8 @@ int LibvpxVp8Encoder::GetCpuSpeed(int width, int height) {
|
|
int LibvpxVp8Encoder::NumberOfThreads(int width, int height, int cpus) {
|
|
#if defined(WEBRTC_ANDROID)
|
|
if (android_specific_threading_settings_) {
|
|
+#endif
|
|
+#if defined(WEBRTC_ANDROID) || defined(WEBRTC_ARCH_MIPS)
|
|
if (width * height >= 320 * 180) {
|
|
if (cpus >= 4) {
|
|
// 3 threads for CPUs with 4 and more cores since most of times only 4
|
|
@@ -833,7 +835,9 @@ int LibvpxVp8Encoder::NumberOfThreads(int width, int height, int cpus) {
|
|
}
|
|
}
|
|
return 1;
|
|
+#if defined(WEBRTC_ANDROID)
|
|
}
|
|
+#endif
|
|
#elif defined(WEBRTC_IOS)
|
|
std::string trial_string =
|
|
env_.field_trials().Lookup(kVP8IosMaxNumberOfThreadFieldTrial);
|
|
@@ -891,7 +895,7 @@ int LibvpxVp8Encoder::InitAndSetControlSettings() {
|
|
// for getting the denoised frame from the encoder and using that
|
|
// when encoding lower resolution streams. Would it work with the
|
|
// multi-res encoding feature?
|
|
-#ifdef MOBILE_ARM
|
|
+#if defined(MOBILE_ARM) || defined(WEBRTC_ARCH_MIPS)
|
|
denoiserState denoiser_state = kDenoiserOnYOnly;
|
|
#else
|
|
denoiserState denoiser_state = kDenoiserOnAdaptive;
|