User Tools

Site Tools


embedded-web-interaction:wpe:webrtc

This is an old revision of the document!


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

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 CMake, but WebKit added the USE_THIN_ARCHIVES 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 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
embedded-web-interaction/wpe/webrtc.1554205584.txt.gz · Last modified: 2019/04/02 11:46 by avnerus