Fix rare bug in sent video dimensions calculation

This commit is contained in:
Ilya Laktyushin 2022-03-01 19:03:46 +04:00
parent 612f5eeef1
commit 0ce318b205
2 changed files with 37 additions and 25 deletions

View File

@ -17,7 +17,7 @@
- (CGSize)originalSize
{
AVAssetTrack *track = self.tracks.firstObject;
AVAssetTrack *track = [self tracksWithMediaType:AVMediaTypeVideo].firstObject;
return CGRectApplyAffineTransform((CGRect){ CGPointZero, track.naturalSize }, track.preferredTransform).size;
}

View File

@ -110,6 +110,17 @@ private func preparedShareItem(account: Account, to peerId: PeerId, value: [Stri
}
var finalDuration: Double = CMTimeGetSeconds(asset.duration)
func loadValues(_ avAsset: AVURLAsset) -> Signal<AVURLAsset, Void> {
return Signal { subscriber in
avAsset.loadValuesAsynchronously(forKeys: ["tracks", "duration", "playable"]) {
subscriber.putNext(avAsset)
}
return EmptyDisposable
}
}
return loadValues(asset)
|> mapToSignal { asset -> Signal<PreparedShareItem, Void> in
let preset = adjustments?.preset ?? TGMediaVideoConversionPresetCompressedMedium
let finalDimensions = TGMediaVideoConverter.dimensions(for: asset.originalSize, adjustments: adjustments, preset: preset)
@ -139,6 +150,7 @@ private func preparedShareItem(account: Account, to peerId: PeerId, value: [Stri
return .single(.done(.media(media)))
}
}
}
} else if let data = value["data"] as? Data {
let fileName = value["fileName"] as? String
let mimeType = (value["mimeType"] as? String) ?? "application/octet-stream"