【问题标题】:Anyone know about VDADecoder? How to call the create function?有人知道 VDADecoder 吗?如何调用创建函数?
【发布时间】:2013-03-22 09:14:07
【问题描述】:

我阅读了 Apple 技术说明 https://developer.apple.com/library/mac/#technotes/tn2267/_index.html

我尝试像这样调用示例代码“CreateDecoder()”:

OSStatus stat = 0;
VDADecoder *decoder = NULL;
CFDataRef data;
char dataStr[] = "data";
data = CFDataCreate(kCFAllocatorDefault, (UInt8*)dataStr, 5);   
stat = CreateDecoder(320, 480, 'avc1', data, decoder);

但它返回状态码 -50,表示“操作无法完成”。
为什么?我应该如何正确称呼它?我想传递“数据”字符串是错误的,坚果我不知道实际上要传递什么......

有人知道解决办法吗?谢谢!

【问题讨论】:

    标签: objective-c xcode macos video h.264


    【解决方案1】:

    根据我对技术说明的阅读,您不能只为 CreateDecoder 的 inAVCCData 参数(在您的情况下为字符串“data”)发送任何随机数据流。查看描述解码器配置键的技术说明部分:

    kVDADecoderConfiguration_avcCData - 包含 avcC 数据的 CFDataRef 来自 H.264 比特流。在 QuickTime 电影文件中,这是相同的 作为avcC原子存储在图像描述中的数据。

    这是您需要在解码器设置期间检索和传递的传输文件的一个组件。

    【讨论】:

    • 我明白了。我相信我应该阅读一些关于 H.264 的介绍,因为我什至不知道 avcC 是什么。但现在我只想知道 VDADecoder 是否可用。我可以将“数据”更改为有效的 avcC 数据并尝试初始化它吗?在哪里可以找到有效的 avcC 数据示例?
    • 你想知道加速框架是否存在吗?根据技术说明,如果是 Mac OS X 10.6.3 或更高版本,则存在该框架。您是否尝试查询当前的硬件是否支持硬件加速?如果不是,看起来 VDADecoderCreate() 将返回 kVDADecoderHardwareNotSupportedErr。但是你必须给它一个有效的 avcC atom。
    • 我想检查硬件是否支持加速。谢谢,您告诉了关键字,我找到了另一个答案。我会研究它:answerpot.com/…
    • 如果你想检查硬件是否支持加速,我想你可以伪造一个 avcC atom 并将其发送到函数中。看起来你已经找到了权威的原子细节。或者,您可以尝试从现有的 .mp4 文件中提取一个(查找“avcC”)并将其植入源代码中。使用它通过 VDADecoderCreate() 查询设施,并记住事后正确释放资源。
    • 好的,我会试试的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多