Package: chromium
Version: 83.0.4103.116-1~deb10u3.rtc.use.h264
Severity: important
Dear Chromium maintainer,
Current Chromium package in Debian lack H264 support for WebRTC, which
basically renders this feature unusable.
Yesterday I dig into the issue and figured out why it was behaving like this
(and not on other distribution nor with officiel Chrome package).
It seems OpenH264 has been un-bundled from the sources, and, unlike Firefox,
Chromium does not rely on FFMPEG for WebRTC decoding but needs this library.
I think it's quite an important feature that is missing here. I fully
understand that OpenH264 should not be bundled into Chromium sources but I
failed to find any discussion about this point, so I wanted to bring back this
issue on-top.
Despite being copyrighted by Cisco, OpenH264 is published on GitHub and
released under a 2-clause BSD license, which looks okay to me.
I think the issue might be legal, as H264 is tighted to MPEG group but FFMPEG
also comes with H264 encoder/decoder so that should not be an issue.
Would you consider enabling this feature ? At least if the main issue is just
the lack of OpenH264 package in Debian, we should at least create a RFP for it
and mark this bug being blocked by the RFP. This library should not be hard to
get into the archive, looks like being C++/ASM with Meson build-system.
Thanks in advance,
Regards, Adam.
PS: For the record, here is how I dirty-patched Debian's chromium package to
re-bundle OpenH264 and enable support:
--- chromium-83.0.4103.116/debian/control 2020-06-30 01:38:06.000000000
+0200
+++ chromium-83.0.4103.116/debian/control 2020-11-12 15:21:23.000000000
+0100
@@ -88,6 +88,8 @@
libgcrypt20-dev,
fonts-ipafont-gothic,
fonts-ipafont-mincho,
+ wget,
+ ca-certificates,
Package: chromium
Architecture: i386 amd64 arm64 armhf
diff -Nru chromium-83.0.4103.116/debian/patches/series
chromium-83.0.4103.116/debian/patches/series
--- chromium-83.0.4103.116/debian/patches/series 2020-07-11
18:03:32.000000000 +0200
+++ chromium-83.0.4103.116/debian/patches/series 2020-11-12
15:21:23.000000000 +0100
@@ -35,7 +35,7 @@
disable/signin.patch
disable/android.patch
disable/fuzzers.patch
-disable/openh264.patch
+#disable/openh264.patch
disable/buildbot.patch
disable/catapult.patch
disable/installer.patch
diff -Nru chromium-83.0.4103.116/debian/rules
chromium-83.0.4103.116/debian/rules
--- chromium-83.0.4103.116/debian/rules 2020-07-04 04:50:23.000000000 +0200
+++ chromium-83.0.4103.116/debian/rules 2020-11-12 15:21:23.000000000 +0100
@@ -1,5 +1,7 @@
#!/usr/bin/make -f
+include /usr/share/dpkg/
pkg-info.mk
+
# enable verbose build messages
export DH_VERBOSE=1
@@ -92,6 +94,7 @@
proprietary_codecs=true \
ffmpeg_branding=\"Chrome\" \
fieldtrial_testing_like_official_build=true \
+ rtc_use_h264=true \
# handle parallel build options
njobs=1
@@ -108,6 +111,17 @@
override_dh_auto_configure:
# output compiler information
$(CXX) --version
+
+ # Re-introduce Cisco OpenH264 source code
+ # Also make sure to add it to keepers in ./debian/scripts/unbundle
+ # And don't forget include /usr/share/dpkg/
pkg-info.mk on top
+ wget -qO- '
https://commondatastorage.googleapis.com/chromium-browser-
official/chromium-$(DEB_VERSION_UPSTREAM).tar.xz' \
+ | tar xvJ --directory '$(CURDIR)/third_party/' \
+ --strip-components=2 \
+ --wildcards \
+ '*/third_party/openh264/' \
+ '*/third_party/yasm/'
+
# prefer unbundled (system) libraries
./debian/scripts/unbundle
@@ -142,6 +156,8 @@
rm -rf out
find . -name \*.pyc -execdir rm -f {} \;
dh_auto_clean
+ rm -rf third_party/openh264/*
+ rm -rf third_party/yasm/*
###################### upstream source downloading
############################
diff -Nru chromium-83.0.4103.116/debian/scripts/unbundle
chromium-83.0.4103.116/debian/scripts/unbundle
--- chromium-83.0.4103.116/debian/scripts/unbundle 2020-06-27
03:10:37.000000000 +0200
+++ chromium-83.0.4103.116/debian/scripts/unbundle 2020-11-12
15:21:23.000000000 +0100
@@ -8,7 +8,7 @@
import replace_gn_files
-keepers = ()
+keepers = ("openh264", "yasm")
for lib,rule in replace_gn_files.REPLACEMENTS.items():
if lib not in keepers:
-- System Information:
Debian Release: 10.6
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.19.0-12-amd64 (SMP w/32 CPU cores)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages chromium depends on:
ii chromium-common 83.0.4103.116-1~deb10u3.rtc.use.h264
ii libasound2 1.1.8-1
ii libatk-bridge2.0-0 2.30.0-5
ii libatk1.0-0 2.30.0-2
ii libatspi2.0-0 2.30.0-7
ii libavcodec58 7:4.1.6-1~deb10u1
ii libavformat58 7:4.1.6-1~deb10u1
ii libavutil56 7:4.1.6-1~deb10u1
ii libc6 2.28-10
ii libcairo2 1.16.0-4
ii libcups2 2.2.10-6+deb10u3
ii libdbus-1-3 1.12.20-0+deb10u1
ii libdrm2 2.4.97-1
ii libevent-2.1-6 2.1.8-stable-4
ii libexpat1 2.2.6-2+deb10u1
ii libflac8 1.3.2-3
ii libfontconfig1 2.13.1-2
ii libfreetype6 2.9.1-3+deb10u2
ii libgbm1 18.3.6-2+deb10u1
ii libgcc1 1:8.3.0-6
ii libgdk-pixbuf2.0-0 2.38.1+dfsg-1
ii libglib2.0-0 2.58.3-2+deb10u2
ii libgtk-3-0 3.24.5-1
ii libharfbuzz0b 2.3.1-1
ii libicu63 63.1-6+deb10u1
ii libjpeg62-turbo 1:1.5.2-2+b1
ii libjsoncpp1 1.7.4-3
ii liblcms2-2 2.9-3
ii libminizip1 1.1-8+b1
ii libnspr4 2:4.20-1
ii libnss3 2:3.42.1-1+deb10u3
ii libopenjp2-7 2.3.0-2+deb10u1
ii libopus0 1.3-1
ii libpango-1.0-0 1.42.4-8~deb10u1
ii libpangocairo-1.0-0 1.42.4-8~deb10u1
ii libpng16-16 1.6.36-6
ii libpulse0 12.2-4+deb10u1
ii libre2-5 20190101+dfsg-2
ii libsnappy1v5 1.1.7-1
ii libstdc++6 8.3.0-6
ii libvpx5 1.7.0-3+deb10u1
ii libwebp6 0.6.1-2
ii libwebpdemux2 0.6.1-2
ii libwebpmux3 0.6.1-2
ii libx11-6 2:1.6.7-1+deb10u1
ii libx11-xcb1 2:1.6.7-1+deb10u1
ii libxcb-dri3-0 1.13.1-2
ii libxcb1 1.13.1-2
ii libxcomposite1 1:0.4.4-2
ii libxcursor1 1:1.1.15-2
ii libxdamage1 1:1.1.4-3+b3
ii libxext6 2:1.3.3-1+b2
ii libxfixes3 1:5.0.3-1
ii libxi6 2:1.7.9-1
ii libxml2 2.9.4+dfsg1-7+b3
ii libxrandr2 2:1.5.1-1
ii libxrender1 1:0.9.10-1
ii libxslt1.1 1.1.32-2.2~deb10u1
ii libxss1 1:1.2.3-1
ii libxtst6 2:1.2.3-1
ii zlib1g 1:1.2.11.dfsg-1
Versions of packages chromium recommends:
ii chromium-sandbox 83.0.4103.116-1~deb10u3.rtc.use.h264
Versions of packages chromium suggests:
ii chromium-driver 83.0.4103.116-1~deb10u3.rtc.use.h264
ii chromium-l10n 83.0.4103.116-1~deb10u3.rtc.use.h264
pn chromium-shell <none>
Versions of packages chromium-common depends on:
ii x11-utils 7.7+4
ii xdg-utils 1.1.3-1+deb10u1
Versions of packages chromium-common recommends:
ii chromium-sandbox 83.0.4103.116-1~deb10u3.rtc.use.h264
ii fonts-liberation 1:1.07.4-9
ii gnome-shell [notification-daemon] 3.30.2-11~deb10u2
ii libgl1-mesa-dri 18.3.6-2+deb10u1
pn libu2f-udev <none>
ii notification-daemon 3.20.0-4
ii upower 0.99.10-1
Versions of packages chromium-driver depends on:
ii libc6 2.28-10
ii libevent-2.1-6 2.1.8-stable-4
ii libglib2.0-0 2.58.3-2+deb10u2
ii libicu63 63.1-6+deb10u1
ii libminizip1 1.1-8+b1
ii libnspr4 2:4.20-1
ii libnss3 2:3.42.1-1+deb10u3
ii libre2-5 20190101+dfsg-2
ii libstdc++6 8.3.0-6
ii libx11-6 2:1.6.7-1+deb10u1
ii zlib1g 1:1.2.11.dfsg-1
Versions of packages chromium-sandbox depends on:
ii libc6 2.28-10
-- no debconf information