docs/release: drop the C1 licensing gate, simplify install instructions
Build / macOS (macos-latest) (push) Successful in 29s
Build / Linux (ubuntu-24.04) (push) Successful in 49s
Build / Windows (windows-latest) (push) Successful in 2m50s
Release / macOS (macos-latest) (push) Successful in 33s
Release / Linux (ubuntu-24.04) (push) Successful in 56s
Release / Windows (windows-latest) (push) Successful in 3m20s
Release / Create Gitea Release (draft) (push) Successful in 19s
Build / macOS (macos-latest) (push) Successful in 29s
Build / Linux (ubuntu-24.04) (push) Successful in 49s
Build / Windows (windows-latest) (push) Successful in 2m50s
Release / macOS (macos-latest) (push) Successful in 33s
Release / Linux (ubuntu-24.04) (push) Successful in 56s
Release / Windows (windows-latest) (push) Successful in 3m20s
Release / Create Gitea Release (draft) (push) Successful in 19s
The WebRTC/OpenH264 attribution question tracked as "C1" throughout README, third_party/livekit/README.md, the release-notes template, and both workflow header comments is the project owner's call, and it has been made -- own sign-off given and reaffirmed. Remove the gate language and the extended research writeup from release-facing docs; keep the actual LICENSE/NOTICE files themselves (Apache-2.0 requires shipping those regardless of any of this). Also simplify the release notes' install instructions per owner request: point at each platform's default OBS plugins folder rather than walking through verbose per-platform copy/extract instructions -- the archives already extract straight into place (prior commit), so a short pointer is all that's needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
This commit is contained in:
@@ -1,15 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Creates a (draft) Gitea Release for the tag that triggered
|
# Creates a (draft) Gitea Release for the tag that triggered
|
||||||
# .gitea/workflows/release.yml, and uploads every archive in $DIST_DIR as a
|
# .gitea/workflows/release.yml, and uploads every archive in $DIST_DIR as a
|
||||||
# release asset.
|
# release asset. Draft because nobody has run this plugin in the OBS GUI on
|
||||||
#
|
# any platform yet -- a human still opens it and clicks Publish once that's
|
||||||
# RELEASE GATE: see the README's `## Status` section and
|
# no longer true (or once they're satisfied regardless).
|
||||||
# third_party/livekit/README.md. The WebRTC/OpenH264 attribution question
|
|
||||||
# ("C1") is unresolved -- this script does not decide that question, it just
|
|
||||||
# makes sure the generated release notes put the reminder where whoever
|
|
||||||
# publishes the draft will actually read it. Pushing a version tag is the
|
|
||||||
# human decision this whole workflow hangs off of; this script does not add
|
|
||||||
# or remove any judgment about whether that decision was the right one.
|
|
||||||
#
|
#
|
||||||
# Required env: GITEA_TOKEN, SERVER, OWNER, REPO, TAG, SHA, DIST_DIR
|
# Required env: GITEA_TOKEN, SERVER, OWNER, REPO, TAG, SHA, DIST_DIR
|
||||||
# Optional env: MACOS_BUNDLE_FOUND ("true"/"false", default "false")
|
# Optional env: MACOS_BUNDLE_FOUND ("true"/"false", default "false")
|
||||||
@@ -26,53 +20,12 @@ MACOS_BUNDLE_FOUND="${MACOS_BUNDLE_FOUND:-false}"
|
|||||||
|
|
||||||
if [ "${MACOS_BUNDLE_FOUND}" = "true" ]; then
|
if [ "${MACOS_BUNDLE_FOUND}" = "true" ]; then
|
||||||
MACOS_NOTE="This archive contains a \`.plugin\` bundle."
|
MACOS_NOTE="This archive contains a \`.plugin\` bundle."
|
||||||
MACOS_INSTALL_HEADING="### macOS (installation path not yet verified in real OBS)"
|
|
||||||
MACOS_INSTALL_BODY="OBS on macOS loads plugins as \`<name>.plugin\` bundles under
|
|
||||||
\`~/Library/Application Support/obs-studio/plugins/\`. This archive already
|
|
||||||
has that shape at its top level -- extract it straight there:
|
|
||||||
|
|
||||||
\`\`\`
|
|
||||||
unzip streamer-tools-camera-${TAG}-macos.zip \\
|
|
||||||
-d ~/Library/Application\\ Support/obs-studio/plugins/
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
No manual copying required. This has not been confirmed against a real OBS
|
|
||||||
install on macOS -- report back if you try it."
|
|
||||||
else
|
else
|
||||||
MACOS_NOTE="This archive is packaged as a bare \`streamer-tools-camera.so\` (the layout \`build/package/\` currently produces on macOS), **not** an OBS.app-loadable \`.plugin\` bundle. It will not load in the OBS GUI as-is."
|
MACOS_NOTE="This archive is packaged as a bare \`streamer-tools-camera.so\` (the layout \`build/package/\` currently produces on macOS), **not** an OBS.app-loadable \`.plugin\` bundle. It will not load in the OBS GUI as-is -- see the \"macOS packaging gap\" section of \`README.md\`."
|
||||||
MACOS_INSTALL_HEADING="### macOS (installation path not yet verified in real OBS; packaging gap)"
|
|
||||||
MACOS_INSTALL_BODY="OBS on macOS loads plugins as \`<name>.plugin\` bundles under
|
|
||||||
\`~/Library/Application Support/obs-studio/plugins/\`. As of this release,
|
|
||||||
this project's \`build/package/\` output on macOS is **not yet that bundle
|
|
||||||
shape** -- see the \"macOS packaging gap\" section of \`README.md\`. Treat the
|
|
||||||
macOS archive here as a build-verification artifact, not a working
|
|
||||||
drop-in, until that gap is closed."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NOTES_FILE="$(mktemp)"
|
NOTES_FILE="$(mktemp)"
|
||||||
cat > "${NOTES_FILE}" <<EOF
|
cat > "${NOTES_FILE}" <<EOF
|
||||||
> **This build has not been cleared for redistribution.** The plugin
|
|
||||||
> statically/dynamically pulls in Google WebRTC and OpenH264 code through the
|
|
||||||
> LiveKit SDK, and whether that can be redistributed as a public download --
|
|
||||||
> the "C1" attribution/patent question -- has not been resolved. Cisco's own
|
|
||||||
> OpenH264 FAQ says they cover MPEG-LA royalties only for their own
|
|
||||||
> runtime-downloaded binary, not for OpenH264 compiled from source into
|
|
||||||
> someone else's redistributed binary -- which is the normal way LiveKit's
|
|
||||||
> WebRTC build links it (unconfirmed against LiveKit's actual pinned build;
|
|
||||||
> see \`third_party/livekit/README.md\`'s 2026-09-07 section for exactly
|
|
||||||
> what is and isn't verified). See the \`## Status\` section of
|
|
||||||
> \`README.md\` for the rest. By publishing this release, you are personally
|
|
||||||
> taking on that open question -- if C1 hasn't been signed off on, don't
|
|
||||||
> publish it.
|
|
||||||
>
|
|
||||||
> (The separate GPLv2/Apache-2.0 license-compatibility question, "C2", is
|
|
||||||
> resolved: this project's own first-party code is Apache-2.0, matching the
|
|
||||||
> vendored LiveKit binaries.)
|
|
||||||
>
|
|
||||||
> This release was created as a **draft**. It stays invisible to anyone
|
|
||||||
> without write access to this repo until someone with write access opens it
|
|
||||||
> here and clicks Publish -- a second, deliberate step past pushing the tag.
|
|
||||||
|
|
||||||
# streamer-tools Camera Plugin -- ${TAG}
|
# streamer-tools Camera Plugin -- ${TAG}
|
||||||
|
|
||||||
Built from commit \`${SHA}\`.
|
Built from commit \`${SHA}\`.
|
||||||
@@ -80,51 +33,25 @@ Built from commit \`${SHA}\`.
|
|||||||
**Nobody has yet run this plugin in the OBS GUI, on any platform.** See "What
|
**Nobody has yet run this plugin in the OBS GUI, on any platform.** See "What
|
||||||
is verified, and how" in \`README.md\` for exactly what has and has not been
|
is verified, and how" in \`README.md\` for exactly what has and has not been
|
||||||
checked, including which claims are backed by automated tests versus a human
|
checked, including which claims are backed by automated tests versus a human
|
||||||
watching OBS.
|
watching OBS. This is why the release is a draft -- open it and click Publish
|
||||||
|
once you're satisfied.
|
||||||
|
|
||||||
| Platform | Archive | Notes |
|
| Platform | Archive | Notes |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Linux (x64) | \`streamer-tools-camera-${TAG}-linux-x64.zip\` | Functionally complete and verified end to end against a real LiveKit server and a real libobs (see README); OBS GUI itself still unverified |
|
| Linux (x64) | \`streamer-tools-camera-${TAG}-linux-x64.zip\` | Functionally complete and verified end to end against a real LiveKit server and a real libobs (see README); OBS GUI itself still unverified |
|
||||||
| Windows (x64) | \`streamer-tools-camera-${TAG}-windows-x64.zip\` | Built and tested by this workflow's Windows job; the WinHTTP backend has never been exercised against a real streamer-tools server, only a loopback test server -- see README's Windows CI section |
|
| Windows (x64) | \`streamer-tools-camera-${TAG}-windows-x64.zip\` | Built and tested by this workflow's Windows job; the WinHTTP backend has never been exercised against a real streamer-tools server, only a loopback test server -- see README's Windows CI section |
|
||||||
| macOS | \`streamer-tools-camera-${TAG}-macos.zip\` | Built and tested by this workflow's macOS job. ${MACOS_NOTE} See the "macOS packaging gap" in README |
|
| macOS | \`streamer-tools-camera-${TAG}-macos.zip\` | Built and tested by this workflow's macOS job. ${MACOS_NOTE} |
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
Every archive is now shaped as a straight drop-in for its platform's OBS
|
Extract the archive into your OBS plugins folder for your platform (the
|
||||||
plugins directory -- extract it directly there, no manual copying of
|
default locations are easy to find online -- typically
|
||||||
subfolders required.
|
\`~/.config/obs-studio/plugins/\` on Linux, \`%APPDATA%\\obs-studio\\plugins\\\`
|
||||||
|
on Windows, \`~/Library/Application Support/obs-studio/plugins/\` on macOS).
|
||||||
### Linux
|
Each archive's top-level folder already matches the shape OBS expects there,
|
||||||
|
so extracting is the whole install step. Then in OBS: Sources -> \`+\` ->
|
||||||
\`\`\`
|
"streamer-tools Camera" -> fill in the server URL, room slug and read key
|
||||||
mkdir -p ~/.config/obs-studio/plugins
|
from the room's settings page -> "Refresh camera list" -> pick a camera.
|
||||||
unzip streamer-tools-camera-${TAG}-linux-x64.zip -d ~/.config/obs-studio/plugins/
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
Start OBS, then Sources -> \`+\` -> "streamer-tools Camera" -> fill in the
|
|
||||||
server URL, room slug and read key from the room's settings page ->
|
|
||||||
"Refresh camera list" -> pick a camera. Known-good on Linux -- see README's
|
|
||||||
"Testing this by hand" for the equivalent flow from a source build.
|
|
||||||
|
|
||||||
### Windows (installation path not yet verified in real OBS)
|
|
||||||
|
|
||||||
Per \`AddExtraModulePaths()\` in obs-studio's \`UI/window-basic-main.cpp\`, OBS
|
|
||||||
on Windows searches \`%APPDATA%\\obs-studio\\plugins\\<name>\\\` for
|
|
||||||
\`bin\\64bit\\<name>.dll\` plus a sibling \`data\\\`. This archive already has
|
|
||||||
that \`<name>\\bin\\...\`/\`<name>\\data\\...\` shape at its top level --
|
|
||||||
extract it straight into the plugins folder:
|
|
||||||
|
|
||||||
\`\`\`
|
|
||||||
Expand-Archive streamer-tools-camera-${TAG}-windows-x64.zip \`
|
|
||||||
-DestinationPath \$env:APPDATA\\obs-studio\\plugins\\
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
This has not been confirmed against a real OBS install on Windows -- report
|
|
||||||
back if you try it.
|
|
||||||
|
|
||||||
${MACOS_INSTALL_HEADING}
|
|
||||||
|
|
||||||
${MACOS_INSTALL_BODY}
|
|
||||||
|
|
||||||
## What this is
|
## What this is
|
||||||
|
|
||||||
|
|||||||
@@ -15,19 +15,10 @@ name: Build
|
|||||||
# .gitea/workflows/release.yml, so the two workflows can't drift apart --
|
# .gitea/workflows/release.yml, so the two workflows can't drift apart --
|
||||||
# edit the scripts, not either workflow, to change how a platform builds.
|
# edit the scripts, not either workflow, to change how a platform builds.
|
||||||
#
|
#
|
||||||
# RELEASE GATE: this workflow only builds, tests, and uploads CI-internal
|
# This workflow only builds, tests, and uploads CI-internal workflow
|
||||||
# workflow artifacts (actions/upload-artifact, below) -- it does not create a
|
# artifacts (actions/upload-artifact, below) -- it does not create a Gitea
|
||||||
# Gitea Release, push a tag-triggered publish, or otherwise distribute
|
# Release. .gitea/workflows/release.yml is that publish step, gated on a
|
||||||
# binaries publicly, and it must not start doing so without explicit owner
|
# pushed version tag rather than on every push.
|
||||||
# sign-off on the WebRTC/OpenH264 attribution question tracked in
|
|
||||||
# third_party/livekit/README.md and the README's top-level Status section.
|
|
||||||
# (The separate GPLv2/Apache-2.0 license-compatibility question is resolved:
|
|
||||||
# this project's own code is Apache-2.0.) If a real release/publish step is
|
|
||||||
# ever added here, it must carry that same gate.
|
|
||||||
#
|
|
||||||
# (.gitea/workflows/release.yml is that publish step, gated on a pushed
|
|
||||||
# version tag rather than on every push -- see the gate reminder baked into
|
|
||||||
# its generated release notes.)
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|||||||
@@ -4,24 +4,11 @@ name: Release
|
|||||||
# a (draft) Gitea Release for it, so the project owner and other directors
|
# a (draft) Gitea Release for it, so the project owner and other directors
|
||||||
# can grab a ready-to-use build instead of compiling from source.
|
# can grab a ready-to-use build instead of compiling from source.
|
||||||
#
|
#
|
||||||
# RELEASE GATE -- READ BEFORE TAGGING
|
# Runs only on a pushed version tag (see `on.push.tags` below) -- never on an
|
||||||
# ------------------------------------------------------------------
|
# ordinary push or PR, unlike build.yml. The release it creates is a DRAFT:
|
||||||
# This workflow runs ONLY on a pushed version tag (see `on.push.tags` below)
|
# it stays invisible to anyone without write access until a human explicitly
|
||||||
# -- it never runs on an ordinary push or PR, unlike build.yml. Pushing a
|
# opens it and clicks Publish, since nobody has run this plugin in the OBS
|
||||||
# tag is therefore the one deliberate human act that starts it, and the
|
# GUI on any platform yet.
|
||||||
# release it creates is a DRAFT: it stays invisible to anyone without write
|
|
||||||
# access until a human explicitly opens it and clicks Publish. That is a
|
|
||||||
# second deliberate act past the tag push.
|
|
||||||
#
|
|
||||||
# Both of those are process, not a legal opinion. The actual open question --
|
|
||||||
# whether this plugin's bundled WebRTC/OpenH264 code (via LiveKit) can be
|
|
||||||
# redistributed as a public download at all -- is tracked as "C1" in the
|
|
||||||
# README's `## Status` section and in third_party/livekit/README.md, and it
|
|
||||||
# is NOT resolved. Nothing here resolves it; the generated release notes put
|
|
||||||
# a reminder of that fact at the top of every release this workflow creates,
|
|
||||||
# specifically so nobody publishes a draft without seeing it again first.
|
|
||||||
# (The separate GPLv2/Apache-2.0 question, "C2", *is* resolved -- see
|
|
||||||
# README.)
|
|
||||||
#
|
#
|
||||||
# The actual per-platform build commands live in .gitea/scripts/ and are the
|
# The actual per-platform build commands live in .gitea/scripts/ and are the
|
||||||
# same scripts .gitea/workflows/build.yml uses, so this workflow can't drift
|
# same scripts .gitea/workflows/build.yml uses, so this workflow can't drift
|
||||||
|
|||||||
@@ -8,40 +8,15 @@ Media-Source path for directors. Full design:
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
**Release/distribution of built binaries is blocked pending owner sign-off.**
|
This project's own code is Apache-2.0 (relicensed from GPL-2.0-or-later to
|
||||||
This plugin statically/dynamically pulls in Google WebRTC and OpenH264 code
|
match the vendored LiveKit binaries, which are also Apache-2.0 — see
|
||||||
through the LiveKit SDK — a real patent/royalty question (OpenH264/WebRTC)
|
`LICENSE` and `NOTICE`, and `third_party/livekit/` for LiveKit's own).
|
||||||
that only the project owner can decide. Nothing in this repo should be built
|
|
||||||
into a package and handed out, posted, or attached to a public release until
|
|
||||||
that sign-off happens. See `third_party/livekit/README.md` for the specifics
|
|
||||||
of what is and is not currently known/shipped on the licensing side —
|
|
||||||
including a 2026-09-07 finding, sourced from Cisco's own OpenH264 FAQ, that
|
|
||||||
the way LiveKit's WebRTC build normally links OpenH264 (statically, from
|
|
||||||
source, not Cisco's runtime-downloaded binary) is specifically the case Cisco
|
|
||||||
says voids their MPEG-LA royalty coverage and shifts it to the redistributor.
|
|
||||||
That finding has not been confirmed against LiveKit's actual pinned build —
|
|
||||||
see the third_party doc for exactly what is and isn't verified. (CI in
|
|
||||||
`.gitea/workflows/build.yml` only builds, tests, and uploads CI-internal
|
|
||||||
build artifacts — it does not create a Gitea Release or otherwise publish
|
|
||||||
anything publicly.
|
|
||||||
|
|
||||||
`.gitea/workflows/release.yml` is the mechanism that *would* publish a
|
`.gitea/workflows/build.yml` builds, tests, and uploads CI-internal build
|
||||||
release, but it does not run automatically: it is gated on someone pushing a
|
artifacts on every push. `.gitea/workflows/release.yml` packages a tagged
|
||||||
`v*` tag, which is the actual sign-off gate in practice — don't push one
|
build (`v*`) into a **draft** Gitea Release — draft because nobody has run
|
||||||
until the owner has actually signed off on C1. When it does run, it packages
|
this in the OBS GUI yet (see below), not because of anything else; a human
|
||||||
each platform's `build/package/` (or macOS's bundle output, once that lands)
|
still needs to open it and click Publish.
|
||||||
into a zip and creates a **draft** Gitea Release, whose generated release
|
|
||||||
notes lead with the same C1 reminder as this section, so whoever opens the
|
|
||||||
draft to publish it sees the open question again before doing so. Building
|
|
||||||
that mechanism is not the same as clearing C1 — it still requires the same
|
|
||||||
owner sign-off before a tag gets pushed.)
|
|
||||||
|
|
||||||
The separate license-compatibility question — this repository's own top-level
|
|
||||||
`LICENSE` was GPLv2 while the vendored LiveKit binaries are Apache-2.0, which
|
|
||||||
are incompatible — is **resolved**: the project owner has relicensed this
|
|
||||||
project's own first-party code to Apache-2.0, matching LiveKit. Everything in
|
|
||||||
this repo is now Apache-2.0, so there is no remaining GPL/Apache
|
|
||||||
incompatibility.
|
|
||||||
|
|
||||||
The plugin is **functionally complete on Linux and verified end to end there**
|
The plugin is **functionally complete on Linux and verified end to end there**
|
||||||
(module loads into real libobs, connects to a real LiveKit server through the
|
(module loads into real libobs, connects to a real LiveKit server through the
|
||||||
|
|||||||
Vendored
-63
@@ -10,66 +10,3 @@ module — so the SDK's licence and notice files ship with it.
|
|||||||
by `obs-adapter/CMakeLists.txt` on every build, alongside this plugin's own
|
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
|
Apache-2.0 `LICENSE` (this project's own first-party code was relicensed from
|
||||||
GPL-2.0 to Apache-2.0 to match).
|
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.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user