FFmpeg locator (TASK 4 ship step 2) + licensing: notices, About, LGPL-shared pin

IFfmpegLocator seam that resolves ffmpeg.exe (PATH -> cache -> pinned download),
plus the licensing compliance that makes a paid GA product defensible.

NOTE FOR USERS: this change shows NO difference in the app's behavior except a
new top-bar "About" button (opens THIRD-PARTY-NOTICES.txt). It is scaffolding
for the encoder/streaming work.

- Services/Encoder/: IFfmpegLocator + FfmpegLocator. Pin is BtbN lgpl-shared
  autobuild-2026-08-09-13-03 (NOT gyan.dev/GPL or static: LGPLv2.1 §6 static
  relink material avoided by dynamic linking); extracts ffmpeg.exe + libav*.dll
  via a staging dir so a crash never leaves a partial cache
- THIRD-PARTY-NOTICES.txt: LGPL/BSD/MIT notices + source offer, copied to the
  build output, surfaced by the About button; v1 gate = bundle full license
  texts (TASK 4 requirement 9)
- ai.md "Licensing - do not violate" guardrails (never GPL/nonfree/static/latest-
  tag, never link FFmpeg in, never drop notices); TASKS.md + Services/index.md
  updated
- Tests: FfmpegLocatorTests - hermetic decision-ladder integration test + shared-
  build DLL extraction + edge cases; docs updated (78 tests passing, 0 warnings)
This commit is contained in:
2026-08-10 11:02:26 -07:00
parent 18a21010bb
commit 8c7938aca0
10 changed files with 529 additions and 6 deletions
+78
View File
@@ -0,0 +1,78 @@
ytLlive — Third-Party Notices
================================
ytLlive is a paid, closed-source product. This file lists every third-party
component the product distributes or downloads, its license, and where to get
its source, so the LGPL/BSD/MIT obligations are met. Distribution obligations
are NOT optional: they attach because this product ships or automates the
download of these components.
If this file changes, update it here AND in the app's About screen (it opens
this file). See TASKS.md (TASK 4) and ai.md ("Licensing — do not violate") for
the guardrails — the "never do" list is there on purpose.
--------------------------------------------------------------------------------
1. FFmpeg (dynamic libraries + ffmpeg.exe, LGPL v2.1+)
Copyright (c) 2000-2026 the FFmpeg developers
License: GNU Lesser General Public License v2.1 or later
Home: https://ffmpeg.org/
Source: https://git.ffmpeg.org/ffmpeg.git
Used as: the streaming encoder/RTMP subprocess. This product distributes the
UNMODIFIED binaries; it never links FFmpeg into its own code (it is
launched as a separate process fed raw frames over a pipe).
Why LGPL (not GPL): a GPL build (e.g. gyan.dev, or BtbN's "gpl" variant)
would contaminate this proprietary product. Do NOT use one.
Why "shared" (not static): LGPL v2.1 §6 requires "relinkable" materials for
statically-linked libraries. The shared build links dynamically, so
the user can replace the DLLs — compliance is this notice plus the
source offer below, with no relink material required.
Compliance supplied by this product:
- The license text: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
- The corresponding source / written offer to obtain it:
FFmpeg source https://ffmpeg.org/download.html
Exact binary https://github.com/BtbN/FFmpeg-Builds
Build tag: autobuild-2026-08-09-13-03 (variant lgpl-shared)
- The binaries are unmodified and the LGPL notices therein are intact.
2. BtbN FFmpeg-Builds (the exact binary this product downloads)
License: MIT (build scripts + repository) — the produced binaries are
covered by FFmpeg's LGPL (item 1).
Home: https://github.com/BtbN/FFmpeg-Builds
3. OpenH264 (libopenh264 — the H.264 software fallback encoder)
Copyright (c) 2010-2026 Cisco Systems, Inc. (and contributors)
License: BSD 2-Clause + Cisco's H.264 patent grant
Home: https://www.openh264.org/
Note: Cisco grants the patent license for its own H.264 implementation;
it ships inside the FFmpeg build above (LGPL obligations of item 1
apply to the library; the BSD terms apply to Cisco's code).
4. SQLite (bundled via SQLitePCLRaw's e_sqlite3 native bundle)
License: public domain (no rights reserved)
Home: https://www.sqlite.org/
5. Microsoft.Data.Sqlite (.NET data provider, statically linked into this app)
Copyright (c) .NET Foundation and contributors
License: MIT
Home: https://github.com/dotnet/efcore
6. SQLitePCLRaw (raw SQLite bindings + bundles)
Copyright (c) 2012-2026 Eric Sink and contributors
License: Apache-2.0
Home: https://github.com/ericstj/SQLitePCLRaw
7. .NET runtime / WPF / Windows SDK projections, incl.
System.Security.Cryptography.ProtectedData
Copyright (c) .NET Foundation and contributors
License: MIT
Home: https://github.com/dotnet/
--------------------------------------------------------------------------------
MISCELLANEOUS
- The full text of every license named above is available at the linked
canonical locations. The v1 (GA) release MUST additionally bundle the full
license texts alongside this file (a `licenses/` folder beside it, still
reachable from the About screen) — TASK 4 requirement 9, a release blocker.
- No warranty is expressed or implied for any third-party component.