我正在开发一个使用压缩技术实时传输压缩AVCaptureSession
输出的应用程序。Video ToolBox
压缩会话的宽度和高度将根据最终用户分辨率设置动态更改。现在,我正在重新配置编码器以适应新的尺寸。但是重新配置需要一秒钟左右的时间,并且在此期间捕获的帧被跳过,因为我不希望在传输帧时出现任何时间延迟。
据我所知,唯一设置编码器宽度和高度的地方是创建一个OSStatus VTCompressionSessionCreate(CFAllocatorRef allocator, int32_t width, int32_t height, CMVideoCodecType codecType, CFDictionaryRef encoderSpecification, CFDictionaryRef sourceImageBufferAttributes, CFAllocatorRef compressedDataAllocator, VTCompressionOutputCallback outputCallback, void *outputCallbackRefCon, VTCompressionSessionRef _Nullable *compressionSessionOut);
有没有办法在VTCompressionSessionRef
不重新创建的情况下更新它的大小?