[ASVideoNode] Fix conditional that prevented local asset loading (#1962)

* Fix conditional that prevented local asset loading

* Allow setting new asset to clear previously set URL
This commit is contained in:
Levi McCallum 2016-07-21 10:39:31 -07:00 committed by Adlai Holler
parent 1d4620edce
commit 0c70bca2bd

View File

@ -69,6 +69,7 @@ static NSString * const kStatus = @"status";
ASVideoNodePlayerState _playerState;
AVAsset *_asset;
NSURL *_assetURL;
AVVideoComposition *_videoComposition;
AVAudioMix *_audioMix;
@ -127,10 +128,10 @@ static NSString * const kStatus = @"status";
ASDN::MutexLocker l(__instanceLock__);
AVPlayerItem *playerItem = nil;
if (self.assetURL != nil) {
playerItem = [[AVPlayerItem alloc] initWithURL:self.assetURL];
if (_assetURL != nil) {
playerItem = [[AVPlayerItem alloc] initWithURL:_assetURL];
_asset = [playerItem asset];
} else if (_asset != nil) {
} else {
playerItem = [[AVPlayerItem alloc] initWithAsset:_asset];
}
@ -149,7 +150,7 @@ static NSString * const kStatus = @"status";
}
}
if (![asset isPlayable]) {
if ([asset isPlayable] == NO) {
NSLog(@"Asset is not playable.");
return;
}
@ -444,8 +445,8 @@ static NSString * const kStatus = @"status";
{
ASDN::MutexLocker l(__instanceLock__);
if (!ASObjectIsEqual(assetURL, self.assetURL)) {
self.asset = [AVURLAsset assetWithURL:assetURL];
if (ASObjectIsEqual(assetURL, self.assetURL) == NO) {
[self _setAndFetchAsset:[AVURLAsset assetWithURL:assetURL] url:assetURL];
}
}
@ -453,7 +454,9 @@ static NSString * const kStatus = @"status";
{
ASDN::MutexLocker l(__instanceLock__);
if ([_asset isKindOfClass:AVURLAsset.class]) {
if (_assetURL != nil) {
return _assetURL;
} else if ([_asset isKindOfClass:AVURLAsset.class]) {
return ((AVURLAsset *)_asset).URL;
}
@ -464,15 +467,9 @@ static NSString * const kStatus = @"status";
{
ASDN::MutexLocker l(__instanceLock__);
if (ASAssetIsEqual(asset, _asset)) {
return;
if (ASAssetIsEqual(asset, _asset) == NO) {
[self _setAndFetchAsset:asset url:nil];
}
[self clearFetchedData];
_asset = asset;
[self setNeedsDataFetch];
}
- (AVAsset *)asset
@ -481,6 +478,14 @@ static NSString * const kStatus = @"status";
return _asset;
}
- (void)_setAndFetchAsset:(AVAsset *)asset url:(NSURL *)assetURL
{
[self clearFetchedData];
_asset = asset;
_assetURL = assetURL;
[self setNeedsDataFetch];
}
- (void)setVideoComposition:(AVVideoComposition *)videoComposition
{
ASDN::MutexLocker l(__instanceLock__);