gpt4 book ai didi

ios - 如何列出所有 OpenGL ES 兼容的 PixelBuffer 格式

转载 作者:行者123 更新时间:2023-11-28 19:54:38 26 4
gpt4 key购买 nike

有没有办法列出 CVPixelBufferCreate() 的所有 CVPixelBuffer 格式,当与 CVOpenGLESTextureCacheCreateTextureFromImage()?

This列出所有 CVPixelBufferCreate() 支持的CVPixelBuffer 格式,但不保证CVOpenGLESTextureCacheCreateTextureFromImage() 不会返回上面的错误。我想我想要的列表应该是这个列表的一个子集。

最佳答案

基于 the answer from Adi Shavit above ,这是一个完整的代码片段 (Objective-C),您可以使用它来打印所有当前的 OpenGL ES 兼容像素格式:

+ (void)load {
@autoreleasepool {
printf("Core Video Supported Pixel Format Types:\n");

CFArrayRef pixelFormatDescriptionsArray = CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes(kCFAllocatorDefault);
for (CFIndex i = 0; i < CFArrayGetCount(pixelFormatDescriptionsArray); i++) {
CFNumberRef pixelFormatFourCC = (CFNumberRef)CFArrayGetValueAtIndex(pixelFormatDescriptionsArray, i);

if (pixelFormatFourCC != NULL) {
UInt32 value;

CFNumberGetValue(pixelFormatFourCC, kCFNumberSInt32Type, &value);

NSString * pixelFormat;
if (value <= 0x28) {
pixelFormat = [NSString stringWithFormat:@"Core Video Pixel Format Type 0x%02x", (unsigned int)value];
} else {
pixelFormat = [NSString stringWithFormat:@"Core Video Pixel Format Type (FourCC) %c%c%c%c", (char)(value >> 24), (char)(value >> 16), (char)(value >> 8), (char)value];
}

CFDictionaryRef desc = CVPixelFormatDescriptionCreateWithPixelFormatType(kCFAllocatorDefault, (OSType)value);
CFBooleanRef OpenGLESCompatibility = (CFBooleanRef)CFDictionaryGetValue(desc, kCVPixelFormatOpenGLESCompatibility);
printf("%s: Compatible with OpenGL ES: %s\n", pixelFormat.UTF8String, (OpenGLESCompatibility != nil && CFBooleanGetValue(OpenGLESCompatibility)) ? "YES" : "NO");
}
}

printf("End Core Video Supported Pixel Format Types.\n");
}
}

您可以将此代码段放在 Objective-C 类别或类中的任何位置,以打印哪些像素格式兼容,哪些不兼容。为了完整起见,以下是从 iOS 10.2.1 开始目前与 OpenGL ES 兼容的所有像素格式:

  • L565
  • 5551
  • L555
  • 2vuy
  • yuvs
  • yuvf
  • L008
  • L016
  • 2C08
  • 2C16
  • BGRA
  • 420v
  • 420f
  • 420e
  • 411v
  • 411f
  • 422v
  • 422f
  • 444v
  • 444f
  • L00h
  • L00f
  • 2C0h
  • 2C0f
  • RGhA
  • RGfA

关于ios - 如何列出所有 OpenGL ES 兼容的 PixelBuffer 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27149380/

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