Skip to content

threema-ch/webrtc-android

WebRTC Build for Android

License

This is a WebRTC build with Java bindings packaged for Android.

⚠️ Warning: This build of WebRTC contains patches specific to Threema (see section "Patches / Build config" below). Certain aspects (for example audio codecs, RTP header extensions or ciphersuite selection) may behave differently than stock WebRTC and you might run into compatibility issues in some cases. We offer no support for this package outside of Threema. If you need help with WebRTC, try asking in the discuss-webrtc mailing list or on StackOverflow.

Installing

This package is available on Maven Central (starting with version 91.0.1). It includes the WebRTC PeerConnection build for ARM and x86, both 32 and 64 bit builds.

Gradle:

compile 'ch.threema:webrtc-android:123.0.0'

Maven:

<dependency>
  <groupId>ch.threema</groupId>
  <artifactId>webrtc-android</artifactId>
  <version>123.0.0</version>
  <type>pom</type>
</dependency>

Target Commits

These are the target commits for the releases:

Patches / Build config

The builds are created using webrtc-build-docker.

v123.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false rtc_include_dav1d_in_internal_decoder_factory=false rtc_include_ilbc=false):

  6002 2024-03-18 19:39 /patches/disable-dtmf-and-comfort-noise.patch
 11843 2024-03-18 15:24 /patches/disable-unused-audio-codecs.patch
   850 2024-03-18 15:25 /patches/dont-leak-video-orientation.patch
   909 2024-03-18 19:39 /patches/dtls-cipher-suites.patch
   942 2024-03-18 15:26 /patches/enable-cbr-by-default.patch
  9564 2024-03-18 15:26 /patches/expose-certificate-fingerprint.patch
  8477 2024-03-18 15:27 /patches/expose-crypto-option-aes-128-sha1-80.patch
  3164 2024-03-18 15:27 /patches/expose-video-capturer-state.patch
101862 2024-03-18 19:39 /patches/group-call-frame-crypto.patch
  2456 2024-03-18 19:39 /patches/only-resolve-uuid-mdns-hostnames.patch
  2574 2024-03-18 19:39 /patches/srtp-cipher-suites.patch

v120.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false rtc_include_dav1d_in_internal_decoder_factory=false rtc_include_ilbc=false):

 6002 2023-12-14 16:31 /patches/disable-dtmf-and-comfort-noise.patch
11843 2023-06-01 15:41 /patches/disable-unused-audio-codecs.patch
  850 2023-12-14 16:31 /patches/dont-leak-video-orientation.patch
  909 2023-12-14 16:31 /patches/dtls-cipher-suites.patch
  942 2023-06-01 15:41 /patches/enable-cbr-by-default.patch
 9564 2023-12-14 16:31 /patches/expose-certificate-fingerprint.patch
 8477 2023-12-14 16:31 /patches/expose-crypto-option-aes-128-sha1-80.patch
 3164 2023-12-14 16:31 /patches/expose-video-capturer-state.patch
 1752 2023-12-14 16:31 /patches/force-dtls-1_2.patch
01870 2023-12-14 16:31 /patches/group-call-frame-crypto.patch
 2456 2023-12-14 16:31 /patches/only-resolve-uuid-mdns-hostnames.patch
 2574 2023-12-14 16:31 /patches/srtp-cipher-suites.patch

v114.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false rtc_include_dav1d_in_internal_decoder_factory=false rtc_include_ilbc=false):

  6024 2023-06-27 09:24 /patches/disable-dtmf-and-comfort-noise.patch
 11843 2023-06-27 09:24 /patches/disable-unused-audio-codecs.patch
   850 2023-06-27 09:24 /patches/dont-leak-video-orientation.patch
   909 2023-06-27 09:24 /patches/dtls-cipher-suites.patch
   942 2023-06-27 09:24 /patches/enable-cbr-by-default.patch
  9564 2023-06-27 09:24 /patches/expose-certificate-fingerprint.patch
  8477 2023-06-27 09:24 /patches/expose-crypto-option-aes-128-sha1-80.patch
  3628 2023-06-27 09:24 /patches/expose-video-capturer-state.patch
  1752 2023-06-27 09:24 /patches/force-dtls-1_2.patch
101860 2023-06-27 09:24 /patches/group-call-frame-crypto.patch
  2456 2023-06-27 09:24 /patches/only-resolve-uuid-mdns-hostnames.patch
  2574 2023-06-27 09:24 /patches/srtp-cipher-suites.patch

v110.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false rtc_include_dav1d_in_internal_decoder_factory=false rtc_include_ilbc=false):

 6024 2023-02-21 19:59 /patches/disable-dtmf-and-comfort-noise.patch
11835 2023-02-21 19:59 /patches/disable-unused-audio-codecs.patch
  815 2021-04-08 19:16 /patches/dont-leak-video-orientation.patch
  687 2022-08-08 09:22 /patches/dtls-cipher-suites.patch
  818 2021-04-08 19:16 /patches/enable-cbr-by-default.patch
 8831 2021-04-08 19:16 /patches/expose-crypto-option-aes-128-sha1-80.patch
 3628 2021-04-12 13:32 /patches/expose-video-capturer-state.patch
 1750 2021-04-08 19:16 /patches/force-dtls-1_2.patch
80250 2023-02-21 19:59 /patches/group-call-frame-crypto.patch
 2461 2022-12-15 22:49 /patches/only-resolve-uuid-mdns-hostnames.patch
 2574 2022-03-30 21:26 /patches/srtp-cipher-suites.patch

v108.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

 5872 2022-12-15 22:49 /patches/disable-dtmf-and-comfort-noise.patch
16587 2022-12-15 22:49 /patches/disable-unused-audio-codecs.patch
  815 2021-04-08 19:16 /patches/dont-leak-video-orientation.patch
  687 2022-08-08 09:22 /patches/dtls-cipher-suites.patch
  818 2021-04-08 19:16 /patches/enable-cbr-by-default.patch
 8831 2021-04-08 19:16 /patches/expose-crypto-option-aes-128-sha1-80.patch
 3628 2021-04-12 13:32 /patches/expose-video-capturer-state.patch
 1750 2021-04-08 19:16 /patches/force-dtls-1_2.patch
80867 2022-12-15 22:49 /patches/group-call-frame-crypto.patch
 2461 2022-12-15 22:49 /patches/only-resolve-uuid-mdns-hostnames.patch
 2574 2022-03-30 21:26 /patches/srtp-cipher-suites.patch

v100.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

 5934 2022-04-07 04:42 patches/disable-dtmf-and-comfort-noise.patch
16331 2022-04-07 04:42 patches/disable-unused-audio-codecs.patch
  815 2022-04-06 13:45 patches/dont-leak-video-orientation.patch
  687 2022-04-07 04:42 patches/dtls-cipher-suites.patch
  818 2022-04-06 13:45 patches/enable-cbr-by-default.patch
 8831 2022-04-06 13:45 patches/expose-crypto-option-aes-128-sha1-80.patch
 3628 2022-04-06 13:45 patches/expose-video-capturer-state.patch
 1750 2022-04-06 13:45 patches/force-dtls-1_2.patch
 2453 2022-04-06 13:45 patches/only-resolve-uuid-mdns-hostnames.patch
 2574 2022-04-06 13:45 patches/srtp-cipher-suites.patch

v94.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

 5162 2021-04-09 13:22 patches/disable-dtmf-and-comfort-noise.patch
15479 2021-04-09 13:00 patches/disable-unused-audio-codecs.patch
  815 2021-04-09 13:00 patches/dont-leak-video-orientation.patch
  743 2021-04-09 13:00 patches/dtls-cipher-suites.patch
  818 2021-04-09 13:00 patches/enable-cbr-by-default.patch
 8831 2021-04-09 13:00 patches/expose-crypto-option-aes-128-sha1-80.patch
 3628 2021-04-09 13:00 patches/expose-video-capturer-state.patch
 1750 2021-04-09 13:00 patches/force-dtls-1_2.patch
 2453 2021-10-04 09:20 patches/only-resolve-uuid-mdns-hostnames.patch
 2574 2021-10-04 09:31 patches/srtp-cipher-suites.patch
 2156 2021-10-04 09:48 patches/unreachable-code-warnings.patch

v91.0.1 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

Like v91.0.0, but packaging was upgraded to Gradle 6.8 and the maven-publish plugin. Starting with this release, the library will only be published to Maven Central.

v91.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

 5162 2021-04-09 13:22 patches/disable-dtmf-and-comfort-noise.patch
15479 2021-04-09 13:00 patches/disable-unused-audio-codecs.patch
  815 2021-04-09 13:00 patches/dont-leak-video-orientation.patch
  743 2021-04-09 13:00 patches/dtls-cipher-suites.patch
  818 2021-04-09 13:00 patches/enable-cbr-by-default.patch
 8831 2021-04-09 13:00 patches/expose-crypto-option-aes-128-sha1-80.patch
 3628 2021-04-09 13:00 patches/expose-video-capturer-state.patch
49010 2021-04-09 13:00 patches/fix-rtp-header-extension-encryption.patch
 1750 2021-04-09 13:00 patches/force-dtls-1_2.patch
 2439 2021-04-09 13:00 patches/only-resolve-uuid-mdns-hostnames.patch
 2615 2021-04-09 13:00 patches/srtp-cipher-suites.patch

v84.2.1 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

Like v84.2.0, but released to Maven Central for easier backwards compatibility.

v84.2.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

Like v84.1.0, but with the following additional patch:

3636 Nov 10 16:37 patches/expose-video-capturer-state.patch

v84.1.1 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

Like v84.1.0, but based on commit 963cc1ef1336b52ca27742beb28bfbc211ed54d0.

v84.1.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

Like v84.0.0, but with the following additional patch:

12394 Jun 22 15:23 patches/fix-data-channel-message-integrity.patch

v84.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

 3603 May 26 13:53 patches/disable-dtmf-and-comfort-noise.patch
15479 May 26 13:53 patches/disable-unused-audio-codecs.patch
  815 May 26 13:53 patches/dont-leak-video-orientation.patch
  743 May  7 15:55 patches/dtls-cipher-suites.patch
  818 May 26 13:53 patches/enable-cbr-by-default.patch
 8831 Jun 15 15:18 patches/expose-crypto-option-aes-128-sha1-80.patch
 4718 Jun 15 15:17 patches/expose-offer-extmap-allow-mixed.patch
34276 May 26 13:53 patches/fix-rtp-header-extension-encryption.patch
 1750 May 26 13:53 patches/force-dtls-1_2.patch
  614 May 26 16:02 patches/libsrtp-two-byte-rtp-header-extension-crypto.patch
 2439 May 26 13:53 patches/only-resolve-uuid-mdns-hostnames.patch
 2615 May 28 10:26 patches/srtp-cipher-suites.patch

v83.1.1 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

3.6K May 26 13:53 patches/disable-dtmf-and-comfort-noise.patch
 16K May 26 13:53 patches/disable-unused-audio-codecs.patch
 815 May 26 13:53 patches/dont-leak-video-orientation.patch
 743 May  7 15:55 patches/dtls-cipher-suites.patch
 818 May 26 13:53 patches/enable-cbr-by-default.patch
5.0K May  7 15:55 patches/expose-crypto-option-aes-128-sha1-80.patch
2.3K May  7 15:55 patches/expose-offer-extmap-allow-mixed.patch
 34K May 26 13:53 patches/fix-rtp-header-extension-encryption.patch
1.8K May 26 13:53 patches/force-dtls-1_2.patch
 614 May 26 16:02 patches/libsrtp-two-byte-rtp-header-extension-crypto.patch
 864 May 26 15:39 patches/objc-rtcstats-export.patch
2.4K May 26 13:53 patches/only-resolve-uuid-mdns-hostnames.patch
2.6K May 28 10:26 patches/srtp-cipher-suites.patch

v83.1.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false):

3.6K May 26 13:53 patches/disable-dtmf-and-comfort-noise.patch
 16K May 26 13:53 patches/disable-unused-audio-codecs.patch
 815 May 26 13:53 patches/dont-leak-video-orientation.patch
 743 May  7 15:55 patches/dtls-cipher-suites.patch
 818 May 26 13:53 patches/enable-cbr-by-default.patch
5.0K May  7 15:55 patches/expose-crypto-option-aes-128-sha1-80.patch
2.3K May  7 15:55 patches/expose-offer-extmap-allow-mixed.patch
 34K May 26 13:53 patches/fix-rtp-header-extension-encryption.patch
1.8K May 26 13:53 patches/force-dtls-1_2.patch
 614 May 26 16:02 patches/libsrtp-two-byte-rtp-header-extension-crypto.patch
 864 May 26 15:39 patches/objc-rtcstats-export.patch
2.4K May 26 13:53 patches/only-resolve-uuid-mdns-hostnames.patch
 817 May 13 10:23 patches/srtp-cipher-suites.patch

v83.0.0 (WEBRTC_COMPILE_ARGS: symbol_level=1)

  • dtls-cipher-suites.patch
  • expose-crypto-option-aes-128-sha1-80.patch
  • expose-offer-extmap-allow-mixed.patch
  • srtp-cipher-suites.patch

v81.1.0 (WEBRTC_COMPILE_ARGS: symbol_level=1 enable_libaom=false)

12392 Jun 23 09:01 patches/fix-data-channel-message-integrity.patch
 8201 Jun 23 09:01 patches/fix-sctp-pointer-leak.patch

Signatures

Releases to Maven Central are signed with the following PGP key:

pub   rsa4096 2016-09-06 [SC] [expires: 2026-09-04]
      E7AD D991 4E26 0E8B 35DF  B506 65FD E935 573A CDA6
uid           Threema Signing Key <[email protected]>

Local testing

Create a local publication (usually at $HOME/.m2/repository/):

./gradlew publishToMavenLocal

Include it in your project like this:

repositories {
    ...
    mavenLocal()
}

License

Copyright (c) 2019-2024 Threema GmbH

Licensed under the Apache License, Version 2.0, <see LICENSE-APACHE file>
or the MIT license <see LICENSE-MIT file>, at your option. This file may not be
copied, modified, or distributed except according to those terms.