mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 03:09:56 +00:00
[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:
parent
1d4620edce
commit
0c70bca2bd
@ -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__);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user