9 Commits

Author SHA1 Message Date
Nicole Lehrer a070f2c785 Merge pull request #64 from vimeo/VIM-4496-airplayBug
VIM-4496: No Playback if Already in Airplay Mode
2016-09-01 22:37:26 -04:00
Nicole Lehrer 0935b0ec55 using default init 2016-08-30 13:55:38 -04:00
Gavin King 747f6bb56f Merge pull request #62 from vimeo/VIM-4419-drm-player-error-ui
VIM-4419: DRM player error UI
2016-08-22 16:38:15 -04:00
Gavin King aea0881949 better error handling 2016-08-16 15:40:55 -04:00
Gavin King df0e6caaaf Merge pull request #60 from vimeo/VIM-4503-session-time
VIM-4503: Session time
2016-08-12 16:00:23 -04:00
Gavin King 3197515537 moving constant 2016-08-11 11:01:53 -04:00
Gavin King 36cecee5bc Merge pull request #59 from vimeo/VIM-3520-airplay-mirror-bug
VIM-3520: Airplay Mirror Bug
2016-08-10 14:19:45 -04:00
Gavin King 3da484c5e2 airplay fix 2016-08-08 11:37:01 -04:00
Gavin King 59b9f3a5fe Merge pull request #53 from vimeo/v6.0.2
Merging v6.0.2 into master
2016-05-03 11:28:30 -04:00
2 changed files with 25 additions and 4 deletions
+2
View File
@@ -29,6 +29,8 @@
@class VIMVideoPlayer;
static const float TimeUpdateInterval = 0.1f;
@protocol VIMVideoPlayerDelegate <NSObject>
@optional
+23 -4
View File
@@ -28,7 +28,6 @@
static const float DefaultPlayableBufferLength = 2.0f;
static const float DefaultVolumeFadeDuration = 1.0f;
static const float TimeObserverInterval = 0.01f;
NSString * const kVideoPlayerErrorDomain = @"kVideoPlayerErrorDomain";
@@ -99,6 +98,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
self.muted = NO;
self.looping = NO;
self.player.usesExternalPlaybackWhileExternalScreenIsActive = YES;
[self setVolume:1.0f];
[self enableTimeUpdates];
[self enableAirplay];
@@ -164,7 +165,8 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
[self resetPlayerItemIfNecessary];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset automaticallyLoadedAssetKeys:@[NSStringFromSelector(@selector(tracks))]];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset: asset];
if (!playerItem)
{
[self reportUnableToCreatePlayerItem];
@@ -642,7 +644,7 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
}
__weak typeof (self) weakSelf = self;
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeObserverInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
self.timeObserverToken = [self.player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(TimeUpdateInterval, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
__strong typeof (self) strongSelf = weakSelf;
if (!strongSelf)
@@ -719,12 +721,29 @@ static void *VideoPlayer_PlayerItemLoadedTimeRangesContext = &VideoPlayer_Player
NSLog(@"Video player Status Failed: player item error = %@", self.player.currentItem.error);
NSLog(@"Video player Status Failed: player error = %@", self.player.error);
// First, try to use the player error if it exists
NSError *error = self.player.error;
// Otherwise try to use the current item's error
if (!error)
{
error = self.player.currentItem.error;
}
else
// If there's a more specific underlyng error, use that
NSError *underlyingError = [error.userInfo objectForKey:NSUnderlyingErrorKey];
if (underlyingError)
{
error = underlyingError;
}
// Finally, construct our own as a last resort
if (!error)
{
error = [NSError errorWithDomain:kVideoPlayerErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"unknown player error, status == AVPlayerItemStatusFailed"}];
}