Compare commits
54 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66d629f0e1 | |||
| c25d1cd49e | |||
| a979a07652 | |||
| eb6dbdf5a5 | |||
| 3ecf8458cf | |||
| 7a74c1e67d | |||
| e9a64fb531 | |||
| eaf4f4b492 | |||
| d42db154ca | |||
| f09240d4d0 | |||
| 91f68ff891 | |||
| 25ee3e009a | |||
| cc979b602c | |||
| a9fee87379 | |||
| 15d08fe2b4 | |||
| 37e471cf04 | |||
| e296e11ba6 | |||
| cbab5b4c7b | |||
| c00367896d | |||
| 0e68ced41a | |||
| 8162c1cb3b | |||
| ce399a8e98 | |||
| 932d66e6ba | |||
| de01806e8a | |||
| d799cbb15b | |||
| 35e0d78004 | |||
| 58ff13c70b | |||
| d6c5ab0629 | |||
| ea5b11e13c | |||
| 6ac137f9ff | |||
| 5e197fd1c5 | |||
| 0d91f5a054 | |||
| 09f58850e8 | |||
| 088d368709 | |||
| 4508acf2ed | |||
| 7ae3643508 | |||
| d6047dc471 | |||
| 3724c3000c | |||
| 38f28c9e3a | |||
| 5b3134f094 | |||
| 85efea0363 | |||
| dd8b5b9dc6 | |||
| 5775bbc2af | |||
| 0a9707d68f | |||
| c1c2f93793 | |||
| 3454df7198 | |||
| 5545e1bc43 | |||
| 367b516abd | |||
| de0957a62b | |||
| 9ce6b9092c | |||
| 7e32ee3482 | |||
| 0d188c8228 | |||
| 840d01e1b0 | |||
| 5c39ae71a7 |
@@ -0,0 +1,11 @@
|
||||
#### Issue Summary
|
||||
A brief but thorough description of the issue.
|
||||
|
||||
#### Reproduction Steps
|
||||
Detailed steps to reproduce the issue.
|
||||
|
||||
#### Expected Behavior
|
||||
What do you expect to happen as a result of the reproduction steps?
|
||||
|
||||
#### Actual Behavior
|
||||
What currently happens as a result of the reproduction steps?
|
||||
@@ -0,0 +1,12 @@
|
||||
#### Ticket
|
||||
**Required for Vimeans only**
|
||||
[TICKET_NUMBER](https://vimean.atlassian.net/browse/TICKET_NUMBER)
|
||||
|
||||
#### Ticket Summary
|
||||
A brief but thorough description of the ticket.
|
||||
|
||||
#### Implementation Summary
|
||||
A brief but thorough description of the changes put in place to address the ticket.
|
||||
|
||||
#### How to Test
|
||||
Detailed *list* of what to test and how to test it. Including all edge cases.
|
||||
+30
-12
@@ -1,4 +1,27 @@
|
||||
.DS_Store
|
||||
## Build generated
|
||||
build/
|
||||
DerivedData
|
||||
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
|
||||
## Other
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
*.xcuserstate
|
||||
*.xcscmblueprint
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
|
||||
*.xcuserstate
|
||||
|
||||
@@ -11,20 +34,15 @@ xcuserdata/
|
||||
|
||||
.DS_Store
|
||||
*.DS_Store
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
|
||||
*.xcworkspace
|
||||
!default.xcworkspace
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
*.LSOverride
|
||||
|
||||
# Cocoapods
|
||||
|
||||
Pods
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
# VIMVideoPlayer
|
||||
|
||||
`VIMVideoPlayer` is a simple wrapper around the [`AVPlayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html) and [`AVPlayerLayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer) classes.
|
||||
`VIMVideoPlayer` is a simple wrapper around the [`AVPlayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html) and [`AVPlayerLayer`](https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer) classes.
|
||||
|
||||
## Setup
|
||||
|
||||
Add the `VIMVideoPlayerView` and `VIMVideoPlayer` classes to your project.
|
||||
|
||||
Do this by including this repo as a git submodule or by using cocoapods:
|
||||
|
||||
```Ruby
|
||||
# Add this to your podfile
|
||||
target 'MyTarget' do
|
||||
pod 'VIMVideoPlayer', ‘{version_number}’
|
||||
end
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Create a new `VIMVideoPlayerView` and add it to your view hierarchy:
|
||||
@@ -41,10 +50,16 @@ Play a video:
|
||||
```Objective-c
|
||||
// Using an NSURL
|
||||
|
||||
NSURL *URL = ...;
|
||||
NSURL *URL = ...;
|
||||
[self.videoPlayerView.player setURL:URL];
|
||||
[self.videoPlayerView.player play];
|
||||
|
||||
/*
|
||||
Note: This must be a URL to an actual video resource (e.g. http://website.com/video.mp4 or .m3u8 etc.),
|
||||
It cannot be a URL to a web page (e.g. https://vimeo.com/67069182),
|
||||
See below for info on using VIMVideoPlayer to play Vimeo videos.
|
||||
*/
|
||||
|
||||
// Using an AVPlayerItem
|
||||
|
||||
AVPlayerItem *playerItem = ...;
|
||||
@@ -74,9 +89,19 @@ Optionally implement the `VIMVideoPlayerViewDelegate` protocol methods:
|
||||
@end
|
||||
```
|
||||
|
||||
See `VIMVideoPlayer.h` for additional configuration options and functionality.
|
||||
See [`VIMVideoPlayer.h`](https://github.com/vimeo/VIMVideoPlayer/blob/master/VIMVideoPlayer/VIMVideoPlayer.h) for additional configuration options.
|
||||
|
||||
See `VIMVideoPlayerViewController` for an example of how to encapsulate a `VIMVideoPlayerView` instance with playback controls (play/pause/seek/airplay etc).
|
||||
## Playing Vimeo Videos
|
||||
|
||||
[Vimeo Pro](https://vimeo.com/pro) members can access playback URLs for Vimeo videos using the [Vimeo API](https://developer.vimeo.com/). Playback URLs are only included in the response object if the requesting account is a [Vimeo Pro](https://vimeo.com/pro) account.
|
||||
|
||||
If you have a [Vimeo Pro](https://vimeo.com/pro) account, when you make a request to the [Vimeo API](https://developer.vimeo.com/) for a video object the response object will contain a list of video `files`. These represent the various resolution video files available for this particular video. Each has a `link`. You can use the string value keyed to `link` to create an NSURL. You can pass this NSURL to VIMVideoPlayer for playback.
|
||||
|
||||
Check out [this](http://stackoverflow.com/questions/31960338/ios-vimvideoplayerview-cant-load-vimeo-videos) Stack Overflow question for additional info.
|
||||
|
||||
You can use the [Vimeo iOS SDK](https://github.com/vimeo/VIMNetworking) to interact with the [Vimeo API](https://developer.vimeo.com/).
|
||||
|
||||
For full documentation on the Vimeo API go [here](https://developer.vimeo.com/).
|
||||
|
||||
## License
|
||||
|
||||
@@ -88,4 +113,4 @@ Tweet at us here: @vimeoapi
|
||||
|
||||
Post on [Stackoverflow](http://stackoverflow.com/questions/tagged/vimeo-ios) with the tag `vimeo-ios`
|
||||
|
||||
Get in touch [here](Vimeo.com/help/contact)
|
||||
Get in touch [here](https://vimeo.com/help/contact)
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,11 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for VIMVideoKit.
|
||||
FOUNDATION_EXPORT double VIMVideoKitVersionNumber;
|
||||
|
||||
//! Project version string for VIMVideoKit.
|
||||
FOUNDATION_EXPORT const unsigned char VIMVideoKitVersionString[];
|
||||
|
||||
#import <VIMVideoKit/VIMVideoPlayer.h>
|
||||
#import <VIMVideoKit/VIMVideoPlayerView.h>
|
||||
|
||||
+10
-101
@@ -8,124 +8,33 @@
|
||||
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# These will help people to find your library, and whilst it
|
||||
# can feel like a chore to fill in it's definitely to your advantage. The
|
||||
# summary should be tweet-length, and the description more in depth.
|
||||
#
|
||||
|
||||
s.name = "VIMVideoPlayer"
|
||||
s.version = "0.0.1"
|
||||
s.version = "6.0.0"
|
||||
s.summary = "A simple wrapper around the AVPlayer and AVPlayerLayer classes."
|
||||
|
||||
s.description = <<-DESC
|
||||
VIMVideoPlayer is a simple wrapper around the AVPlayer and AVPlayerLayer classes. Check out the README for details. And the Pegasus project for a demo.
|
||||
DESC
|
||||
|
||||
s.homepage = "https://github.com/vimeo/VIMVideoPlayer"
|
||||
# s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
|
||||
|
||||
|
||||
# ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Licensing your code is important. See http://choosealicense.com for more info.
|
||||
# CocoaPods will detect a license file if there is a named LICENSE*
|
||||
# Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'.
|
||||
#
|
||||
|
||||
s.license = "MIT"
|
||||
s.license = { :type => "MIT", :file => "LICENSE.md" }
|
||||
|
||||
s.authors = { "Alfie Hanssen" => "alfiehanssen@gmail.com",
|
||||
"Rob Huebner" => "robh@vimeo.com",
|
||||
"Gavin King" => "gavin@vimeo.com",
|
||||
"Kashif Muhammad" => "support@vimeo.com",
|
||||
"Andrew Whitcomb" => "support@vimeo.com",
|
||||
"Stephen Fredieu" => "support@vimeo.com",
|
||||
"Rahul Kumar" => "support@vimeo.com" }
|
||||
|
||||
# ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Specify the authors of the library, with email addresses. Email addresses
|
||||
# of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also
|
||||
# accepts just a name if you'd rather not provide an email address.
|
||||
#
|
||||
# Specify a social_media_url where others can refer to, for example a twitter
|
||||
# profile URL.
|
||||
#
|
||||
s.social_media_url = "http://twitter.com/vimeo"
|
||||
|
||||
s.author = { "Alfie Hanssen" => "alfiehanssen@gmail.com" }
|
||||
# Or just: s.author = "Alfie Hanssen"
|
||||
# s.authors = { "Alfie Hanssen" => "alfiehanssen@gmail.com" }
|
||||
# s.social_media_url = "http://twitter.com/vimeo
|
||||
|
||||
# ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# If this Pod runs only on iOS or OS X, then specify the platform and
|
||||
# the deployment target. You can optionally include the target after the platform.
|
||||
#
|
||||
|
||||
# s.platform = :ios
|
||||
# s.platform = :ios, "7.0"
|
||||
|
||||
# When using multiple platforms
|
||||
s.ios.deployment_target = "7.0"
|
||||
# s.osx.deployment_target = "10.7"
|
||||
|
||||
|
||||
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Specify the location from where the source should be retrieved.
|
||||
# Supports git, hg, bzr, svn and HTTP.
|
||||
#
|
||||
|
||||
s.source = { :git => "https://github.com/vimeo/VIMVideoPlayer.git", :branch => "cocoapods" }
|
||||
|
||||
|
||||
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# CocoaPods is smart about how it includes source code. For source files
|
||||
# giving a folder will include any swift, h, m, mm, c & cpp files.
|
||||
# For header files it will include any header in the folder.
|
||||
# Not including the public_header_files will make all headers public.
|
||||
#
|
||||
|
||||
s.source = { :git => "https://github.com/vimeo/VIMVideoPlayer.git", :tag => s.version.to_s }
|
||||
s.source_files = "VIMVideoPlayer", "VIMVideoPlayer/*.{h,m}"
|
||||
s.exclude_files = "VIMVideoPlayer/Exclude"
|
||||
|
||||
# s.public_header_files = "Classes/**/*.h"
|
||||
|
||||
|
||||
# ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# A list of resources included with the Pod. These are copied into the
|
||||
# target bundle with a build phase script. Anything else will be cleaned.
|
||||
# You can preserve files from being cleaned, please don't preserve
|
||||
# non-essential files like tests, examples and documentation.
|
||||
#
|
||||
|
||||
# s.resource = "icon.png"
|
||||
# s.resources = "Resources/*.png"
|
||||
|
||||
# s.preserve_paths = "FilesToSave", "MoreFilesToSave"
|
||||
|
||||
|
||||
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# Link your library with frameworks, or libraries. Libraries do not include
|
||||
# the lib prefix of their name.
|
||||
#
|
||||
|
||||
# s.framework = "SomeFramework"
|
||||
# s.frameworks = "SomeFramework", "AnotherFramework"
|
||||
|
||||
# s.library = "iconv"
|
||||
# s.libraries = "iconv", "xml2"
|
||||
|
||||
|
||||
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
|
||||
#
|
||||
# If your library depends on compiler flags you can set them in the xcconfig hash
|
||||
# where they will only apply to your library. If you depend on other Podspecs
|
||||
# you can include multiple dependencies to ensure it works.
|
||||
|
||||
s.requires_arc = true
|
||||
|
||||
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
|
||||
# s.dependency "AFNetworking", "~> 2.5.3"
|
||||
|
||||
end
|
||||
|
||||
@@ -7,13 +7,19 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
50E5070C1B1E23A600DF1F7A /* libVIMVideoPlayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */; };
|
||||
501A3B931BA205A20059040B /* VIMVideoPlayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 501A3B921BA205A20059040B /* VIMVideoPlayerTests.m */; };
|
||||
501A3B951BA205A20059040B /* libVIMVideoPlayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */; };
|
||||
50E5071E1B1E23E100DF1F7A /* VIMVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */; };
|
||||
50E5071F1B1E23E100DF1F7A /* VIMVideoPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */; };
|
||||
B698D9241C264D5C0011F8B4 /* VIMVideoKit.h in Headers */ = {isa = PBXBuildFile; fileRef = B698D9231C264D5C0011F8B4 /* VIMVideoKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B698D9291C264D670011F8B4 /* VIMVideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */; };
|
||||
B698D92A1C264D670011F8B4 /* VIMVideoPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */; };
|
||||
B698D92B1C264DD10011F8B4 /* VIMVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E5071A1B1E23E100DF1F7A /* VIMVideoPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B698D92C1C264DD10011F8B4 /* VIMVideoPlayerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 50E5071C1B1E23E100DF1F7A /* VIMVideoPlayerView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
50E5070D1B1E23A600DF1F7A /* PBXContainerItemProxy */ = {
|
||||
501A3B961BA205A20059040B /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 50E506F81B1E23A600DF1F7A /* Project object */;
|
||||
proxyType = 1;
|
||||
@@ -35,16 +41,28 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
501A3B901BA205A20059040B /* VIMVideoPlayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VIMVideoPlayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
501A3B921BA205A20059040B /* VIMVideoPlayerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VIMVideoPlayerTests.m; sourceTree = "<group>"; };
|
||||
501A3B941BA205A20059040B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVIMVideoPlayer.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VIMVideoPlayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
50E507111B1E23A600DF1F7A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
50E5071A1B1E23E100DF1F7A /* VIMVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VIMVideoPlayer.h; sourceTree = "<group>"; };
|
||||
50E5071B1B1E23E100DF1F7A /* VIMVideoPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VIMVideoPlayer.m; sourceTree = "<group>"; };
|
||||
50E5071C1B1E23E100DF1F7A /* VIMVideoPlayerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VIMVideoPlayerView.h; sourceTree = "<group>"; };
|
||||
50E5071D1B1E23E100DF1F7A /* VIMVideoPlayerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VIMVideoPlayerView.m; sourceTree = "<group>"; };
|
||||
B698D9211C264D5B0011F8B4 /* VIMVideoKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VIMVideoKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B698D9231C264D5C0011F8B4 /* VIMVideoKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIMVideoKit.h; sourceTree = "<group>"; };
|
||||
B698D9251C264D5C0011F8B4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
501A3B8D1BA205A20059040B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
501A3B951BA205A20059040B /* libVIMVideoPlayer.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E506FD1B1E23A600DF1F7A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -52,22 +70,31 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E507081B1E23A600DF1F7A /* Frameworks */ = {
|
||||
B698D91D1C264D5B0011F8B4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
50E5070C1B1E23A600DF1F7A /* libVIMVideoPlayer.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
501A3B911BA205A20059040B /* VIMVideoPlayerTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
501A3B921BA205A20059040B /* VIMVideoPlayerTests.m */,
|
||||
501A3B941BA205A20059040B /* Info.plist */,
|
||||
);
|
||||
path = VIMVideoPlayerTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E506F71B1E23A600DF1F7A = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507021B1E23A600DF1F7A /* VIMVideoPlayer */,
|
||||
50E5070F1B1E23A600DF1F7A /* VIMVideoPlayerTests */,
|
||||
501A3B911BA205A20059040B /* VIMVideoPlayerTests */,
|
||||
B698D9221C264D5C0011F8B4 /* VIMVideoKit */,
|
||||
50E507011B1E23A600DF1F7A /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -76,7 +103,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */,
|
||||
50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */,
|
||||
501A3B901BA205A20059040B /* VIMVideoPlayerTests.xctest */,
|
||||
B698D9211C264D5B0011F8B4 /* VIMVideoKit.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -92,25 +120,49 @@
|
||||
path = VIMVideoPlayer;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E5070F1B1E23A600DF1F7A /* VIMVideoPlayerTests */ = {
|
||||
B698D9221C264D5C0011F8B4 /* VIMVideoKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507101B1E23A600DF1F7A /* Supporting Files */,
|
||||
B698D9231C264D5C0011F8B4 /* VIMVideoKit.h */,
|
||||
B698D9251C264D5C0011F8B4 /* Info.plist */,
|
||||
);
|
||||
path = VIMVideoPlayerTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
50E507101B1E23A600DF1F7A /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
50E507111B1E23A600DF1F7A /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
path = VIMVideoKit;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
B698D91E1C264D5B0011F8B4 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B698D92B1C264DD10011F8B4 /* VIMVideoPlayer.h in Headers */,
|
||||
B698D92C1C264DD10011F8B4 /* VIMVideoPlayerView.h in Headers */,
|
||||
B698D9241C264D5C0011F8B4 /* VIMVideoKit.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
501A3B8F1BA205A20059040B /* VIMVideoPlayerTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 501A3B981BA205A20059040B /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */;
|
||||
buildPhases = (
|
||||
501A3B8C1BA205A20059040B /* Sources */,
|
||||
501A3B8D1BA205A20059040B /* Frameworks */,
|
||||
501A3B8E1BA205A20059040B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
501A3B971BA205A20059040B /* PBXTargetDependency */,
|
||||
);
|
||||
name = VIMVideoPlayerTests;
|
||||
productName = VIMVideoPlayerTests;
|
||||
productReference = 501A3B901BA205A20059040B /* VIMVideoPlayerTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 50E507141B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayer" */;
|
||||
@@ -128,23 +180,23 @@
|
||||
productReference = 50E507001B1E23A600DF1F7A /* libVIMVideoPlayer.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
50E5070A1B1E23A600DF1F7A /* VIMVideoPlayerTests */ = {
|
||||
B698D9201C264D5B0011F8B4 /* VIMVideoKit */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 50E507171B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */;
|
||||
buildConfigurationList = B698D9281C264D5C0011F8B4 /* Build configuration list for PBXNativeTarget "VIMVideoKit" */;
|
||||
buildPhases = (
|
||||
50E507071B1E23A600DF1F7A /* Sources */,
|
||||
50E507081B1E23A600DF1F7A /* Frameworks */,
|
||||
50E507091B1E23A600DF1F7A /* Resources */,
|
||||
B698D91C1C264D5B0011F8B4 /* Sources */,
|
||||
B698D91D1C264D5B0011F8B4 /* Frameworks */,
|
||||
B698D91E1C264D5B0011F8B4 /* Headers */,
|
||||
B698D91F1C264D5B0011F8B4 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
50E5070E1B1E23A600DF1F7A /* PBXTargetDependency */,
|
||||
);
|
||||
name = VIMVideoPlayerTests;
|
||||
productName = VIMVideoPlayerTests;
|
||||
productReference = 50E5070B1B1E23A600DF1F7A /* VIMVideoPlayerTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
name = VIMVideoKit;
|
||||
productName = VIMVideoPlayerFramework;
|
||||
productReference = B698D9211C264D5B0011F8B4 /* VIMVideoKit.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
@@ -155,11 +207,14 @@
|
||||
LastUpgradeCheck = 0630;
|
||||
ORGANIZATIONNAME = Vimeo;
|
||||
TargetAttributes = {
|
||||
501A3B8F1BA205A20059040B = {
|
||||
CreatedOnToolsVersion = 7.0;
|
||||
};
|
||||
50E506FF1B1E23A600DF1F7A = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
};
|
||||
50E5070A1B1E23A600DF1F7A = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
B698D9201C264D5B0011F8B4 = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -176,13 +231,21 @@
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */,
|
||||
50E5070A1B1E23A600DF1F7A /* VIMVideoPlayerTests */,
|
||||
501A3B8F1BA205A20059040B /* VIMVideoPlayerTests */,
|
||||
B698D9201C264D5B0011F8B4 /* VIMVideoKit */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
50E507091B1E23A600DF1F7A /* Resources */ = {
|
||||
501A3B8E1BA205A20059040B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
B698D91F1C264D5B0011F8B4 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@@ -192,6 +255,14 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
501A3B8C1BA205A20059040B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
501A3B931BA205A20059040B /* VIMVideoPlayerTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E506FC1B1E23A600DF1F7A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -201,24 +272,50 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50E507071B1E23A600DF1F7A /* Sources */ = {
|
||||
B698D91C1C264D5B0011F8B4 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B698D9291C264D670011F8B4 /* VIMVideoPlayer.m in Sources */,
|
||||
B698D92A1C264D670011F8B4 /* VIMVideoPlayerView.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
50E5070E1B1E23A600DF1F7A /* PBXTargetDependency */ = {
|
||||
501A3B971BA205A20059040B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 50E506FF1B1E23A600DF1F7A /* VIMVideoPlayer */;
|
||||
targetProxy = 50E5070D1B1E23A600DF1F7A /* PBXContainerItemProxy */;
|
||||
targetProxy = 501A3B961BA205A20059040B /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
501A3B991BA205A20059040B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VIMVideoPlayerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
501A3B9A1BA205A20059040B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VIMVideoPlayerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
50E507121B1E23A600DF1F7A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -315,41 +412,64 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
50E507181B1E23A600DF1F7A /* Debug */ = {
|
||||
B698D9261C264D5C0011F8B4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_TESTABILITY = YES;
|
||||
INFOPLIST_FILE = VIMVideoKit/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VIMVideoKit;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
50E507191B1E23A600DF1F7A /* Release */ = {
|
||||
B698D9271C264D5C0011F8B4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = VIMVideoPlayerTests/Info.plist;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = VIMVideoKit/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.vimeo.VIMVideoKit;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
501A3B981BA205A20059040B /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
501A3B991BA205A20059040B /* Debug */,
|
||||
501A3B9A1BA205A20059040B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
50E506FB1B1E23A600DF1F7A /* Build configuration list for PBXProject "VIMVideoPlayer" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@@ -368,11 +488,11 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
50E507171B1E23A600DF1F7A /* Build configuration list for PBXNativeTarget "VIMVideoPlayerTests" */ = {
|
||||
B698D9281C264D5C0011F8B4 /* Build configuration list for PBXNativeTarget "VIMVideoKit" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
50E507181B1E23A600DF1F7A /* Debug */,
|
||||
50E507191B1E23A600DF1F7A /* Release */,
|
||||
B698D9261C264D5C0011F8B4 /* Debug */,
|
||||
B698D9271C264D5C0011F8B4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0720"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B698D9201C264D5B0011F8B4"
|
||||
BuildableName = "VIMVideoKit.framework"
|
||||
BlueprintName = "VIMVideoKit"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</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">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B698D9201C264D5B0011F8B4"
|
||||
BuildableName = "VIMVideoKit.framework"
|
||||
BlueprintName = "VIMVideoKit"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B698D9201C264D5B0011F8B4"
|
||||
BuildableName = "VIMVideoKit.framework"
|
||||
BlueprintName = "VIMVideoKit"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "50E506FF1B1E23A600DF1F7A"
|
||||
BuildableName = "libVIMVideoPlayer.a"
|
||||
BlueprintName = "VIMVideoPlayer"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B698D9201C264D5B0011F8B4"
|
||||
BuildableName = "VIMVideoKit.framework"
|
||||
BlueprintName = "VIMVideoKit"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
codeCoverageEnabled = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "501A3B8F1BA205A20059040B"
|
||||
BuildableName = "VIMVideoPlayerTests.xctest"
|
||||
BlueprintName = "VIMVideoPlayerTests"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "50E506FF1B1E23A600DF1F7A"
|
||||
BuildableName = "libVIMVideoPlayer.a"
|
||||
BlueprintName = "VIMVideoPlayer"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</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">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "50E506FF1B1E23A600DF1F7A"
|
||||
BuildableName = "libVIMVideoPlayer.a"
|
||||
BlueprintName = "VIMVideoPlayer"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "50E506FF1B1E23A600DF1F7A"
|
||||
BuildableName = "libVIMVideoPlayer.a"
|
||||
BlueprintName = "VIMVideoPlayer"
|
||||
ReferencedContainer = "container:VIMVideoPlayer.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -37,6 +37,8 @@
|
||||
- (void)videoPlayerDidReachEnd:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer timeDidChange:(CMTime)cmTime;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer loadedTimeRangeDidChange:(float)duration;
|
||||
- (void)videoPlayerPlaybackBufferEmpty:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayerPlaybackLikelyToKeepUp:(VIMVideoPlayer *)videoPlayer;
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer didFailWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
@@ -55,6 +55,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
@property (nonatomic, assign) BOOL isTimingUpdateEnabled;
|
||||
@property (nonatomic, strong) id timeObserverToken;
|
||||
|
||||
@property (nonatomic, strong) AVPlayerItem *item;
|
||||
|
||||
@end
|
||||
|
||||
@implementation VIMVideoPlayer
|
||||
@@ -68,8 +70,6 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
[self removeTimeObserver];
|
||||
|
||||
[self cancelFadeVolume];
|
||||
|
||||
NSLog(@"dealloc");
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
@@ -94,9 +94,14 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)setupPlayer
|
||||
{
|
||||
self.player = [AVPlayer playerWithPlayerItem:nil];
|
||||
self.player.muted = NO;
|
||||
self.player.allowsExternalPlayback = YES;
|
||||
self.player = [[AVPlayer alloc] init];
|
||||
|
||||
self.muted = NO;
|
||||
self.looping = NO;
|
||||
|
||||
[self setVolume:1.0f];
|
||||
[self enableTimeUpdates];
|
||||
[self enableAirplay];
|
||||
}
|
||||
|
||||
- (void)setupAudioSession
|
||||
@@ -407,11 +412,13 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)resetPlayerItemIfNecessary
|
||||
{
|
||||
if (self.player.currentItem)
|
||||
if (self.item)
|
||||
{
|
||||
[self removePlayerItemObservers:self.player.currentItem];
|
||||
[self removePlayerItemObservers:self.item];
|
||||
|
||||
[self.player replaceCurrentItemWithPlayerItem:nil];
|
||||
|
||||
self.item = nil;
|
||||
}
|
||||
|
||||
_volumeFadeDuration = DefaultVolumeFadeDuration;
|
||||
@@ -424,6 +431,10 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
|
||||
- (void)preparePlayerItem:(AVPlayerItem *)playerItem
|
||||
{
|
||||
NSParameterAssert(playerItem);
|
||||
|
||||
self.item = playerItem;
|
||||
|
||||
[self addPlayerItemObservers:playerItem];
|
||||
|
||||
[self.player replaceCurrentItemWithPlayerItem:playerItem];
|
||||
@@ -702,14 +713,25 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
}
|
||||
case AVPlayerItemStatusFailed:
|
||||
{
|
||||
NSLog(@"Video player Status Failed: error = %@", self.player.currentItem.error);
|
||||
NSLog(@"Video player Status Failed: player item error = %@", self.player.currentItem.error);
|
||||
NSLog(@"Video player Status Failed: player error = %@", self.player.error);
|
||||
|
||||
NSError *error = self.player.error;
|
||||
if (!error)
|
||||
{
|
||||
error = self.player.currentItem.error;
|
||||
}
|
||||
else
|
||||
{
|
||||
error = [NSError errorWithDomain:kVideoPlayerErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"unknown player error, status == AVPlayerItemStatusFailed"}];
|
||||
}
|
||||
|
||||
[self reset];
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayer:didFailWithError:)])
|
||||
{
|
||||
[self reset];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.delegate videoPlayer:self didFailWithError:self.player.currentItem.error];
|
||||
[self.delegate videoPlayer:self didFailWithError:error];
|
||||
});
|
||||
}
|
||||
|
||||
@@ -717,6 +739,18 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (newStatus == AVPlayerItemStatusReadyToPlay)
|
||||
{
|
||||
// When playback resumes after a buffering event, a new ReadyToPlay status is set [RH]
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerPlaybackLikelyToKeepUp:)])
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
{
|
||||
[self.delegate videoPlayerPlaybackLikelyToKeepUp:self];
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (context == VideoPlayer_PlayerItemPlaybackBufferEmpty)
|
||||
{
|
||||
@@ -724,7 +758,13 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
|
||||
{
|
||||
if (self.isPlaying)
|
||||
{
|
||||
// TODO: Show Loading indicator
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerPlaybackBufferEmpty:)])
|
||||
{
|
||||
[self.delegate videoPlayerPlaybackBufferEmpty:self];
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
- (void)videoPlayerViewDidReachEnd:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView timeDidChange:(CMTime)cmTime;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView loadedTimeRangeDidChange:(float)duration;
|
||||
- (void)videoPlayerViewPlaybackBufferEmpty:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerViewPlaybackLikelyToKeepUp:(VIMVideoPlayerView *)videoPlayerView;
|
||||
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView didFailWithError:(NSError *)error;
|
||||
|
||||
@end
|
||||
@@ -47,6 +49,8 @@
|
||||
|
||||
@property (nonatomic, strong) VIMVideoPlayer *player;
|
||||
|
||||
- (void)setPlayer:(VIMVideoPlayer *)player;
|
||||
|
||||
- (void)setVideoFillMode:(NSString *)fillMode;
|
||||
|
||||
@end
|
||||
|
||||
@@ -40,21 +40,37 @@
|
||||
[self detachPlayer];
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super init];
|
||||
self = [super initWithFrame:frame];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_player = [[VIMVideoPlayer alloc] init];
|
||||
_player.muted = YES;
|
||||
_player.looping = YES;
|
||||
|
||||
[self attachPlayer];
|
||||
[self commonInit];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithCoder:(NSCoder *)aDecoder
|
||||
{
|
||||
self = [super initWithCoder:aDecoder];
|
||||
|
||||
if (self)
|
||||
{
|
||||
[self commonInit];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)commonInit
|
||||
{
|
||||
VIMVideoPlayer *player = [[VIMVideoPlayer alloc] init];
|
||||
|
||||
[self setPlayer:player];
|
||||
}
|
||||
|
||||
#pragma mark - Public API
|
||||
|
||||
- (void)setPlayer:(VIMVideoPlayer *)player
|
||||
@@ -63,7 +79,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
[self detachPlayer];
|
||||
|
||||
_player = player;
|
||||
@@ -138,6 +154,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayerPlaybackBufferEmpty:(VIMVideoPlayer *)videoPlayer
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerViewPlaybackBufferEmpty:)])
|
||||
{
|
||||
[self.delegate videoPlayerViewPlaybackBufferEmpty:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayerPlaybackLikelyToKeepUp:(VIMVideoPlayer *)videoPlayer
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerViewPlaybackLikelyToKeepUp:)])
|
||||
{
|
||||
[self.delegate videoPlayerViewPlaybackLikelyToKeepUp:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)videoPlayer:(VIMVideoPlayer *)videoPlayer didFailWithError:(NSError *)error
|
||||
{
|
||||
if ([self.delegate respondsToSelector:@selector(videoPlayerView:didFailWithError:)])
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.vimeo.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// VIMVideoPlayerTests.m
|
||||
// VIMVideoPlayerTests
|
||||
//
|
||||
// Created by Hanssen, Alfie on 9/10/15.
|
||||
// Copyright © 2015 Vimeo. All rights reserved.
|
||||
//
|
||||
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
@interface VIMVideoPlayerTests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation VIMVideoPlayerTests
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testExample {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
- (void)testPerformanceExample {
|
||||
// This is an example of a performance test case.
|
||||
[self measureBlock:^{
|
||||
// Put the code you want to measure the time of here.
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user