mirror of
https://github.com/HaishinKit/HaishinKit.swift.git
synced 2026-05-07 20:12:28 +00:00
84 lines
3.5 KiB
Swift
84 lines
3.5 KiB
Swift
import CoreImage
|
|
import CoreMedia
|
|
|
|
extension CMVideoFormatDescription {
|
|
package var isCompressed: Bool {
|
|
switch CMFormatDescriptionGetMediaSubType(self) {
|
|
case kCVPixelFormatType_1Monochrome,
|
|
kCVPixelFormatType_2Indexed,
|
|
kCVPixelFormatType_8Indexed,
|
|
kCVPixelFormatType_1IndexedGray_WhiteIsZero,
|
|
kCVPixelFormatType_2IndexedGray_WhiteIsZero,
|
|
kCVPixelFormatType_4IndexedGray_WhiteIsZero,
|
|
kCVPixelFormatType_8IndexedGray_WhiteIsZero,
|
|
kCVPixelFormatType_16BE555,
|
|
kCVPixelFormatType_16LE555,
|
|
kCVPixelFormatType_16LE5551,
|
|
kCVPixelFormatType_16BE565,
|
|
kCVPixelFormatType_16LE565,
|
|
kCVPixelFormatType_24RGB,
|
|
kCVPixelFormatType_24BGR,
|
|
kCVPixelFormatType_32ARGB,
|
|
kCVPixelFormatType_32BGRA,
|
|
kCVPixelFormatType_32ABGR,
|
|
kCVPixelFormatType_32RGBA,
|
|
kCVPixelFormatType_64ARGB,
|
|
kCVPixelFormatType_48RGB,
|
|
kCVPixelFormatType_32AlphaGray,
|
|
kCVPixelFormatType_16Gray,
|
|
kCVPixelFormatType_30RGB,
|
|
kCVPixelFormatType_422YpCbCr8,
|
|
kCVPixelFormatType_4444YpCbCrA8,
|
|
kCVPixelFormatType_4444YpCbCrA8R,
|
|
kCVPixelFormatType_4444AYpCbCr8,
|
|
kCVPixelFormatType_4444AYpCbCr16,
|
|
kCVPixelFormatType_444YpCbCr8,
|
|
kCVPixelFormatType_422YpCbCr16,
|
|
kCVPixelFormatType_422YpCbCr10,
|
|
kCVPixelFormatType_444YpCbCr10,
|
|
kCVPixelFormatType_420YpCbCr8Planar,
|
|
kCVPixelFormatType_420YpCbCr8PlanarFullRange,
|
|
kCVPixelFormatType_422YpCbCr_4A_8BiPlanar,
|
|
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
|
|
kCVPixelFormatType_420YpCbCr8BiPlanarFullRange,
|
|
kCVPixelFormatType_422YpCbCr8_yuvs,
|
|
kCVPixelFormatType_422YpCbCr8FullRange,
|
|
kCVPixelFormatType_OneComponent8,
|
|
kCVPixelFormatType_TwoComponent8,
|
|
kCVPixelFormatType_OneComponent16Half,
|
|
kCVPixelFormatType_OneComponent32Float,
|
|
kCVPixelFormatType_TwoComponent16Half,
|
|
kCVPixelFormatType_TwoComponent32Float,
|
|
kCVPixelFormatType_64RGBAHalf,
|
|
kCVPixelFormatType_128RGBAFloat,
|
|
kCVPixelFormatType_Lossy_32BGRA,
|
|
kCVPixelFormatType_Lossless_32BGRA,
|
|
kCVPixelFormatType_Lossy_420YpCbCr8BiPlanarFullRange,
|
|
kCVPixelFormatType_Lossy_420YpCbCr8BiPlanarVideoRange,
|
|
kCVPixelFormatType_Lossless_420YpCbCr8BiPlanarFullRange,
|
|
kCVPixelFormatType_Lossless_420YpCbCr8BiPlanarVideoRange,
|
|
kCVPixelFormatType_Lossy_420YpCbCr10PackedBiPlanarVideoRange,
|
|
kCVPixelFormatType_Lossy_422YpCbCr10PackedBiPlanarVideoRange,
|
|
kCVPixelFormatType_Lossless_420YpCbCr10PackedBiPlanarVideoRange,
|
|
kCVPixelFormatType_Lossless_422YpCbCr10PackedBiPlanarVideoRange:
|
|
return false
|
|
default:
|
|
return true
|
|
}
|
|
}
|
|
|
|
var configurationBox: Data? {
|
|
guard let atoms = CMFormatDescriptionGetExtension(self, extensionKey: kCMFormatDescriptionExtension_SampleDescriptionExtensionAtoms) as? NSDictionary else {
|
|
return nil
|
|
}
|
|
switch mediaSubType {
|
|
case .h264:
|
|
return atoms["avcC"] as? Data
|
|
case .hevc:
|
|
return atoms["hvcC"] as? Data
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
}
|