Skip to content

Commit

Permalink
chore: merge v1.0.0 changes (#46)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
andrewjl-mux and cjpillsbury authored May 23, 2024
1 parent d91efaf commit 2545407
Show file tree
Hide file tree
Showing 31 changed files with 2,926 additions and 111 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@
objects = {

/* Begin PBXBuildFile section */
190579AE2BEDC90E00A697B8 /* DRMExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 190579AD2BEDC90E00A697B8 /* DRMExampleViewController.swift */; };
193228BB2ACF6AC700966FE1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228BA2ACF6AC700966FE1 /* AppDelegate.swift */; };
193228BD2ACF6AC700966FE1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228BC2ACF6AC700966FE1 /* SceneDelegate.swift */; };
193228BF2ACF6AC700966FE1 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228BE2ACF6AC700966FE1 /* MainViewController.swift */; };
193228C22ACF6AC700966FE1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 193228C02ACF6AC700966FE1 /* Main.storyboard */; };
193228C42ACF6AC800966FE1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 193228C32ACF6AC800966FE1 /* Assets.xcassets */; };
193228C72ACF6AC800966FE1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 193228C52ACF6AC800966FE1 /* LaunchScreen.storyboard */; };
193228D22ACF6AC900966FE1 /* MuxPlayerSwiftExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228D12ACF6AC900966FE1 /* MuxPlayerSwiftExampleTests.swift */; };
193228DC2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228DB2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITests.swift */; };
193228DE2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193228DD2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITestsLaunchTests.swift */; };
193228EC2ACF6B3400966FE1 /* MuxPlayerSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 193228EB2ACF6B3400966FE1 /* MuxPlayerSwift */; };
1966C5302BEB4740005486D5 /* ProcessInfo+EnvironmentVariables.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1966C52F2BEB4740005486D5 /* ProcessInfo+EnvironmentVariables.swift */; };
19DD16AF2BEC010400F4DF4F /* SinglePlayerExampleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DD16AE2BEC010400F4DF4F /* SinglePlayerExampleController.swift */; };
19DD16B12BEC028C00F4DF4F /* SmartCacheExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DD16B02BEC028C00F4DF4F /* SmartCacheExampleViewController.swift */; };
19DD16B32BEC048300F4DF4F /* SinglePlayerLayerExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DD16B22BEC048300F4DF4F /* SinglePlayerLayerExampleViewController.swift */; };
358572022BD9FB700098C3F6 /* DRMExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 358572012BD9FB700098C3F6 /* DRMExamples.swift */; };
/* End PBXBuildFile section */

Expand All @@ -38,10 +42,10 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
190579AD2BEDC90E00A697B8 /* DRMExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DRMExampleViewController.swift; sourceTree = "<group>"; };
193228B72ACF6AC700966FE1 /* MuxPlayerSwiftExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MuxPlayerSwiftExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
193228BA2ACF6AC700966FE1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
193228BC2ACF6AC700966FE1 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
193228BE2ACF6AC700966FE1 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
193228C12ACF6AC700966FE1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
193228C32ACF6AC800966FE1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
193228C62ACF6AC800966FE1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
Expand All @@ -51,6 +55,10 @@
193228D72ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MuxPlayerSwiftExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
193228DB2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MuxPlayerSwiftExampleUITests.swift; sourceTree = "<group>"; };
193228DD2ACF6AC900966FE1 /* MuxPlayerSwiftExampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MuxPlayerSwiftExampleUITestsLaunchTests.swift; sourceTree = "<group>"; };
1966C52F2BEB4740005486D5 /* ProcessInfo+EnvironmentVariables.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProcessInfo+EnvironmentVariables.swift"; sourceTree = "<group>"; };
19DD16AE2BEC010400F4DF4F /* SinglePlayerExampleController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SinglePlayerExampleController.swift; sourceTree = "<group>"; };
19DD16B02BEC028C00F4DF4F /* SmartCacheExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartCacheExampleViewController.swift; sourceTree = "<group>"; };
19DD16B22BEC048300F4DF4F /* SinglePlayerLayerExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SinglePlayerLayerExampleViewController.swift; sourceTree = "<group>"; };
358572012BD9FB700098C3F6 /* DRMExamples.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DRMExamples.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

Expand Down Expand Up @@ -105,12 +113,16 @@
children = (
193228BA2ACF6AC700966FE1 /* AppDelegate.swift */,
193228BC2ACF6AC700966FE1 /* SceneDelegate.swift */,
193228BE2ACF6AC700966FE1 /* MainViewController.swift */,
19DD16AE2BEC010400F4DF4F /* SinglePlayerExampleController.swift */,
19DD16B02BEC028C00F4DF4F /* SmartCacheExampleViewController.swift */,
19DD16B22BEC048300F4DF4F /* SinglePlayerLayerExampleViewController.swift */,
190579AD2BEDC90E00A697B8 /* DRMExampleViewController.swift */,
193228C02ACF6AC700966FE1 /* Main.storyboard */,
193228C32ACF6AC800966FE1 /* Assets.xcassets */,
193228C52ACF6AC800966FE1 /* LaunchScreen.storyboard */,
193228C82ACF6AC800966FE1 /* Info.plist */,
358572012BD9FB700098C3F6 /* DRMExamples.swift */,
1966C52F2BEB4740005486D5 /* ProcessInfo+EnvironmentVariables.swift */,
);
path = MuxPlayerSwiftExample;
sourceTree = "<group>";
Expand Down Expand Up @@ -270,9 +282,13 @@
buildActionMask = 2147483647;
files = (
358572022BD9FB700098C3F6 /* DRMExamples.swift in Sources */,
193228BF2ACF6AC700966FE1 /* MainViewController.swift in Sources */,
19DD16B32BEC048300F4DF4F /* SinglePlayerLayerExampleViewController.swift in Sources */,
193228BB2ACF6AC700966FE1 /* AppDelegate.swift in Sources */,
19DD16B12BEC028C00F4DF4F /* SmartCacheExampleViewController.swift in Sources */,
19DD16AF2BEC010400F4DF4F /* SinglePlayerExampleController.swift in Sources */,
1966C5302BEB4740005486D5 /* ProcessInfo+EnvironmentVariables.swift in Sources */,
193228BD2ACF6AC700966FE1 /* SceneDelegate.swift in Sources */,
190579AE2BEDC90E00A697B8 /* DRMExampleViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
{
"originHash" : "dc98da4f24976725085eec4af9a1756cdf986007b8fbabe8e86ce304ee2c6169",
"pins" : [
{
"identity" : "gcdwebserver",
"kind" : "remoteSourceControl",
"location" : "https://github.com/yene/GCDWebServer",
"state" : {
"revision" : "c2f837b30038ef716b77225f40cc8d104b6ff645",
"version" : "3.5.7"
}
},
{
"identity" : "mux-stats-sdk-avplayer",
"kind" : "remoteSourceControl",
"location" : "https://github.com/muxinc/mux-stats-sdk-avplayer",
"state" : {
"revision" : "0502d923df4100ffd433320b932952883136665c",
"version" : "3.4.2"
"revision" : "ddac23a67cbde6e294937a9d6ed54d71ff80e213",
"version" : "3.6.1"
}
},
{
"identity" : "stats-sdk-objc",
"kind" : "remoteSourceControl",
"location" : "https://github.com/muxinc/stats-sdk-objc.git",
"state" : {
"revision" : "982feb93c4601684b5e3eef9ad1a036e3ec117c7",
"version" : "4.6.0"
"revision" : "d72b1d40ae9f568d2c6be890c48a17b1ff11c9af",
"version" : "4.7.1"
}
}
],
"version" : 2
"version" : 3
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "193228B62ACF6AC700966FE1"
BuildableName = "MuxPlayerSwiftExample.app"
BlueprintName = "MuxPlayerSwiftExample"
ReferencedContainer = "container:MuxPlayerSwiftExample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "193228B62ACF6AC700966FE1"
BuildableName = "MuxPlayerSwiftExample.app"
BlueprintName = "MuxPlayerSwiftExample"
ReferencedContainer = "container:MuxPlayerSwiftExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "193228B62ACF6AC700966FE1"
BuildableName = "MuxPlayerSwiftExample.app"
BlueprintName = "MuxPlayerSwiftExample"
ReferencedContainer = "container:MuxPlayerSwiftExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Loading

0 comments on commit 2545407

Please sign in to comment.