33 lines
921 B
Swift
33 lines
921 B
Swift
import Foundation
|
|
|
|
public struct AudioFormat: Hashable, Codable, Sendable {
|
|
public enum Codec: String, Codable, Sendable {
|
|
case flac, alac, wav, mp3, aac, opus, vorbis, eac3
|
|
}
|
|
|
|
public var codec: Codec
|
|
public var bitrateKbps: Int?
|
|
public var sampleRate: Int?
|
|
public var bitDepth: Int?
|
|
public var channels: Int
|
|
|
|
public init(codec: Codec, bitrateKbps: Int? = nil, sampleRate: Int? = nil, bitDepth: Int? = nil, channels: Int = 2) {
|
|
self.codec = codec
|
|
self.bitrateKbps = bitrateKbps
|
|
self.sampleRate = sampleRate
|
|
self.bitDepth = bitDepth
|
|
self.channels = channels
|
|
}
|
|
|
|
public var isLossless: Bool {
|
|
switch codec {
|
|
case .flac, .alac, .wav: true
|
|
default: false
|
|
}
|
|
}
|
|
|
|
public var isHiRes: Bool {
|
|
isLossless && ((sampleRate ?? 0) > 48000 || (bitDepth ?? 0) > 16 && (sampleRate ?? 0) > 44100)
|
|
}
|
|
}
|