mirror of
https://github.com/samsonjs/SJSAssetExportSession.git
synced 2026-03-25 08:45:50 +00:00
72 lines
2.5 KiB
Swift
72 lines
2.5 KiB
Swift
//
|
|
// ExportSession+Error.swift
|
|
// SJSAssetExportSession
|
|
//
|
|
// Created by Sami Samhuri on 2024-07-07.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension ExportSession {
|
|
public enum SetupFailureReason: String, Sendable, CustomStringConvertible {
|
|
case audioSettingsEmpty
|
|
case audioSettingsInvalid
|
|
case cannotAddAudioInput
|
|
case cannotAddAudioOutput
|
|
case cannotAddVideoInput
|
|
case cannotAddVideoOutput
|
|
case videoSettingsInvalid
|
|
case videoTracksEmpty
|
|
|
|
public var description: String {
|
|
switch self {
|
|
case .audioSettingsEmpty:
|
|
"Must provide audio output settings"
|
|
case .audioSettingsInvalid:
|
|
"Invalid audio output settings"
|
|
case .cannotAddAudioInput:
|
|
"Can't add audio input to writer"
|
|
case .cannotAddAudioOutput:
|
|
"Can't add audio output to reader"
|
|
case .cannotAddVideoInput:
|
|
"Can't add video input to writer"
|
|
case .cannotAddVideoOutput:
|
|
"Can't add video output to reader"
|
|
case .videoSettingsInvalid:
|
|
"Invalid video output settings"
|
|
case .videoTracksEmpty:
|
|
"No video track"
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum Error: LocalizedError, Equatable {
|
|
case setupFailure(SetupFailureReason)
|
|
case readFailure((any Swift.Error)?)
|
|
case writeFailure((any Swift.Error)?)
|
|
|
|
public var errorDescription: String? {
|
|
switch self {
|
|
case let .setupFailure(reason):
|
|
reason.description
|
|
case let .readFailure(underlyingError):
|
|
underlyingError?.localizedDescription ?? "Unknown read failure"
|
|
case let .writeFailure(underlyingError):
|
|
underlyingError?.localizedDescription ?? "Unknown write failure"
|
|
}
|
|
}
|
|
|
|
public static func == (lhs: ExportSession.Error, rhs: ExportSession.Error) -> Bool {
|
|
switch (lhs, rhs) {
|
|
case let (.setupFailure(lhsReason), .setupFailure(rhsReason)):
|
|
lhsReason == rhsReason
|
|
case let (.readFailure(lhsError), .readFailure(rhsError)):
|
|
String(describing: lhsError) == String(describing: rhsError)
|
|
case let (.writeFailure(lhsError), .writeFailure(rhsError)):
|
|
String(describing: lhsError) == String(describing: rhsError)
|
|
default:
|
|
false
|
|
}
|
|
}
|
|
}
|
|
}
|