Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Initial DRM implementation (#36)
* Add API for DRM * chore: scaffolding for key value observation * Add Fairplay folder * Some delegate methods * up * up * Internal skeleton done * Add DRM config to separate playback policy * up * Added session delegate and content key session * up * Add AVPlayerItem stuff * Add DRM Token to the AVURLAsset * Now we have done it mostly * Add signed playback initializers back * move FairplaySessionManager singleton * Update Sources/MuxPlayerSwift/PublicAPI/Extensions/AVPlayerItem+Mux.swift Co-authored-by: AJ Lauer Barinov <abarinov@mux.com> * ok really move the singleton * ok really move the singleton * Caps * api support for custom domain * More capitalization * Ignore xcshareddata and .swiftpm directores, they are user-private * Fix crash on simulator (drm wont work still) * Some logging * Making license url * Add method for requesting licenses * Add Example videos * up * track playback ids * getting there * now we are maybe possibly getting somewhere * Yes we are now getting our certs and things * we don't need this method * ok here we are so far * more stuff * e2e, doesnt work yet * comments * one more todo * more * Fixes * un-dumb a comment * More logging * L O G N O I S E * comments * respect the safe area * Some adjustments * logging change * unneeded field, nonsense comment * here we go * todo- error handling * dont crash * Rename a completion handler * Now that is cleaner * Less pointless base64 * eke a little more progress * One more step * rename slightly * testability * here we go * Custom domains mostly in * calculating license correctly * Ok thats custom domains afaik * here we go * here we go * ok * app cert url * ok custom domains * fetch app certs * And one rename * And one rename * cleaning up * comment: recapitalize FairplaySessionManager * up * one last thing * More cleanup, even more oh my god * Extract FairPlaySessionManager into a protocol --------- Co-authored-by: AJ Lauer Barinov <abarinov@mux.com> maint: Add Unit Tests for FairPlaySessionManager + good DRM errors + small testability changes (#40) * Ok here we go * different URLSessions * Fairplay -> FairPlay * move helpers out of the protocol * root domain testable * file for fpssm tests * warnings * there we go. one test * Rename FairPlaySessionManagerImpl to DefaultFPSMangaer * Ok that's the trivial tests * do the URLProtcol thing * Mock URLSession * Test success case for requestLicense * Errors * Error * ok there's license almost done * some tests * Tests added * So far so good * now throw the right errors * Added tests, need to update license error returns * Ok now that's some good error handling * Finished Cert and license tests * test app cert request * no more warnings * Ok removed TempError * cleanup a little * little note * Cleanup more * Oops forgot ckc request headers * refactor: redirect singleton calls to injected dependencies refactor: place AVContentKeySession behind a protocol build: fix build issues and tests test setup fix test inject correctly remove empty extension and avoid docc style comments for internal methods remove optionals * Rename abbreviated identifiers and split apart protocols * Remove test session delegate * turns out we do not need this * refactor: minimize implicit singleton calls * test: validate DRM registration when drm token provided * Non-public API, use extension to initialize URL * avoid tripping up docc for internal extensions * cleaner test * route calls to one chokepoint for simplicity * We can use generics instead I think * add a few comments * some comments * some comments * Need to set ContentKeyDelegate * Tests for ContentKeySessionDelegate + Testability Tweaks (#44) * Extract AVContentKeyRequest protocol * remove ContentKeyDelegate methods we're not using * Hook in KeyRequest * record some mocks * ok this is what we can do * here is something * Something more * now we are somewhere * lol * setting up * now we have something goin * errors * there we go * tests * more error * more tests * Content key path * happy path * more * Now that works * now we are somewhere * PR Comment: back to one SessionManager * PR Comments: back to SessionMangaer * And the tests * PR comments: make some stuff optional * nit --------- Co-authored-by: AJ Lauer Barinov <abarinov@mux.com> Remove region-check for staging Beta notice for DRM chore: merge v1.0.0 changes (#46) * feat: expose API for configuring existing player view controllers (#41) * feat: expose API for configuring existing player view controllers to match what is provided for AVPlayerLayer * docs: fixup grammar * fix: remove rendition order ascending (#43) * docs: fixups (#42) * Fix up AVPlayerLayer too * docs: typos * docs: monitoring options improvements * feat: HLS proxy server and URLCache integration (#24) * fix: expose initializers (#26) * feat: reverse proxy server * test: add additional ui for testing * use URLCache built-in as storage * chore: add basic ABR observation * chore: extract manifest processing to separate class, log cache size and segment size * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27) * test: account for percent encoding when checking URLs in query params --------- Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com> * chore: emit SDK diagnostics into unified logging system (#30) * fix: Add basic cmaf support. (#31) * fix: invert API for the smart cache (#32) * fix: add extra percent encoding to avoid origin url truncation (#37) * fix: add extra percent encoding to avoid origin url truncation * fix tests * fix: cache error fallback (#38) * build: update Data SDK * [NFC] reverse proxy cleanup * use Foundation APIs to extract origin URL query value * Squashed commit of the following: commit d83a9aca216c77ea8997bd6111165c6cf5019e4e Author: AJ Lauer Barinov <abarinov@mux.com> Date: Mon May 6 19:28:48 2024 -0700 fix customer data passthrough to data commit 8048f53fde6f32552835e159a46f641b55b161cb Author: AJ Lauer Barinov <abarinov@mux.com> Date: Mon May 6 19:28:27 2024 -0700 fix asc commit 4e673dec1858d0b8f08160abfed0873370da0396 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Mon May 6 19:28:15 2024 -0700 experiments commit cff3c873a33182755eff6326bdfa1250a4b0b191 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Fri May 3 14:41:32 2024 -0700 configurable playback modifiers when testing cache commit 2e3d21e Author: AJ Lauer Barinov <abarinov@mux.com> Date: Fri May 3 13:42:44 2024 -0700 configrable playback modifiers in example commit e013cc3 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Thu May 2 14:02:09 2024 -0700 fix: cache error fallback (#38) * build: update Data SDK * [NFC] reverse proxy cleanup * use Foundation APIs to extract origin URL query value commit a642a87 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Fri Apr 26 12:19:43 2024 -0700 fix: add extra percent encoding to avoid origin url truncation (#37) * fix: add extra percent encoding to avoid origin url truncation * fix tests commit 47cfaf7 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Fri Feb 23 16:24:39 2024 -0800 fix: invert API for the smart cache (#32) commit efdeee0 Author: Christian Pillsbury <cjpillsbury@gmail.com> Date: Fri Feb 16 08:50:51 2024 -0800 fix: Add basic cmaf support. (#31) commit f03a419 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Tue Feb 13 14:45:59 2024 -0800 chore: emit SDK diagnostics into unified logging system (#30) commit 4d56d11 Author: AJ Lauer Barinov <abarinov@mux.com> Date: Tue Feb 13 11:54:41 2024 -0800 feat: HLS proxy server and URLCache integration (#24) * fix: expose initializers (#26) * feat: reverse proxy server * test: add additional ui for testing * use URLCache built-in as storage * chore: add basic ABR observation * chore: extract manifest processing to separate class, log cache size and segment size * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27) * test: account for percent encoding when checking URLs in query params --------- Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com> * chore: example cleanup * chore: update version * chore: remove debug view * ci: add documentation generation scripts * remove debug view controller * feat: gate smart cache to single rendition playlists * docs: release instructions * docs: fixup single rendition enum descriptions * docs: add the actual release steps * build: update to AVPlayer Data SDK with privacy manifest * start-up reverse proxy only when required include additional examples * SingleResolutionTier -> SingleRenditionResolutionTier * Update installation version in README * remove readme callout and create consolidated script for docs regeneration * fix example * fix capitalization * disable diagnostics logging when in release mode * Separate initialization method for single renditions To help with example in guide. A separate init method rather than a default parameter helps with discoverability of the enableSmartCache option * test: improve tests * chore: expose environment variable accessors * docs: add DRM example scaffolding * add TODO * restart player when example menu options change --------- Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com> fix: avoid setting empty custom domain in example (#47) fix: initialize player item only once (#48) chore: content key internal improvements (#49) * additional environment variables * chore: add a content key logger * refactor: centralize URL construction inputs * refactor: simplify URL construction logic add recovery for when license or application certificate endpoint URLs fail to be constructed * fix: silent exception when deserializing empty response * chore: use logger in content key session delegate and some minor syntactic clean-up * chore: emit failure to find playback ID in SKD log in the caller chore: enable background mode picture in picture playback in the example (#50) chore: synchronize project/drm with main (#51) * feat: expose API for configuring existing player view controllers (#41) * feat: expose API for configuring existing player view controllers to match what is provided for AVPlayerLayer * docs: fixup grammar * fix: remove rendition order ascending (#43) * docs: fixups (#42) * Fix up AVPlayerLayer too * docs: typos * docs: monitoring options improvements * v1.0.0 (#45) * feat: HLS proxy server and URLCache integration (#24) * test: add additional ui for testing * use URLCache built-in as storage * chore: add basic ABR observation * chore: extract manifest processing to separate class, log cache size and segment size * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27) * test: account for percent encoding when checking URLs in query params --------- Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com> * chore: emit SDK diagnostics into unified logging system (#30) * fix: Add basic cmaf support. (#31) * fix: invert API for the smart cache (#32) * fix: add extra percent encoding to avoid origin url truncation (#37) * fix: cache error fallback (#38) * build: update Data SDK
- Loading branch information