gpt4 book ai didi

ios - 具有kCVPixelBufferOpenGLESCompatibilityKey的AVCaptureVideoDataOutput videoSettings

转载 作者:行者123 更新时间:2023-12-01 19:53:16 27 4
gpt4 key购买 nike

我正在尝试从相机获取与openGL兼容的缓冲区。
我正在像这样设置AVCaptureVideoDataOutput:

_videoDataOutput = [[AVCaptureVideoDataOutput alloc] init];
[_videoDataOutput setSampleBufferDelegate:self queue:_sessionQueue];
// NSArray *pixelsFormats = _videoDataOutput.availableVideoCVPixelFormatTypes;
[_videoDataOutput setVideoSettings:@{
(NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA),
// Flag to enable emitting openGL frames from camera.
(NSString *)kCVPixelBufferOpenGLESCompatibilityKey : @(YES)
}];
_videoDataOutput.alwaysDiscardsLateVideoFrames = YES;

但是我得到这个错误:
[AVCaptureVideoDataOutput setVideoSettings:] - videoSettings dictionary contains one or more unsupported (ignored) keys: (
OpenGLESCompatibility
)

我可以将kCVPixelBufferOpenGLESCompatibilityKey与AVCaptureVideoDataOutput一起使用吗?
如果不是,从相机发射与openGL兼容的帧的最佳方法是什么?

我已经考虑过从CVImageBufferRef创建CVOpenGLESTextureRef,但这需要从CPU到GPU的缓冲区副本。我正在努力避免这种情况。

注意:我尝试从设置中删除kCVPixelFormatType_32BGRA。但是仍然出现相同的错误。

最佳答案

您可能还需要添加一个空的kCVPixelBufferIOSurfacePropertiesKey

(NSString*) kCVPixelBufferIOSurfacePropertiesKey : @{}

如所提到的 here

但是我不认为您应该回避 CVOpenGLESTexture。在iOS上,GPU和CPU内存是统一的,因此纹理缓存副本(可能)是免费的!

关于ios - 具有kCVPixelBufferOpenGLESCompatibilityKey的AVCaptureVideoDataOutput videoSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com