From dac09854303335d8e37b633c37bca399499d1999 Mon Sep 17 00:00:00 2001 From: Olivier Bouillet <62574056+freeboub@users.noreply.github.com> Date: Wed, 22 May 2024 22:54:00 +0200 Subject: [PATCH] fix(iOS): sometimes aspect ratio is invalid (#3821) * perf: ensure we do not provide callback to native if no callback provided from app * chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size * chore: improve issue template * fix(android): avoid video view flickering at playback startup * fix: invert aspect ratio evaluation to find video height / width --- ios/Video/RCTVideo.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ios/Video/RCTVideo.swift b/ios/Video/RCTVideo.swift index 810d6565..486524d9 100644 --- a/ios/Video/RCTVideo.swift +++ b/ios/Video/RCTVideo.swift @@ -1383,12 +1383,14 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH var orientation = "undefined" let tracks = await RCTVideoAssetsUtils.getTracks(asset: _playerItem.asset, withMediaType: .video) - if let videoTrack = tracks?.first { - width = Float(videoTrack.naturalSize.width) - height = Float(videoTrack.naturalSize.height) - } else if _playerItem.presentationSize.height != 0.0 { - width = Float(_playerItem.presentationSize.width) - height = Float(_playerItem.presentationSize.height) + var presentationSize = _playerItem.presentationSize + if presentationSize.height != 0.0 { + width = Float(presentationSize.width) + height = Float(presentationSize.height) + } else if let videoTrack = tracks?.first { + let naturalSize = videoTrack.naturalSize + width = Float(naturalSize.width) + height = Float(naturalSize.height) } orientation = width > height ? "landscape" : width == height ? "square" : "portrait"