VideoToolbox не создает сеанс кодировщика для mpeg4 в Swift 3.0
Я уловил проблему создания сеанса сжатия для кодера MPEG4 с VideoToolbox после миграции на Swift 3.0. До миграции все работало нормально.
Вот мой обновленный код:
let imageAttributes:[NSString: AnyObject] = [
kCVPixelBufferPixelFormatTypeKey: Int(colorScheme) as AnyObject,
kCVPixelBufferIOSurfacePropertiesKey: [:] as AnyObject,
kCVPixelBufferOpenGLESCompatibilityKey: true as AnyObject,
kCVPixelBufferWidthKey: outputWidth as AnyObject,
kCVPixelBufferHeightKey: outputHeight as AnyObject,
]
let imgeAttributesDictionary: CFDictionary = imageAttributes as CFDictionary
let encoderType = kCMVideoCodecType_MPEG4Video
var status = VTCompressionSessionCreate(kCFAllocatorDefault, Int32(outputWidth), Int32(outputHeight), encoderType, nil, imgeAttributesDictionary, nil, { (outputCallbackRefCon: UnsafeMutableRawPointer?, sourceFrameRefCon: UnsafeMutableRawPointer?, status: OSStatus, infoFlags: VTEncodeInfoFlags, sampleBuffer: CMSampleBuffer?) -> Void in
VideoEncoder.compressionCallback(outputCallbackRefCon: outputCallbackRefCon, sourceFrameRefCon: sourceFrameRefCon, status: status, infoFlags: infoFlags, sampleBuffer: sampleBuffer)
}, nil, &session)
И каждый раз, когда я получаю ошибку состояния -12908 (kVTCouldNotFindVideoEncoderErr). Интересно то, что такая же конфигурация, но с
let encoderType = kCMVideoCodecType_H264
работает отлично.
Кто-нибудь знает, что здесь происходит?
Это мой связанный вопрос об обновлении кода для конфигурации кодера до Swift 3.0