首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查iOS设备芯片是A9还是A10?

如何检查iOS设备芯片是A9还是A10?
EN

Stack Overflow用户
提问于 2017-08-10 09:49:19
回答 3查看 1.6K关注 0票数 3

苹果公司宣布了对运行A10 11的iOS设备的编码支持,以及对运行iOS 11的A9设备的HEVC解码支持。

在创建这些硬件编解码器之前,如何检查当前设备是否支持该功能?

芯片是什么?A8、A9或A10没有硬编码模型。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-10 10:01:27

不要检查特定的SOC,检查实际需要的功能。您需要VideoToolbox调用VTIsHardwareDecodeSupported,传递kCMVideoCodeType_HEVC键:

代码语言:javascript
运行
复制
VTIsHardwareDecodeSupported(kCMVideoCodeType_HEVC)

然而,如果您需要的话,iOS会为HEVC提供软件解码器备份。

编辑:啊,对不起-我看错了,以为你在说解码。对于编码,您可以使用VTCopySupportedPropertyDictionaryForEncoder获取所需的内容,使用kCMVideoCodeType_HEVC并指定要编码的参数。我不知道iOS是否有一个用于HEVC的后备软件编码器,所以这可能会给出错误的结果。

票数 5
EN

Stack Overflow用户

发布于 2018-05-28 21:45:09

对于编码器,我无法找到一种正式的方法,但这似乎适用于我的测试:

代码语言:javascript
运行
复制
#import <AVFoundation/AVFoundation.h>
#import <VideoToolbox/VideoToolbox.h>


- (BOOL)videoCodecTypeHevcIsSuppored {
    if (@available(iOS 11, *)) {
        CFMutableDictionaryRef encoderSpecification = CFDictionaryCreateMutable( NULL,0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
        CFDictionarySetValue(encoderSpecification, kVTCompressionPropertyKey_ProfileLevel, kVTProfileLevel_HEVC_Main_AutoLevel);
        CFDictionarySetValue(encoderSpecification, kVTCompressionPropertyKey_RealTime, kCFBooleanTrue);
        OSStatus status = VTCopySupportedPropertyDictionaryForEncoder(3840, 2160, kCMVideoCodecType_HEVC, encoderSpecification, nil, nil);
        if (status == kVTCouldNotFindVideoEncoderErr) {
            return NO;
        }
        return YES;
    }
    return NO;
}
票数 3
EN

Stack Overflow用户

发布于 2018-06-22 14:43:50

坎索在斯威夫特4中的伟大回答。

假设我们只针对iOS11或更高版本,并添加了额外的检查:

代码语言:javascript
运行
复制
import AVFoundation
import VideoToolbox

@available (iOS 11, *)
func isHEVCHardwareEncodingSupported() -> Bool {
    let encoderSpecDict : [String : Any] =
        [kVTCompressionPropertyKey_ProfileLevel as String : kVTProfileLevel_HEVC_Main_AutoLevel,
         kVTCompressionPropertyKey_RealTime as String : true]

    let status = VTCopySupportedPropertyDictionaryForEncoder(3840, 2160,
                                                             kCMVideoCodecType_HEVC,
                                                             encoderSpecDict as CFDictionary,
                                                             nil, nil)
    if status == kVTCouldNotFindVideoEncoderErr {
        return false
    }

    if status != noErr {
        return false
    }

    return true
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45610236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档