CVOpenGLESTextureCacheCreateTextureFromImage 返回 -6683(kCVReturnPixelBufferNotOpenGLCompatible)

2023-11-23

我已经从视频帧中分别​​提取 Y U V 数据并将它们保存在data[0],data[1],data[2];框架尺寸为640*480;现在我创建了pixelBuffer如下:

void *pYUV[3] = {data[0], data[1], data[2]};
size_t planeWidth = {640, 320, 320};
size_t planeHeight = {480, 240, 240};
size_t planeBytesPerRow = {640, 320, 320};
CVReturn renturn = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault,
                                   640, 
                                   480,
                                   kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, 
                                   nil,
                                   nil,
                                   3, 
                                   pYUV,
                                   planeWidth,
                                   planeHeight, 
                                   planeBytesPerRow, 
                                   nil,
                                   nil, nil, &_pixelBuffer);
CVPixelBufferLockBaseAddress(_pixelBuffer, 0);
CVPixelBufferRetain(_pixelBuffer);
    // Periodic texture cache flush every frame
CVOpenGLESTextureCacheFlush(_textureCache, 0);

// The Buffer cannot be used with OpenGL as either its size, pixelformat or attributes are not supported by OpenGL
 glActiveTexture(GL_TEXTURE0);
CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, 
                                                            _textureCache,
                                                            _pixelBuffer,
                                                            NULL,
                                                            GL_TEXTURE_2D,
                                                            GL_LUMINANCE,
                                                            im.width,
                                                            im.height,
                                                            GL_LUMINANCE,
                                                            GL_UNSIGNED_BYTE,
                                                            0,
                                                            &_yTexture);

if (!_yTexture || err) {
    NSLog(@"CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err);  
    return;
}
glBindTexture(CVOpenGLESTextureGetTarget(_yTexture), CVOpenGLESTextureGetName(_yTexture));
 CVPixelBufferUnlockBaseAddress(_pixelBuffer, 0);

但错误是-6638,文档只是指出“由于不支持的缓冲区大小、像素格式或属性,像素缓冲区与 OpenGL 不兼容”。这对我没有多大帮助。

我该如何修复它?


您的源图像/视频帧的分辨率是否为 2 的幂?如果没有,则必须在创建纹理之前调整其大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVOpenGLESTextureCacheCreateTextureFromImage 返回 -6683(kCVReturnPixelBufferNotOpenGLCompatible) 的相关文章

随机推荐

  • 为什么 numpy.array() 有时很慢?

    我正在使用 numpy array 函数从列表创建 numpy float64 ndarrays 我注意到 当列表不包含任何内容或提供列表列表时 速度非常慢 下面是一些带有时间的例子 有明显的解决方法 但为什么这么慢 None 列表的示例
  • Python TypeError:“str”对象不可为类调用

    请帮助我理解这一点 我创建了一个非常简单的程序来尝试理解类 class One object def init self class2 self name Amy self age 21 self class2 class2 def gre
  • 动画 UIImageView 色调

    如同上一个问题 我想将任意颜色的色调应用于任意图像 UIImageView 然而 我希望色调在 N 秒的时间内逐渐消失 以产生 脉冲 效果 我将每 M 秒触发一次脉冲 虽然我认为我可以使用一个简单的解决方案NSTimer要改变色调 我想我可
  • 在 ImageVIew 上绘制矩形

    我想实现一个裁剪功能 我想在 imageView 上有一个小矩形 矩形应该是静态的 我想移动图像并在矩形区域内裁剪图像 然后获取矩形内的图像作为裁剪图像 我尝试使用位图作为参数创建画布 但它不起作用 我已经尝试了很多方法来搜索如何做到这一点
  • 如何在 Android 中的 Google Place PlacePicker 中设置“类型”?

    在新的 Google Places API 中 它们附带了一项名为 PlacePicker 的新功能 从他们拥有的地点列表 地图中选择一个地点是一项简单的活动 在 Places API 中 我们可以提供一个类型列表 以仅接收这些特定类型的地
  • Android Studio - 错误:找不到资源drawable/abc_ic_ab_back_mtrl_am_alpha(又名com.instacoin:drawable/abc_ic_ab_back_mtrl_am_alpha)

    我收到这些错误 错误 资源可绘制 abc ic ab back mtrl am alpha 又名 com instacoin drawable abc ic ab back mtrl am alpha 未找到 错误 链接文件资源失败 错误
  • 在命令行上编译 C++Builder 项目

    有没有办法编译一个C Builder从命令行项目 特定的构建配置 就像是 CommandToBuild ProjectNameToBuild BuildConfiguration Use msbuild project cbproj p c
  • 实体框架异常:发现不明确的匹配

    我收到错误 发现不明确的匹配 这段代码放在 Add上 var db new NexusEntities db Reports Add mmr 从谷歌搜索来看 如果有两个类具有相同的名称但位于不同的命名空间中 这似乎是一个问题 据我所知 情况
  • 使用jquery和selenium IDE 1.0.8获取元素

    我正在尝试使用 jquery 和 Selenium IDe 1 0 8 获取元素 td storeValue td td result find img filter alt quot NameOfPhoto quot eq 0 td td
  • 将字母转换为数字

    我有一堆字母 但我一生都无法弄清楚如何将它们转换为相应的数字 letters 1 4 有没有一个功能 numbers e 返回 5 或者用户定义的东西 即1994 我想将所有 26 个字母转换为特定值 我不知道 预建 功能 但这样的映射很容
  • 在 iOS 应用程序中实施 OAuth 1.0

    我一整天都在为这件事伤透了脑筋 我希望将我的 iOS 应用程序与 Withings api 集成 它使用 OAuth 1 0 我似乎无法完全理解如何实现它 我一直在下载多个 OAuth 框架 MPOAuth gtm oauth ssoaut
  • JavaScript 表操作

    我有一张包含一列和大约十行的表格 第一列包含以文本作为行标题的行 标题 1 标题 2 第二列包含供用户输入数据的字段 文本框 and 复选框 我想在顶部有一个标记为 的按钮添新 并让它创建第三列 其字段与第一列相同 如果用户再次单击它 它将
  • 在 bash 中并行设置变量

    这是一个示例程序 bin bash for x in 1 5 do output x echo x done wait for x in 1 5 do echo output x done 我希望它能够运行并打印出分配给每个成员的值outp
  • 将 Google 云客户端库添加到 Play 2.5 时出现 ChannelException

    这是一些堆栈跟踪 io netty channel ChannelException Unable to create Channel from class class io netty channel socket nio NioServ
  • 使用 JSON 绘制 google 图表

    如果它是一个单独的 JSON 文件 我如何检索和使用 google 图表的数据集 我尝试了 jQuery getJSON 但无法让它工作 Google Viz 应该使用 JSON 来绘制条形图 有没有原生的谷歌API方式 或者我可以找到一种
  • Xcode NSManagedObject 子类在标记为非可选时包含选项

    我有一个名为 Film 的核心数据实体 它具有属性标题和日期 我注意到生成的 NSManagedObject 子类包含可选的 NSManaged 属性 即使我在核心数据检查器中将这些属性标记为非可选 我可以手动将其更改为非可选属性 还是将其
  • 错误:GooglePlayServicesClient 包不存在

    我已经使用 android studio 添加了登录活动到我的应用程序 但是我遇到了这些错误 Error 11 37 error cannot find symbol class GooglePlayServicesClient Error
  • 为什么我的原始类型参数方法不覆盖包装器类型参数超类方法?

    public class WrapperClasses void overloadedMethod Number N System out println Number Class Type void overloadedMethod Do
  • IOS 构建中的重复符号

    我正在尝试在 IOS 上运行我的 Flutter 应用程序 在 Android 上它可以正常工作 但是当我尝试运行它时出现以下错误 Launching lib main dart on iPhone 11 Pro Max in debug
  • CVOpenGLESTextureCacheCreateTextureFromImage 返回 -6683(kCVReturnPixelBufferNotOpenGLCompatible)

    我已经从视频帧中分别 提取 Y U V 数据并将它们保存在data 0 data 1 data 2 框架尺寸为640 480 现在我创建了pixelBuffer如下 void pYUV 3 data 0 data 1 data 2 size