51 Commits

Author SHA1 Message Date
Freddy Kellison-Linn 56bef1c115 Release 1.3.0 2018-07-18 15:39:05 -04:00
Frederick Kellison-Linn 56946a6509 Merge pull request #37 from vimeo/feature/VIM-6303-closed-captions
Merge feature work for Closed Captions into develop
2018-07-18 15:13:30 -04:00
Frederick Kellison-Linn 0b9d4e5096 Merge pull request #36 from vimeo/VIM-6350-select-cc-option
VIM-6350: Turn on/off CC when user taps appropriate item in list
2018-07-11 13:05:24 -04:00
Freddy Kellison-Linn 3a53693935 Add explanatory comment for SDH 2018-07-11 11:58:27 -04:00
Freddy Kellison-Linn aee3f617d6 Use new matches(_:) method in select(_:) 2018-07-10 15:57:25 -04:00
Freddy Kellison-Linn 41f59b1d45 Fixup style 2018-07-10 15:51:46 -04:00
Freddy Kellison-Linn 978efdb667 Change == operator to matches(_:) method 2018-07-10 15:08:57 -04:00
Freddy Kellison-Linn d9f3f12bb8 Make TextTrackMetadata == global 2018-07-10 14:38:29 -04:00
Freddy Kellison-Linn aecc7485a5 Improve TextTrackMetadata and TextTrackCapable APIs 2018-07-10 14:09:41 -04:00
Freddy Kellison-Linn 09a1d6a051 Remove deprecated API in newer versions 2018-07-10 12:27:02 -04:00
Freddy Kellison-Linn 8280e5e801 Add selectedTrack requirement to TextTrackCapable 2018-07-09 14:40:39 -04:00
Frederick Kellison-Linn f2d24ffb2e Merge pull request #35 from vimeo/VIM-6353-regularplayer-conform-texttrackcapable
VIM-6353: Make RegularPlayer conform to `TextTrackCapable`
2018-07-05 10:45:37 -04:00
Freddy Kellison-Linn b1b690d6ad Use Array.first instead of for-in loop 2018-07-05 10:15:48 -04:00
Freddy Kellison-Linn fa9fa737d5 Move TextTrackCapable conformance to extension 2018-07-03 10:22:00 -04:00
Freddy Kellison-Linn fae36bc646 Make RegularPlayer conform to TextTrackCapable and AVMediaSelectionOption to TextTrackMetadata 2018-07-02 15:55:56 -04:00
Frederick Kellison-Linn 055c6b727a Merge pull request #34 from vimeo/VIM-6347-texttrack-player-protocols
Add TextTrackMetadata and TextTrackCapable protocols to Player.swift
2018-07-02 15:53:08 -04:00
Freddy Kellison-Linn 3e945f1639 Add period 2018-07-02 15:44:15 -04:00
Freddy Kellison-Linn bc804d729a Add TextTrackMetadata and TextTrackCapable protocols to Player.swift 2018-06-28 15:47:24 -04:00
Mike Westendorf 7222d585e5 Merge pull request #33 from vimeo/vim-xxx-updates-cocoapods
VIM-6140: Update CocoaPods to version 1.5.2
2018-06-04 13:52:42 -04:00
Mike Westendorf 365b835447 updates cocoapods to version 1.5.2, updates git ignore file 2018-05-24 13:51:35 -04:00
Gavin King 1d5a54e427 Merge pull request #23 from vimeo/VIM-XXX-swift-version
Update .swift-version
2017-12-07 16:24:31 -05:00
Gavin King 9e72e81f44 Update .swift-version 2017-12-07 16:19:10 -05:00
Gavin King 0be337a29f Merge pull request #21 from vimeo/AF-210-swift-4
AF-210: Swift 4
2017-12-07 16:00:55 -05:00
Gavin King 15933a66a3 fastlane 2017-11-29 17:12:08 -05:00
Gavin King 57533faa36 example version increment 2017-11-29 17:09:41 -05:00
Gavin King 5067393d78 inference 2017-11-29 17:08:35 -05:00
Gavin King 0245cf6f8b version increment 2017-11-29 16:55:38 -05:00
Gavin King c0e553dcbf @objc 2017-11-29 16:54:40 -05:00
Gavin King c15d31d6af migration and FillModeCapable changes 2017-11-29 16:18:45 -05:00
Gavin King 3981702cfe minimum requirements 2017-10-09 11:14:18 -04:00
Gavin King c057324b82 Update README.md 2017-10-06 17:04:18 -04:00
Gavin King e847f42dc0 Merge pull request #16 from vimeo/develop
Merging develop into master for 1.1.0
2017-10-06 16:34:45 -04:00
Gavin King e59883dbce Merge pull request #15 from vimeo/1.1.0-release-preparation
1.1.0 Release Preparation
2017-10-06 16:32:19 -04:00
Gavin King ef64a4b34d Merge remote-tracking branch 'origin/develop' into 1.1.0-release-preparation 2017-10-06 16:26:56 -04:00
Mike Westendorf 5933b16e12 Merge pull request #14 from vimeo/af-xxx_switch_to_xcode9
switch to using Xcode 9
2017-10-06 16:25:04 -04:00
Gavin King 14b577ca30 Merge remote-tracking branch 'origin/develop' into 1.1.0-release-preparation 2017-10-06 16:19:22 -04:00
Gavin King 22f6f503ae version and readme updates 2017-10-06 16:16:12 -04:00
Mike Westendorf a63028d084 Change xcode requirement in fastlane to Xcode 9 2017-10-06 14:56:35 -04:00
Mike Westendorf 4f62ab889a switch to using Xcode 9 2017-10-06 14:53:39 -04:00
Mike Westendorf dc86f848bf Merge pull request #13 from vimeo/vim-xxx-update-version
Fixing the version number
2017-10-03 11:29:16 -04:00
Mike Westendorf 6e77b776a2 Fixing the version number 2017-09-22 13:07:01 -04:00
Van Le Nguyen 54be5a88b0 Remove comment 2017-08-18 16:43:37 -04:00
Van Le Nguyen 2f22e2759f Loosely seek the time 2017-08-18 16:43:37 -04:00
Van Le Nguyen 74661c8811 Update pods 2017-08-18 16:43:37 -04:00
William Hutson 2217a0dd9b Merge pull request #11 from vimeo/CI-512-cocoapods120
CI-512 Update cocoapods to 1.2.0
2017-07-25 13:04:42 -04:00
Will Hutson 522b679149 update cocoapods to 1.2.0 2017-07-18 16:59:57 -04:00
William Hutson 2b7b14a9c0 Merge pull request #10 from vimeo/CI-510-xcode832
CI-510 Xcode 8.3.2
2017-07-18 16:21:07 -04:00
Will Hutson 4366081c90 update fastlane to 2.42 2017-07-18 13:29:49 -04:00
William Hutson a9cf2ddcce Ensure Fastlane is using Xcode 8.3.2 2017-07-18 12:44:30 -04:00
William Hutson a6e73f608d Update circleci to use Xcode 8.3.2 2017-07-18 12:43:01 -04:00
Mike Westendorf 6cb00472c1 Merge pull request #8 from vimeo/release-1.0.0_reintegration
Release 1.0.0 reintegration
2017-05-30 16:33:54 -04:00
14 changed files with 283 additions and 175 deletions
+1
View File
@@ -21,6 +21,7 @@ xcuserdata/
*.moved-aside
*.xccheckout
*.xcscmblueprint
.DS_Store
## Obj-C/Swift specific
*.hmap
+1 -1
View File
@@ -1 +1 @@
2.3
4.0
+21 -56
View File
@@ -174,7 +174,6 @@
607FACCD1AFB9204008FA782 /* Frameworks */,
607FACCE1AFB9204008FA782 /* Resources */,
AEEB7FDEAB18BB5B2C3B7E51 /* [CP] Embed Pods Frameworks */,
321F705B84CEA2E392A6B199 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -193,8 +192,6 @@
607FACE11AFB9204008FA782 /* Sources */,
607FACE21AFB9204008FA782 /* Frameworks */,
607FACE31AFB9204008FA782 /* Resources */,
25C5F87D98E09CBD3E2CA814 /* [CP] Embed Pods Frameworks */,
3C28040621F8BDAC7AF4AA8F /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -219,12 +216,12 @@
607FACCF1AFB9204008FA782 = {
CreatedOnToolsVersion = 6.3.1;
DevelopmentTeam = 35R365FS4Q;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
};
607FACE41AFB9204008FA782 = {
CreatedOnToolsVersion = 6.3.1;
DevelopmentTeam = 35R365FS4Q;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
TestTargetID = 607FACCF1AFB9204008FA782;
};
};
@@ -270,64 +267,22 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
25C5F87D98E09CBD3E2CA814 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
321F705B84CEA2E392A6B199 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example-resources.sh\"\n";
showEnvVarsInLog = 0;
};
39DBB93200760D1BB486C4CC /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-PlayerKit_Example-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
3C28040621F8BDAC7AF4AA8F /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Tests/Pods-PlayerKit_Tests-resources.sh\"\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
AEEB7FDEAB18BB5B2C3B7E51 /* [CP] Embed Pods Frameworks */ = {
@@ -336,9 +291,12 @@
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-PlayerKit_Example/Pods-PlayerKit_Example-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/PlayerKit/PlayerKit.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PlayerKit.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -351,13 +309,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-PlayerKit_Tests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -503,7 +464,8 @@
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@@ -520,7 +482,8 @@
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
@@ -539,7 +502,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@@ -553,7 +517,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -40,6 +40,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@@ -69,6 +70,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
+4 -4
View File
@@ -1,16 +1,16 @@
PODS:
- PlayerKit (0.1.0)
- PlayerKit (1.2.0)
DEPENDENCIES:
- PlayerKit (from `../`)
EXTERNAL SOURCES:
PlayerKit:
:path: ../
:path: "../"
SPEC CHECKSUMS:
PlayerKit: 4702100274e44e115c28419d8c21c22f13052856
PlayerKit: ff4e4cd4c216d60ebcfccf3a68772d6299373e5a
PODFILE CHECKSUM: 071d8819500a822237123321021901352f4d91a4
COCOAPODS: 1.1.1
COCOAPODS: 1.5.2
+2 -2
View File
@@ -1,6 +1,6 @@
source 'https://rubygems.org'
gem 'fastlane', '2.19.3'
gem 'cocoapods', '1.1.1'
gem 'fastlane', '2.42.0'
gem 'cocoapods', '1.5.2'
gem 'danger', '4.0.4'
gem 'xcode-install', '2.1.0'
gem 'xcpretty-json-formatter', '0.1.0'
+96 -89
View File
@@ -1,58 +1,62 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (2.3.5)
activesupport (4.2.8)
CFPropertyList (2.3.6)
activesupport (4.2.10)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
atomos (0.1.2)
babosa (1.0.2)
claide (1.0.1)
claide (1.0.2)
claide-plugins (0.9.2)
cork
nap
open4 (~> 1.3)
cocoapods (1.1.1)
cocoapods (1.5.2)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.1, < 2.0)
cocoapods-core (= 1.1.1)
cocoapods-deintegrate (>= 1.0.1, < 2.0)
cocoapods-downloader (>= 1.1.2, < 2.0)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.5.2)
cocoapods-deintegrate (>= 1.0.2, < 2.0)
cocoapods-downloader (>= 1.2.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-stats (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.1.1, < 2.0)
cocoapods-trunk (>= 1.3.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored (~> 1.2)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (~> 2.0.1)
gh_inspector (~> 1.0)
molinillo (~> 0.5.1)
molinillo (~> 0.6.5)
nap (~> 1.0)
xcodeproj (>= 1.3.3, < 2.0)
cocoapods-core (1.1.1)
activesupport (>= 4.0.2, < 5)
ruby-macho (~> 1.1)
xcodeproj (>= 1.5.7, < 2.0)
cocoapods-core (1.5.2)
activesupport (>= 4.0.2, < 6)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-deintegrate (1.0.2)
cocoapods-downloader (1.2.0)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.1.2)
cocoapods-trunk (1.3.0)
nap (>= 0.8, < 2.0)
netrc (= 0.7.8)
netrc (~> 0.11)
cocoapods-try (1.1.0)
colored (1.2)
colored2 (3.1.2)
colorize (0.8.1)
commander (4.4.3)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
cork (0.2.0)
colored (~> 1.2)
concurrent-ruby (1.0.5)
cork (0.3.0)
colored2 (~> 3.1)
danger (4.0.4)
claide (~> 1.0)
claide-plugins (>= 0.9.2)
@@ -68,28 +72,30 @@ GEM
danger (> 2.0)
danger-xcode_summary (0.1.0)
danger-plugin-api (~> 1.0)
domain_name (0.5.20170223)
declarative (0.0.10)
declarative-option (0.1.0)
domain_name (0.5.20180417)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.2.0)
dotenv (2.4.0)
escape (0.0.4)
excon (0.55.0)
faraday (0.11.0)
excon (0.62.0)
faraday (0.15.2)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday-http-cache (1.3.1)
faraday (~> 0.8)
faraday_middleware (0.11.0.1)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.0)
fastlane (2.19.3)
activesupport (< 5)
fastimage (2.1.3)
fastlane (2.42.0)
CFPropertyList (>= 2.3, < 3.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
bundler (>= 1.12.0, < 2.0.0)
colored
commander (>= 4.4.0, < 5.0.0)
commander-fastlane (>= 4.4.0, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0)
excon (>= 0.45.0, < 1.0.0)
faraday (~> 0.9)
@@ -97,7 +103,7 @@ GEM
faraday_middleware (~> 0.9)
fastimage (>= 1.6)
gh_inspector (>= 1.0.1, < 2.0.0)
google-api-client (~> 0.9.2)
google-api-client (>= 0.12.0, < 0.13.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
mini_magick (~> 4.5.1)
@@ -112,7 +118,7 @@ GEM
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (~> 0.5.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 0.20, < 2.0.0)
xcodeproj (>= 1.4.4, < 2.0.0)
xcpretty (>= 0.2.4, < 1.0.0)
xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-pretty_junit (0.1.1)
@@ -121,116 +127,117 @@ GEM
terminal-table
fourflusher (2.0.1)
fuzzy_match (2.0.4)
gh_inspector (1.0.3)
git (1.3.0)
google-api-client (0.9.28)
addressable (~> 2.3)
gh_inspector (1.1.3)
git (1.4.0)
google-api-client (0.12.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.5)
httpclient (~> 2.7)
hurley (~> 0.1)
memoist (~> 0.11)
mime-types (>= 1.6)
representable (~> 2.3.0)
retriable (~> 2.0)
googleauth (0.5.1)
faraday (~> 0.9)
jwt (~> 1.4)
httpclient (>= 2.8.1, < 3.0)
mime-types (~> 3.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
googleauth (0.6.2)
faraday (~> 0.12)
jwt (>= 1.4, < 3.0)
logging (~> 2.0)
memoist (~> 0.12)
multi_json (~> 1.11)
os (~> 0.9)
signet (~> 0.7)
highline (1.7.8)
highline (1.7.10)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
hurley (0.2)
i18n (0.8.1)
json (2.0.3)
jwt (1.5.6)
kramdown (1.13.2)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
json (2.1.0)
jwt (2.1.0)
kramdown (1.16.2)
little-plugger (1.1.4)
logging (2.2.0)
logging (2.2.2)
little-plugger (~> 1.1)
multi_json (~> 1.10)
memoist (0.15.0)
memoist (0.16.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_magick (4.5.1)
mini_portile (0.5.3)
minitest (5.10.1)
molinillo (0.5.7)
multi_json (1.12.1)
minitest (5.11.3)
molinillo (0.6.5)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.3)
nanaimo (0.2.5)
nap (1.1.0)
netrc (0.7.8)
netrc (0.11.0)
nokogiri (1.6.0)
mini_portile (~> 0.5.0)
octokit (4.6.2)
octokit (4.9.0)
sawyer (~> 0.8.0, >= 0.5.3)
open4 (1.3.4)
os (0.9.6)
plist (3.2.0)
public_suffix (2.0.5)
representable (2.3.0)
uber (~> 0.0.7)
retriable (2.1.0)
rouge (1.11.1)
plist (3.4.0)
public_suffix (3.0.2)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.1)
rouge (2.0.7)
ruby-macho (1.1.0)
rubyzip (1.2.1)
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0)
security (0.1.3)
signet (0.7.3)
signet (0.8.1)
addressable (~> 2.3)
faraday (~> 0.9)
jwt (~> 1.5)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
slack-notifier (1.5.1)
terminal-notifier (1.7.1)
terminal-table (1.7.3)
unicode-display_width (~> 1.1.1)
terminal-notifier (1.8.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
tty-screen (0.5.0)
tzinfo (1.2.2)
tty-screen (0.5.1)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uber (0.0.15)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unicode-display_width (1.1.3)
unf_ext (0.0.7.5)
unicode-display_width (1.3.2)
word_wrap (1.0.0)
xcode-install (2.1.0)
claide (>= 0.9.1, < 1.1.0)
fastlane (>= 2.1.1, < 3.0.0)
xcodeproj (1.4.2)
CFPropertyList (~> 2.3.3)
activesupport (>= 3)
claide (>= 1.0.1, < 2.0)
colored (~> 1.2)
nanaimo (~> 0.2.3)
xcpretty (0.2.4)
rouge (~> 1.8)
xcodeproj (1.5.9)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.2)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.5)
xcpretty (0.2.8)
rouge (~> 2.0.7)
xcpretty-json-formatter (0.1.0)
xcpretty (~> 0.2, >= 0.0.7)
xcpretty-travis-formatter (0.0.4)
xcpretty-travis-formatter (1.0.0)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (= 1.1.1)
cocoapods (= 1.5.2)
danger (= 4.0.4)
danger-xcode_summary (= 0.1.0)
fastlane (= 2.19.3)
fastlane (= 2.42.0)
fastlane-plugin-pretty_junit
nokogiri (= 1.6.0)
xcode-install (= 2.1.0)
xcpretty-json-formatter (= 0.1.0)
BUNDLED WITH
1.14.5
1.15.3
+2 -2
View File
@@ -1,10 +1,10 @@
Pod::Spec.new do |s|
s.name = 'PlayerKit'
s.version = '0.1.0'
s.version = '1.3.0'
s.summary = 'A modular video player system.'
s.description = <<-DESC
PlayerKit is a modular video player system. It provides a common interface for players and various players that implement it.
PlayerKit is a modular video player system for iOS and tvOS.
DESC
s.homepage = 'https://github.com/vimeo/PlayerKit'
+39 -4
View File
@@ -37,9 +37,9 @@ public enum PlayerError: Int
/// Represents the current state of the player
///
/// - Loading: The player is loading or buffering
/// - Ready: The player is ready for playback
/// - Failed: The player has failed
/// - loading: The player is loading or buffering
/// - ready: The player is ready for playback
/// - failed: The player has failed
@objc public enum PlayerState: Int
{
case loading
@@ -110,7 +110,42 @@ public enum PlayerError: Int
/// A player that adopts the ProvidesView protocol is capable of setting the video fill mode.
@objc public protocol FillModeCapable
{
var fillMode: String { get set }
var fillMode: FillMode { get set }
}
@objc public enum FillMode: Int
{
case fit
case fill
}
/// The metadata that should be attached to any type of text track.
@objc public protocol TextTrackMetadata
{
var displayName: String { get }
var locale: Locale? { get }
// Indicates that the text track represents subtitles for the def and hard of hearing (SDH).
var isSDHTrack: Bool { get }
@objc(displayNameWithLocale:) func displayName(with locale: Locale) -> String
}
extension TextTrackMetadata
{
public func matches(_ other: TextTrackMetadata) -> Bool
{
return (self.locale == other.locale && self.isSDHTrack == other.isSDHTrack)
}
}
/// A player that conforms to the TextTrackCapable protocol is capable of advertising and displaying text tracks.
@objc public protocol TextTrackCapable
{
var selectedTextTrack: TextTrackMetadata? { get }
var availableTextTracks: [TextTrackMetadata] { get }
func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void)
func select(_ textTrack: TextTrackMetadata?)
}
#if os(iOS)
+96 -6
View File
@@ -11,8 +11,16 @@ import Foundation
import AVFoundation
import AVKit
extension AVMediaSelectionOption: TextTrackMetadata
{
public var isSDHTrack: Bool
{
return self.hasMediaCharacteristic(.describesMusicAndSoundForAccessibility) && self.hasMediaCharacteristic(.transcribesSpokenDialogForAccessibility)
}
}
/// A RegularPlayer is used to play regular videos.
open class RegularPlayer: NSObject, Player, ProvidesView
@objc open class RegularPlayer: NSObject, Player, ProvidesView
{
public struct Constants
{
@@ -28,7 +36,7 @@ open class RegularPlayer: NSObject, Player, ProvidesView
/// Sets an AVAsset on the player.
///
/// - Parameter asset: The AVAsset
open func set(_ asset: AVAsset)
@objc open func set(_ asset: AVAsset)
{
// Prepare the old item for removal
@@ -125,7 +133,7 @@ open class RegularPlayer: NSObject, Player, ProvidesView
{
let cmTime = CMTimeMakeWithSeconds(time, Int32(NSEC_PER_SEC))
self.player.seek(to: cmTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
self.player.seek(to: cmTime)
self.time = time
}
@@ -373,15 +381,97 @@ extension RegularPlayer: VolumeCapable
extension RegularPlayer: FillModeCapable
{
public var fillMode: String
public var fillMode: FillMode
{
get
{
return (self.view.layer as! AVPlayerLayer).videoGravity
let gravity = (self.view.layer as! AVPlayerLayer).videoGravity
return gravity == .resizeAspect ? .fit : .fill
}
set
{
(self.view.layer as! AVPlayerLayer).videoGravity = newValue
let gravity: AVLayerVideoGravity
switch newValue
{
case .fit:
gravity = .resizeAspect
case .fill:
gravity = .resizeAspectFill
}
(self.view.layer as! AVPlayerLayer).videoGravity = gravity
}
}
}
extension RegularPlayer: TextTrackCapable
{
public var selectedTextTrack: TextTrackMetadata?
{
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
{
return nil
}
if #available(iOS 9.0, *)
{
return self.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group)
}
else
{
return self.player.currentItem?.selectedMediaOption(in: group)
}
}
public var availableTextTracks: [TextTrackMetadata]
{
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
{
return []
}
return group.options
}
public func fetchTextTracks(completion: @escaping ([TextTrackMetadata], TextTrackMetadata?) -> Void)
{
self.player.currentItem?.asset.loadValuesAsynchronously(forKeys: [#keyPath(AVAsset.availableMediaCharacteristicsWithMediaSelectionOptions)]) { [weak self] in
guard let strongSelf = self, let group = strongSelf.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
{
completion([], nil)
return
}
if #available(iOS 9.0, *)
{
completion(group.options, strongSelf.player.currentItem?.currentMediaSelection.selectedMediaOption(in: group))
}
else
{
completion(group.options, strongSelf.player.currentItem?.selectedMediaOption(in: group))
}
}
}
public func select(_ textTrack: TextTrackMetadata?)
{
guard let group = self.player.currentItem?.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else
{
return
}
guard let track = textTrack else
{
self.player.currentItem?.select(nil, in: group)
return
}
let option = group.options.first(where: { option in
track.matches(option)
})
self.player.currentItem?.select(option, in: group)
}
}
+8 -8
View File
@@ -1,6 +1,6 @@
# PlayerKit
[![CI Status](http://img.shields.io/travis/ghking/PlayerKit.svg?style=flat)](https://travis-ci.org/ghking/PlayerKit)
[![CI Status](http://img.shields.io/travis/ghking/PlayerKit.svg?style=flat)](https://travis-ci.org/vimeo/PlayerKit)
[![Version](https://img.shields.io/cocoapods/v/PlayerKit.svg?style=flat)](http://cocoapods.org/pods/PlayerKit)
[![License](https://img.shields.io/cocoapods/l/PlayerKit.svg?style=flat)](http://cocoapods.org/pods/PlayerKit)
[![Platform](https://img.shields.io/cocoapods/p/PlayerKit.svg?style=flat)](http://cocoapods.org/pods/PlayerKit)
@@ -13,17 +13,17 @@ Vimeo supports various types of video and playback (360 video, Chromecast, etc.)
### Goals
- Provide an interface defining a common API and delegate callback strategy that different types of players can implement
- Provide an interface defining a common API and delegate callback strategy for different types of players to implement
- Allow players to define their capabilities using protocol conformance
## Example
To run the example project, clone the repo, and run `pod install` from the Example directory first.
To run the example project, clone the repo, and run `pod install` from the Example directory.
## Requirements
## Minimum Requirements
- iOS 8.0+ / tvOS 9.0+
- Swift 2.3 (Swift 3 support coming soon)
- iOS 8.0 / tvOS 9.0
- Swift 3.2
## Installation
@@ -52,7 +52,7 @@ player.set(asset: AVURLAsset(URL: "https://example.com/video.mp4"))
player.play()
```
Optionally, an object can conform to PlayerDelegate to recieve updates from the player and perform actions such as UI updates. Check out the example project for an example of this.
Optionally, an object can conform to PlayerDelegate to receive updates from the player and perform actions such as UI updates. Check out the example project for an example of this.
```swift
player.delegate = delegate
@@ -60,7 +60,7 @@ player.delegate = delegate
### Creating New Types of Players
You can create your own new types of players by creating objects that conform to the Player protocol and call the delgate methods when appropriate.
You can create your own players by creating objects that conform to the Player protocol and call the delegate methods when appropriate.
## Author
+1 -1
View File
@@ -4,7 +4,7 @@ general:
- "PlayerKit_Example-PlayerKit-Example.log"
machine:
xcode:
version: 8.2.1
version: 9.0
dependencies:
override:
+1 -1
View File
@@ -17,7 +17,7 @@ default_platform :ios
platform :ios do
before_all do
ensure_xcode_version(version: "8.2.1")
ensure_xcode_version(version: "9.0.1")
end
desc "run tests"