====== WebRTC on WPE ======
WebRTC is currently not shipping with the stable WPE (v2.24 at the time of writing).
However, it is present in an experimental form if compiling WPE from svn, even on the official release tag.
For example, to get buildroot to compile it:
WPEWEBKIT_SITE_METHOD = svn
WPEWEBKIT_VERSION = 243536
WPEWEBKIT_SITE = "http://svn.webkit.org/repository/webkit/releases/WPE%20WebKit/webkit-2.24.0/"
WPEWEBKIT_CONF_OPTS += \
-DENABLE_VIDEO=ON \
-DENABLE_WEB_AUDIO=ON \
-DENABLE_FULLSCREEN_API=ON \
-DENABLE_MEDIA_SOURCE=ON \
-DENABLE_WEB_RTC=ON \
-DENABLE_MEDIA_STREAM=ON
When trying to compile this for RPi compilation fails because of 2 different issues:
1) While static linking libwebrtc.a, some symbols are being overwritten because of files that have the same name:
* **third_party/boringssl/src/crypto/err/err.c**
* **third_party/libsrtp/crypto/kernel/err.c**
The symbols are overwritten because libsrtp is appended in a separate //ar// command, because it is defined as:
$
Changing //link.txt// of webrtc.dir in CMakeFiles from this command:
arm-buildroot-linux-gnueabihf-ar rT ../../../lib/libwebrtc.a ...
To this
arm-buildroot-linux-gnueabihf-ar qT ../../../lib/libwebrtc.a ...
Appends the symbols instead of replacing ones with files in the same name and fixes the problem.
This should have already been fixed in [[https://github.com/Kitware/CMake/commit/1ec6485c6a16c230bf29696ab8fd48eb5edbb78a|CMake]], but WebKit added the **USE_THIN_ARCHIVES** [[https://svn.webkit.org/repository/webkit/releases/WPE%20WebKit/webkit-2.24.0/Source/cmake/OptionsCommon.cmake|feature]] that introduced this issue.
2) Probably because of my gcc flags, the //libyuv// library was trying to use the **Neon** functions of the ARM processor (as it should). However, the *_neon.cc files were not included in [[https://trac.webkit.org/browser/webkit/releases/WPE%20WebKit/webkit-2.24.0/Source/ThirdParty/libwebrtc/CMakeLists.txt?rev=243690|CMakeLists.txt,]] I am not sure why. I had to manually add these:
Source/third_party/libyuv/source/compare_neon.cc
Source/third_party/libyuv/source/rotate_neon.cc
Source/third_party/libyuv/source/rotate_neon.cc
Source/third_party/libyuv/source/row_neon.cc
Source/third_party/libyuv/source/scale_neon.cc