64 lines
1.2 KiB
Swift
64 lines
1.2 KiB
Swift
|
//
|
||
|
// PixelFormat.swift
|
||
|
// VisionCamera
|
||
|
//
|
||
|
// Created by Marc Rousavy on 17.08.23.
|
||
|
// Copyright © 2023 mrousavy. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import AVFoundation
|
||
|
import Foundation
|
||
|
|
||
|
enum PixelFormat {
|
||
|
case yuv
|
||
|
case rgb
|
||
|
case dng
|
||
|
case native
|
||
|
case unknown
|
||
|
|
||
|
var unionValue: String {
|
||
|
switch self {
|
||
|
case .yuv:
|
||
|
return "yuv"
|
||
|
case .rgb:
|
||
|
return "rgb"
|
||
|
case .dng:
|
||
|
return "dng"
|
||
|
case .native:
|
||
|
return "native"
|
||
|
case .unknown:
|
||
|
return "unknown"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
init(unionValue: String) throws {
|
||
|
switch unionValue {
|
||
|
case "yuv":
|
||
|
self = .yuv
|
||
|
case "rgb":
|
||
|
self = .rgb
|
||
|
case "dng":
|
||
|
self = .dng
|
||
|
case "native":
|
||
|
self = .native
|
||
|
case "unknown":
|
||
|
self = .unknown
|
||
|
default:
|
||
|
throw CameraError.parameter(.invalid(unionName: "pixelFormat", receivedValue: unionValue))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
init(mediaSubType: OSType) {
|
||
|
switch mediaSubType {
|
||
|
case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange:
|
||
|
self = .yuv
|
||
|
case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
|
||
|
self = .yuv
|
||
|
case kCVPixelFormatType_32BGRA:
|
||
|
self = .rgb
|
||
|
default:
|
||
|
self = .unknown
|
||
|
}
|
||
|
}
|
||
|
}
|