Files
obs-streamer-tools-plugin/third_party/livekit/README.md
T
shadowdaoandClaude Sonnet 5 14fa00af3f
Build / macOS (macos-latest) (push) Successful in 28s
Build / Linux (ubuntu-24.04) (push) Successful in 59s
Build / Windows (windows-latest) (push) Successful in 10m45s
docs: OpenH264/MPEG-LA royalty finding sharpens C1 -- not resolved
Cisco's own OpenH264 FAQ (openh264.org/faq.html) is explicit: they cover
MPEG-LA/AVC patent-pool royalties only for their own prebuilt binary,
downloaded at install time. Anyone who compiles OpenH264 from source
and redistributes it inside their own binary takes on "all applicable
license fees" themselves -- Cisco "will not be liable for any licensing
fees incurred by other parties" in that case.

LiveKit's client-sdk-cpp links Google libwebrtc via the webrtc-sdk
org's fork, whose documented build args (rtc_use_h264=true,
ffmpeg_branding="Chrome") are the standard Chromium/WebRTC recipe --
which links a from-source, statically-compiled copy of OpenH264 (from
Google's mirror, not Cisco's runtime binary) into libwebrtc. That is
exactly the shape of case Cisco's FAQ says voids their coverage. Not
independently confirmed against LiveKit's actual pinned v1.10.1 build
(their release archives ship only compiled output, no build manifest)
-- this is webrtc-sdk/libwebrtc's documented default, not a verified
fact about this specific artifact.

This sharpens C1 into a concrete mechanism instead of a general open
question. It does not resolve C1 -- if anything it strengthens the case
for treating it as unresolved -- and none of this is a substitute for
an actual legal opinion. Recorded in third_party/livekit/README.md (the
full writeup), README.md's Status section, and the release-notes
template in publish-release.sh so it reaches whoever opens a draft
release next, not just this one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
2026-09-07 07:45:36 -07:00

4.1 KiB

LiveKit client-sdk-cpp redistribution notices

This plugin links and redistributes prebuilt binaries from livekit/client-sdk-cpp — the liblivekit / liblivekit_ffi shared libraries that ship next to the plugin module — so the SDK's licence and notice files ship with it.

LICENSE and NOTICE here are copied verbatim from the pinned release tag v1.10.1 (Apache License 2.0). They are staged into build/package/licenses/ by obs-adapter/CMakeLists.txt on every build, alongside this plugin's own Apache-2.0 LICENSE (this project's own first-party code was relicensed from GPL-2.0 to Apache-2.0 to match).

A correction to the design doc

The design doc's open questions say:

client-sdk-cpp's bundled LICENSE.md (~28 distinct third-party license blocks — Google WebRTC, OpenH264, etc.) must ship inside the plugin package

No such file exists at v1.10.1. Checked, on 2026-09-06:

  • The five release archives for this tag (livekit-sdk-<triple>-1.10.1.tar.gz / .zip) contain only include/, lib/, bin/ and share/livekit/build-info.json. No licence file of any kind.
  • The repository at tag v1.10.1 has LICENSE (Apache-2.0, 10142 bytes) and NOTICE (553 bytes) at its root. There is no LICENSE.md, no NOTICE.md, and no THIRD_PARTY_LICENSES file.

So what ships here is the Apache-2.0 licence and notice, which is what actually exists upstream. The aggregated third-party notice the design doc expected — covering the WebRTC/OpenH264/etc. code statically linked inside liblivekit_ffi.so — has not been located and is not being shipped. That is a real, open licensing question for whoever signs off on distributing release binaries, not something this packaging step has resolved. Worth raising upstream, or asking counsel whether the Apache-2.0 NOTICE alone suffices for a binary redistribution of that library.

The OpenH264/MPEG-LA royalty question specifically (2026-09-07)

This is narrower and more concrete than the paragraph above, and worth tracking separately because it changes the actual risk, not just the paperwork:

Cisco's own OpenH264 FAQ (https://www.openh264.org/faq.html) draws a sharp line: Cisco covers the MPEG-LA/AVC patent-pool royalties only for their own prebuilt OpenH264 binary module, downloaded at install time by the end user's machine. Anyone who compiles OpenH264 source themselves and redistributes the result inside their own binary takes on "all applicable license fees" themselves — Cisco is explicit that it "will not be liable for any licensing fees incurred by other parties" in that case.

LiveKit's client-sdk-cpp links Google's libwebrtc, built via the webrtc-sdk org's fork (github.com/webrtc-sdk/libwebrtc), whose documented build args include rtc_use_h264=true and ffmpeg_branding="Chrome" — the standard Chromium/WebRTC recipe, in which H.264 encode is provided by a from-source compile of OpenH264 (pulled from Google's own mirror of the Cisco source, not downloaded as Cisco's runtime binary) and statically linked into the resulting libwebrtc. That is the exact shape of the case Cisco's FAQ says voids their royalty coverage.

This has not been independently confirmed against LiveKit's actual pinned build (their v1.10.1 release archives ship only compiled lib//bin/ output, no build manifest showing which GN args actually produced them) — what's established is that this is webrtc-sdk/libwebrtc's documented default recipe, not a verified fact about LiveKit's specific artifact. But taking it at face value: liblivekit_ffi, which this plugin bundles and redistributes, likely contains a statically-linked copy of OpenH264 built in the way that shifts H.264 patent-royalty liability onto whoever redistributes it — i.e., onto a release of this plugin, not onto Cisco or LiveKit.

This is exactly what C1 (see the main README.md ## Status section) is tracking, now with a concrete mechanism attached instead of an open question mark. It does not resolve C1 — if anything it sharpens the case for treating it as unresolved — and it is not a substitute for an actual legal opinion.