mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 19:30:29 +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;
|
ASVideoNodePlayerState _playerState;
|
||||||
|
|
||||||
AVAsset *_asset;
|
AVAsset *_asset;
|
||||||
|
NSURL *_assetURL;
|
||||||
AVVideoComposition *_videoComposition;
|
AVVideoComposition *_videoComposition;
|
||||||
AVAudioMix *_audioMix;
|
AVAudioMix *_audioMix;
|
||||||
|
|
||||||
@ -127,10 +128,10 @@ static NSString * const kStatus = @"status";
|
|||||||
ASDN::MutexLocker l(__instanceLock__);
|
ASDN::MutexLocker l(__instanceLock__);
|
||||||
|
|
||||||
AVPlayerItem *playerItem = nil;
|
AVPlayerItem *playerItem = nil;
|
||||||
if (self.assetURL != nil) {
|
if (_assetURL != nil) {
|
||||||
playerItem = [[AVPlayerItem alloc] initWithURL:self.assetURL];
|
playerItem = [[AVPlayerItem alloc] initWithURL:_assetURL];
|
||||||
_asset = [playerItem asset];
|
_asset = [playerItem asset];
|
||||||
} else if (_asset != nil) {
|
} else {
|
||||||
playerItem = [[AVPlayerItem alloc] initWithAsset:_asset];
|
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.");
|
NSLog(@"Asset is not playable.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -444,8 +445,8 @@ static NSString * const kStatus = @"status";
|
|||||||
{
|
{
|
||||||
ASDN::MutexLocker l(__instanceLock__);
|
ASDN::MutexLocker l(__instanceLock__);
|
||||||
|
|
||||||
if (!ASObjectIsEqual(assetURL, self.assetURL)) {
|
if (ASObjectIsEqual(assetURL, self.assetURL) == NO) {
|
||||||
self.asset = [AVURLAsset assetWithURL:assetURL];
|
[self _setAndFetchAsset:[AVURLAsset assetWithURL:assetURL] url:assetURL];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,7 +454,9 @@ static NSString * const kStatus = @"status";
|
|||||||
{
|
{
|
||||||
ASDN::MutexLocker l(__instanceLock__);
|
ASDN::MutexLocker l(__instanceLock__);
|
||||||
|
|
||||||
if ([_asset isKindOfClass:AVURLAsset.class]) {
|
if (_assetURL != nil) {
|
||||||
|
return _assetURL;
|
||||||
|
} else if ([_asset isKindOfClass:AVURLAsset.class]) {
|
||||||
return ((AVURLAsset *)_asset).URL;
|
return ((AVURLAsset *)_asset).URL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,15 +467,9 @@ static NSString * const kStatus = @"status";
|
|||||||
{
|
{
|
||||||
ASDN::MutexLocker l(__instanceLock__);
|
ASDN::MutexLocker l(__instanceLock__);
|
||||||
|
|
||||||
if (ASAssetIsEqual(asset, _asset)) {
|
if (ASAssetIsEqual(asset, _asset) == NO) {
|
||||||
return;
|
[self _setAndFetchAsset:asset url:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
[self clearFetchedData];
|
|
||||||
|
|
||||||
_asset = asset;
|
|
||||||
|
|
||||||
[self setNeedsDataFetch];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (AVAsset *)asset
|
- (AVAsset *)asset
|
||||||
@ -481,6 +478,14 @@ static NSString * const kStatus = @"status";
|
|||||||
return _asset;
|
return _asset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)_setAndFetchAsset:(AVAsset *)asset url:(NSURL *)assetURL
|
||||||
|
{
|
||||||
|
[self clearFetchedData];
|
||||||
|
_asset = asset;
|
||||||
|
_assetURL = assetURL;
|
||||||
|
[self setNeedsDataFetch];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setVideoComposition:(AVVideoComposition *)videoComposition
|
- (void)setVideoComposition:(AVVideoComposition *)videoComposition
|
||||||
{
|
{
|
||||||
ASDN::MutexLocker l(__instanceLock__);
|
ASDN::MutexLocker l(__instanceLock__);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user