|
| 1 | +// |
| 2 | +// AVVideoComposition++.swift of MijickCameraView |
| 3 | +// |
| 4 | +// Created by Tomasz Kurylik |
| 5 | +// - Twitter: https://twitter.com/tkurylik |
| 6 | +// - Mail: tomasz.kurylik@mijick.com |
| 7 | +// - GitHub: https://github.com/FulcrumOne |
| 8 | +// |
| 9 | +// Copyright ©2024 Mijick. Licensed under MIT License. |
| 10 | + |
| 11 | + |
| 12 | +import AVKit |
| 13 | + |
| 14 | +// MARK: - Applying Filters |
| 15 | +extension AVVideoComposition { |
| 16 | + static func applyFilters(to asset: AVAsset, applyFiltersAction: @escaping (AVAsynchronousCIImageFilteringRequest) -> (), completionHandler: @escaping (AVVideoComposition?, (any Error)?) -> ()) { |
| 17 | + if #available(iOS 16.0, *) { applyFiltersNewWay(asset, applyFiltersAction, completionHandler) } |
| 18 | + else { applyFiltersOldWay(asset, applyFiltersAction, completionHandler) } |
| 19 | + } |
| 20 | +} |
| 21 | +private extension AVVideoComposition { |
| 22 | + @available(iOS 16.0, *) |
| 23 | + static func applyFiltersNewWay(_ asset: AVAsset, _ applyFiltersAction: @escaping (AVAsynchronousCIImageFilteringRequest) -> (), _ completionHandler: @escaping (AVVideoComposition?, (any Error)?) -> ()) { |
| 24 | + AVVideoComposition.videoComposition(with: asset, applyingCIFiltersWithHandler: applyFiltersAction, completionHandler: completionHandler) |
| 25 | + } |
| 26 | + static func applyFiltersOldWay(_ asset: AVAsset, _ applyFiltersAction: @escaping (AVAsynchronousCIImageFilteringRequest) -> (), _ completionHandler: @escaping (AVVideoComposition?, (any Error)?) -> ()) { |
| 27 | + let composition = AVVideoComposition(asset: asset, applyingCIFiltersWithHandler: applyFiltersAction) |
| 28 | + completionHandler(composition, nil) |
| 29 | + } |
| 30 | +} |
0 commit comments