import AVFoundation
import Foundation

public extension AVAsset {
    func isLandscape() async throws -> Bool {
        guard let track = try? await self.loadTracks(withMediaType: .video).first else {
            return false
        }

        let naturalSize = try await track.load(.naturalSize)
        let preferredTransform = try await track.load(.preferredTransform)

        // Calculate the correct video size and transform
        let transformedSize = naturalSize.applying(preferredTransform)
        let renderSize = CGSize(width: abs(transformedSize.width), height: abs(transformedSize.height))

        let videoRatio = renderSize.height / renderSize.width

        return videoRatio < 1
    }
}
