- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到 YUV 帧 (kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange),当从 CVPixelBufferRef 创建 CIImage 时,我得到:
initWithCVPixelBuffer failed because the CVPixelBufferRef is not non-IOSurface backed.
CVPixelBufferRef pixelBuffer;
size_t planeWidth[] = { width, width / 2 };
size_t planeHeight[] = { height, height / 2};
size_t planeBytesPerRow[] = { width, width / 2 };
CVReturn ret = CVPixelBufferCreateWithBytes(
kCFAllocatorDefault, width, height, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,
data, bytesPerRow, 0, 0, 0, &pixelBuffer
);
if (ret != kCVReturnSuccess)
{
NSLog(@"FAILED");
CVPixelBufferRelease(pixelBuffer);
return;
}
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
// fails
CIImage * image = [[CIImage alloc] initWithCVPixelBuffer:pixelBuffer];
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
CVPixelBufferRelease(pixelBuffer);
[image release];
最佳答案
我假设问题是:“为什么会出现此错误?”
要使 CVPixelBuffer IOSurface 得到支持,您需要在创建 CVPixelBuffer 时设置其属性。现在,您将“0”作为 CVPixelBufferCreateWithBytes 中倒数第二个参数传递。
在 CVPixelBufferCreate 中传递带有 kCVPixelBufferIOSurfacePropertiesKey 键和值为空字典的字典(使用默认的 IOSurface 选项,其他未记录)(因为您不能将 kCVPixelBufferIOSurfacePropertiesKey 与 CVPixelBufferCreateWithBytes 一起使用),将正确的字节复制到创建的 CVPixelBuffer (不要忘记字节对齐)。这就是你如何让它支持 IOSurface。
虽然我不确定它是否会因为像素格式而为您消除所有错误。我的理解是 GPU 必须能够以该像素格式保存纹理才能用作 IOSurfaces,尽管我不是 100% 确定。
注意:可以在 this SO answer 中找到 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange 的正确复制像素字节.
关于ios - initWithCVPixelBuffer 失败,因为 CVPixelBufferRef 不是非 IOSurface 支持的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168746/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我已更改 my.cnf。并检查sql_mode使用下面的命令 select @@global.sql_mode; 它说, 我也尝试过 set global sql_mode=''; SET sql_m
首先,我有一个结构,它有一个值和一个默认值 struct S { int a = 1; }; 当 gcc 和 clang 都是 non-const/non-constexpr 时,可以默认构造
我是一名优秀的程序员,十分优秀!