Accepting request 1111520 from home:alarrosa:branches:multimedia:libs:webrtc-audio-processing

- Update to version 1.3:
  * build: Bump version to 1.3
  * meson: Fix generation of pkgconfig files
  * build: Bump version to 1.2
  * meson: Update minimum version based on what abseil wrap needs
  * build: Expose absl as a dependency of webrtc-audio-processing
  * meson: Update to latest wrap, install required absl headers
  * doc: Update tarball generation process
  * file_utils.h: Fix build with gcc-13
  * meson: Fixes for MSVC build
  * meson: Ensure that abseil is built with c++17 too
  * More changes not listed by upstream. Check
    the following link to see them:
    https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/commits/v1.3
- Add patch that fixes some compiler "control reaches end of
  non-void function" errors:
  * fix-build.patch
- Add patch that fixes i586 build:
  * fix-i586.patch
- Disable patches until they're rebased to the current codebase:
  * big_endian_support.patch
  * big_endian_support_2.patch
- Rebased patches:
  * webrtc-ppc64.patch
  * webrtc-s390x.patch

OBS-URL: https://build.opensuse.org/request/show/1111520
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/webrtc-audio-processing?expand=0&rev=19
This commit is contained in:
Takashi Iwai 2023-09-18 12:05:03 +00:00 committed by Git OBS Bridge
parent af2e163a0f
commit f0ff330476
13 changed files with 366 additions and 51 deletions

20
_service Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing.git</param>
<param name="revision">v1.3</param>
<param name="versionformat">1.3</param>
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>
-->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="manual" />
</services>

View File

@ -1 +1,2 @@
libwebrtc_audio_processing1
libwebrtc_audio_processing1-3
libwebrtc_audio_coding1-3

View File

@ -2,26 +2,26 @@ diff -up webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than webrtc
--- webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than 2016-05-24 08:28:45.749940095 -0400
+++ webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc 2016-05-24 08:50:30.361020010 -0400
@@ -64,9 +64,6 @@ WavReader::~WavReader() {
}
size_t WavReader::ReadSamples(size_t num_samples, int16_t* samples) {
size_t WavReader::ReadSamples(const size_t num_samples,
int16_t* const samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to big-endian when reading from WAV file"
-#endif
// There could be metadata after the audio; ensure we don't read it.
num_samples = std::min(rtc::checked_cast<uint32_t>(num_samples),
num_samples_remaining_);
size_t num_samples_left_to_read = num_samples;
size_t next_chunk_start = 0;
@@ -76,6 +73,12 @@ size_t WavReader::ReadSamples(size_t num
RTC_CHECK(read == num_samples || feof(file_handle_));
RTC_CHECK_LE(read, num_samples_remaining_);
num_samples_remaining_ -= rtc::checked_cast<uint32_t>(read);
num_samples_left_to_read -= num_samples_read;
}
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ //convert to big-endian
+ for(size_t idx = 0; idx < num_samples; idx++) {
+ samples[idx] = (samples[idx]<<8) | (samples[idx]>>8);
+ }
+#endif
return read;
return num_samples - num_samples_left_to_read;
}
@@ -120,10 +123,17 @@ WavWriter::~WavWriter() {

60
fix-build.patch Normal file
View File

@ -0,0 +1,60 @@
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/agc2/adaptive_mode_level_estimator.cc
@@ -39,6 +39,7 @@ float GetLevel(const VadLevelAnalyzer::R
return vad_level.rms_dbfs;
break;
case LevelEstimatorType::kPeak:
+ default:
return vad_level.peak_dbfs;
break;
}
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/audio_processing_impl.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -112,6 +112,7 @@ GainControl::Mode Agc1ConfigModeToInterf
case Agc1Config::kAdaptiveDigital:
return GainControl::kAdaptiveDigital;
case Agc1Config::kFixedDigital:
+ default:
return GainControl::kFixedDigital;
}
}
@@ -1852,6 +1853,7 @@ void AudioProcessingImpl::InitializeNois
return NsConfig::SuppressionLevel::k21dB;
default:
RTC_NOTREACHED();
+ return NsConfig::SuppressionLevel::k21dB; // Just to keep the compiler happy
}
};
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/include/audio_processing.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/include/audio_processing.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/include/audio_processing.cc
@@ -26,6 +26,7 @@ std::string NoiseSuppressionLevelToStrin
case AudioProcessing::Config::NoiseSuppression::Level::kHigh:
return "High";
case AudioProcessing::Config::NoiseSuppression::Level::kVeryHigh:
+ default:
return "VeryHigh";
}
}
@@ -38,6 +39,7 @@ std::string GainController1ModeToString(
case AudioProcessing::Config::GainController1::Mode::kAdaptiveDigital:
return "AdaptiveDigital";
case AudioProcessing::Config::GainController1::Mode::kFixedDigital:
+ default:
return "FixedDigital";
}
}
@@ -48,6 +50,7 @@ std::string GainController2LevelEstimato
case AudioProcessing::Config::GainController2::LevelEstimator::kRms:
return "Rms";
case AudioProcessing::Config::GainController2::LevelEstimator::kPeak:
+ default:
return "Peak";
}
}

126
fix-i586.patch Normal file
View File

@ -0,0 +1,126 @@
Index: webrtc-audio-processing-1.3/webrtc/third_party/pffft/src/pffft.c
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/third_party/pffft/src/pffft.c
+++ webrtc-audio-processing-1.3/webrtc/third_party/pffft/src/pffft.c
@@ -131,7 +131,7 @@ inline v4sf ld_ps1(const float *p) { v4s
/*
SSE1 support macros
*/
-#elif !defined(PFFFT_SIMD_DISABLE) && (defined(__x86_64__) || defined(_M_X64) || defined(i386) || defined(__i386__) || defined(_M_IX86))
+#elif !defined(PFFFT_SIMD_DISABLE) && (defined(__x86_64__) || defined(_M_X64) || defined(i386) || defined(__i386__) || defined(_M_IX86)) && defined(__SSE2__)
#include <xmmintrin.h>
typedef __m128 v4sf;
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc
@@ -88,6 +88,7 @@ void ComputeFrequencyResponse_Neon(
#if defined(WEBRTC_ARCH_X86_FAMILY)
// Computes and stores the frequency response of the filter.
+__attribute__((target("sse2")))
void ComputeFrequencyResponse_Sse2(
size_t num_partitions,
const std::vector<std::vector<FftData>>& H,
@@ -207,9 +208,10 @@ void AdaptPartitions_Neon(const RenderBu
} while (p < lim2);
}
#endif
-
+
#if defined(WEBRTC_ARCH_X86_FAMILY)
// Adapts the filter partitions. (SSE2 variant)
+__attribute__((target("sse2")))
void AdaptPartitions_Sse2(const RenderBuffer& render_buffer,
const FftData& G,
size_t num_partitions,
@@ -375,6 +377,7 @@ void ApplyFilter_Neon(const RenderBuffer
#if defined(WEBRTC_ARCH_X86_FAMILY)
// Produces the filter output (SSE2 variant).
+__attribute__((target("sse2")))
void ApplyFilter_Sse2(const RenderBuffer& render_buffer,
size_t num_partitions,
const std::vector<std::vector<FftData>>& H,
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/matched_filter.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/aec3/matched_filter.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/matched_filter.cc
@@ -143,7 +143,7 @@ void MatchedFilterCore_NEON(size_t x_sta
#endif
#if defined(WEBRTC_ARCH_X86_FAMILY)
-
+__attribute__((target("sse2")))
void MatchedFilterCore_SSE2(size_t x_start_index,
float x2_sum_threshold,
float smoothing,
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/fft_data.h
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/aec3/fft_data.h
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/fft_data.h
@@ -48,7 +48,7 @@ struct FftData {
rtc::ArrayView<float> power_spectrum) const {
RTC_DCHECK_EQ(kFftLengthBy2Plus1, power_spectrum.size());
switch (optimization) {
-#if defined(WEBRTC_ARCH_X86_FAMILY)
+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
case Aec3Optimization::kSse2: {
constexpr int kNumFourBinBands = kFftLengthBy2 / 4;
constexpr int kLimit = kNumFourBinBands * 4;
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/vector_math.h
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/aec3/vector_math.h
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/vector_math.h
@@ -43,7 +43,7 @@ class VectorMath {
void SqrtAVX2(rtc::ArrayView<float> x);
void Sqrt(rtc::ArrayView<float> x) {
switch (optimization_) {
-#if defined(WEBRTC_ARCH_X86_FAMILY)
+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
case Aec3Optimization::kSse2: {
const int x_size = static_cast<int>(x.size());
const int vector_limit = x_size >> 2;
@@ -123,7 +123,7 @@ class VectorMath {
RTC_DCHECK_EQ(z.size(), x.size());
RTC_DCHECK_EQ(z.size(), y.size());
switch (optimization_) {
-#if defined(WEBRTC_ARCH_X86_FAMILY)
+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
case Aec3Optimization::kSse2: {
const int x_size = static_cast<int>(x.size());
const int vector_limit = x_size >> 2;
@@ -173,7 +173,7 @@ class VectorMath {
void Accumulate(rtc::ArrayView<const float> x, rtc::ArrayView<float> z) {
RTC_DCHECK_EQ(z.size(), x.size());
switch (optimization_) {
-#if defined(WEBRTC_ARCH_X86_FAMILY)
+#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
case Aec3Optimization::kSse2: {
const int x_size = static_cast<int>(x.size());
const int vector_limit = x_size >> 2;
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/agc2/rnn_vad/rnn.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/agc2/rnn_vad/rnn.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/agc2/rnn_vad/rnn.cc
@@ -229,6 +229,7 @@ void ComputeFullyConnectedLayerOutput(
#if defined(WEBRTC_ARCH_X86_FAMILY)
// Fully connected layer SSE2 implementation.
+__attribute__((target("sse2")))
void ComputeFullyConnectedLayerOutputSse2(
size_t input_size,
size_t output_size,
Index: webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl.cc
===================================================================
--- webrtc-audio-processing-1.3.orig/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl.cc
+++ webrtc-audio-processing-1.3/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl.cc
@@ -57,6 +57,7 @@ void ErlComputer_NEON(
#if defined(WEBRTC_ARCH_X86_FAMILY)
// Computes and stores the echo return loss estimate of the filter, which is the
// sum of the partition frequency responses.
+__attribute__((target("sse2")))
void ErlComputer_SSE2(
const std::vector<std::array<float, kFftLengthBy2Plus1>>& H2,
rtc::ArrayView<float> erl) {

BIN
webrtc-audio-processing-0.3.1.tar.xz (Stored with Git LFS)

Binary file not shown.

BIN
webrtc-audio-processing-1.3.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9f5fded08c76d4d540675b64a52d72d4274163ef3d38379e6915317affe7315b
size 650276

View File

@ -1,3 +1,32 @@
-------------------------------------------------------------------
Fri Sep 08 10:40:12 UTC 2023 - alarrosa@suse.com
- Update to version 1.3:
* build: Bump version to 1.3
* meson: Fix generation of pkgconfig files
* build: Bump version to 1.2
* meson: Update minimum version based on what abseil wrap needs
* build: Expose absl as a dependency of webrtc-audio-processing
* meson: Update to latest wrap, install required absl headers
* doc: Update tarball generation process
* file_utils.h: Fix build with gcc-13
* meson: Fixes for MSVC build
* meson: Ensure that abseil is built with c++17 too
* More changes not listed by upstream. Check
the following link to see them:
https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/commits/v1.3
- Add patch that fixes some compiler "control reaches end of
non-void function" errors:
* fix-build.patch
- Add patch that fixes i586 build:
* fix-i586.patch
- Disable patches until they're rebased to the current codebase:
* big_endian_support.patch
* big_endian_support_2.patch
- Rebased patches:
* webrtc-ppc64.patch
* webrtc-s390x.patch
-------------------------------------------------------------------
Mon Aug 17 15:30:03 UTC 2020 - Dirk Mueller <dmueller@suse.com>

View File

@ -0,0 +1,4 @@
name: webrtc-audio-processing
version: 1.3
mtime: 1693927187
commit: 8e258a1933d405073c9e6465628a69ac7d2a1f13

View File

@ -2,7 +2,7 @@
#
# spec file for package webrtc-audio-processing
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2012 Pascal Bleser <pascal.bleser@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@ -18,32 +18,37 @@
#
%define soname 1
%define pkg_soname 1-3
%define soname 3
# Please submit bugfixes or comments via http://bugs.opensuse.org/
Name: webrtc-audio-processing
Version: 0.3.1
Version: 1.3
Release: 0
Summary: Real-Time Communication Library for Web Browsers
License: BSD-3-Clause
Group: System/Libraries
URL: https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/
Source: http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/webrtc-audio-processing-%{version}.tar.xz
Source: webrtc-audio-processing-%{version}.tar.xz
Source1: baselibs.conf
# PATCH-FIX-UPSTREAM fix-build.patch alarrosa@suse.com -- Fix a number of "control reaches end of non-void function" errors
Patch0: fix-build.patch
# PATCH-FIX-UPSTREAN big_endian_support.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738
Patch1: big_endian_support.patch
# PATCH-FIX-UPSTREAN big_endian_support.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738
Patch2: big_endian_support_2.patch
Patch3: fix-i586.patch
# PATCH-FIX-OPENSUSE webrtc-(ppc64|s390x|aarch64).patch
Patch100: webrtc-ppc64.patch
Patch101: webrtc-s390x.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: glibc-devel
BuildRequires: libtool
BuildRequires: make
BuildRequires: meson >= 0.63
BuildRequires: pkgconfig
BuildRequires: xz
BuildRequires: cmake(absl)
%description
WebRTC is an open source project that enables web browsers with Real-Time
@ -52,11 +57,11 @@ components have been optimized to best serve this purpose.
WebRTC implements the W3C's proposal for video conferencing on the web.
%package -n libwebrtc_audio_processing%{soname}
%package -n libwebrtc_audio_processing%{pkg_soname}
Summary: Real-Time Communication Library for Web Browsers
Group: System/Libraries
%description -n libwebrtc_audio_processing%{soname}
%description -n libwebrtc_audio_processing%{pkg_soname}
WebRTC is an open source project that enables web browsers with Real-Time
Communications (RTC) capabilities via simple Javascript APIs. The WebRTC
components have been optimized to best serve this purpose.
@ -66,7 +71,7 @@ WebRTC implements the W3C's proposal for video conferencing on the web.
%package -n libwebrtc_audio_processing-devel
Summary: Real-Time Communication Library for Web Browsers
Group: Development/Libraries/C and C++
Requires: libwebrtc_audio_processing%{soname} = %{version}
Requires: libwebrtc_audio_processing%{pkg_soname} = %{version}
%description -n libwebrtc_audio_processing-devel
WebRTC is an open source project that enables web browsers with Real-Time
@ -87,40 +92,95 @@ components have been optimized to best serve this purpose.
WebRTC implements the W3C's proposal for video conferencing on the web.
%package -n libwebrtc_audio_coding%{pkg_soname}
Summary: Real-Time Communication Library for Web Browsers
Group: System/Libraries
%description -n libwebrtc_audio_coding%{pkg_soname}
WebRTC is an open source project that enables web browsers with Real-Time
Communications (RTC) capabilities via simple Javascript APIs. The WebRTC
components have been optimized to best serve this purpose.
WebRTC implements the W3C's proposal for video conferencing on the web.
%package -n libwebrtc_audio_coding-devel
Summary: Real-Time Communication Library for Web Browsers
Group: Development/Libraries/C and C++
Requires: libwebrtc_audio_coding%{pkg_soname} = %{version}
%description -n libwebrtc_audio_coding-devel
WebRTC is an open source project that enables web browsers with Real-Time
Communications (RTC) capabilities via simple Javascript APIs. The WebRTC
components have been optimized to best serve this purpose.
WebRTC implements the W3C's proposal for video conferencing on the web.
%package -n libwebrtc_audio_coding-devel-static
Summary: Real-Time Communication Library for Web Browsers
Group: Development/Libraries/C and C++
Requires: libwebrtc_audio_coding-devel = %{version}
%description -n libwebrtc_audio_coding-devel-static
WebRTC is an open source project that enables web browsers with Real-Time
Communications (RTC) capabilities via simple Javascript APIs. The WebRTC
components have been optimized to best serve this purpose.
WebRTC implements the W3C's proposal for video conferencing on the web.
%prep
%setup -q -T -c "%{name}-%{version}"
xz --decompress --stdout "%{SOURCE0}" | tar xf - --strip-components=1
%autosetup -p1 -N
sed -i 's/\r$//' AUTHORS
%patch1 -p1
%patch2 -p1
%patch100
%patch101
%patch0 -p1
#%%patch1 -p1
#%%patch2 -p1
%patch3 -p1
%patch100 -p1
%patch101 -p1
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%configure
%make_build
%meson \
-Dc_std=gnu17 \
-Dcpp_std=gnu++17 \
-Ddefault_library=both \
-Dc_args="${CFLAGS} ${LDFLAGS}" \
-Dcpp_args="${CXXFLAGS} ${LDFLAGS}" \
%{nil}
%meson_build
%install
%make_install
%meson_install
find %{buildroot} -type f -name "*.la" -delete -print
%post -n libwebrtc_audio_processing%{soname} -p /sbin/ldconfig
%postun -n libwebrtc_audio_processing%{soname} -p /sbin/ldconfig
%post -n libwebrtc_audio_processing%{pkg_soname} -p /sbin/ldconfig
%postun -n libwebrtc_audio_processing%{pkg_soname} -p /sbin/ldconfig
%post -n libwebrtc_audio_coding%{pkg_soname} -p /sbin/ldconfig
%postun -n libwebrtc_audio_coding%{pkg_soname} -p /sbin/ldconfig
%files -n libwebrtc_audio_processing%{soname}
%files -n libwebrtc_audio_processing%{pkg_soname}
%license COPYING
%doc AUTHORS NEWS README.md UPDATING.md
%{_libdir}/libwebrtc_audio_processing.so.%{soname}
%{_libdir}/libwebrtc_audio_processing.so.%{soname}.*.*
%{_libdir}/libwebrtc-audio-processing-1.so.%{soname}*
%files -n libwebrtc_audio_processing-devel
%{_includedir}/webrtc_audio_processing
%{_libdir}/libwebrtc_audio_processing.so
%{_libdir}/pkgconfig/webrtc-audio-processing.pc
%{_includedir}/webrtc-audio-processing-1
%{_libdir}/libwebrtc-audio-processing-1.so
%{_libdir}/pkgconfig/webrtc-audio-processing-1.pc
%files -n libwebrtc_audio_processing-devel-static
%{_libdir}/libwebrtc_audio_processing.a
%{_libdir}/libwebrtc-audio-processing-1.a
%files -n libwebrtc_audio_coding%{pkg_soname}
%license COPYING
%doc AUTHORS NEWS README.md UPDATING.md
%{_libdir}/libwebrtc-audio-coding-1.so.%{soname}*
%files -n libwebrtc_audio_coding-devel
%{_libdir}/libwebrtc-audio-coding-1.so
%{_libdir}/pkgconfig/webrtc-audio-coding-1.pc
%files -n libwebrtc_audio_coding-devel-static
%{_libdir}/libwebrtc-audio-coding-1.a
%changelog

View File

@ -1,11 +1,17 @@
Index: webrtc/typedefs.h
===================================================================
--- webrtc/typedefs.h.org
+++ webrtc/typedefs.h
@@ -47,6 +47,12 @@
#elif defined(__pnacl__)
--- a/webrtc/rtc_base/system/arch.h.orig
+++ b/webrtc/rtc_base/system/arch.h
@@ -57,6 +57,15 @@
# #elif defined(__pnacl__)
# #define WEBRTC_ARCH_32_BITS
# #define WEBRTC_ARCH_LITTLE_ENDIAN
#elif defined(__EMSCRIPTEN__)
#define WEBRTC_ARCH_32_BITS
#define WEBRTC_ARCH_LITTLE_ENDIAN
+#elif defined(__powerpc64__) && defined(__LITTLE_ENDIAN__)
+#define WEBRTC_ARCH_LITTLE_ENDIAN
+#define WEBRTC_ARCH_64_BITS
+#elif defined(__powerpc64__)
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_64_BITS
@ -13,5 +19,8 @@ Index: webrtc/typedefs.h
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_32_BITS
#else
/* instead of failing, use typical unix defines... */
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#error Please add support for your architecture in rtc_base/system/arch.h
#endif
# #else
# /* instead of failing, use typical unix defines... */
# #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__

View File

@ -1,6 +1,6 @@
--- webrtc/typedefs.h
+++ webrtc/typedefs.h
@@ -53,6 +53,12 @@
--- a/webrtc/rtc_base/system/arch.h.orig
+++ b/webrtc/rtc_base/system/arch.h
@@ -63,6 +63,12 @@
#elif defined(__powerpc__)
#define WEBRTC_ARCH_BIG_ENDIAN
#define WEBRTC_ARCH_32_BITS
@ -11,5 +11,8 @@
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_32_BITS
#else
/* instead of failing, use typical unix defines... */
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#error Please add support for your architecture in rtc_base/system/arch.h
#endif
# #else
# /* instead of failing, use typical unix defines... */
# #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__