1

我正在将一些较大的视频编解码器移植到 Renderscript。我刚刚设法移植 libx264 并将其编码为原始 H.264 流。我通过使用 CIL 合并库并使全局变量静态化,以及移植 Android 自己的 libc 字符串和一些 stdio 函数(合并)和使用预分配缓冲区的堆分配函数来做到这一点。

现在我想移植 libvpx。这个库对比 libx264 更多的中心函数使用可变参数(基本上我需要在 libx264 中注释掉的唯一部分是日志记录,其余的只是配置正确和一些宏定义来替换东西)。

所以我的问题是,有人知道如何在 Renderscript 中为静态函数使用变量参数列表吗?Google 声明 Renderscript 符合 C99,因此它必须以某种方式成为可能。如果有人对此有建议,请告诉我当前是否不支持。

/哈拉尔

4

1 回答 1

0

在您的 SDK 目录中,您可以发现头文件 stdarg.h 实际上包含在 ./android-sdks/platform-tools/renderscript/clang-include/stdarg.h 中。如果你添加

#include "stdarg.h" 

使用正常的包含语句,编译器似乎可以理解您在说什么。不过,除了编译之外,我没有实际的测试方法。

[编辑] 我刚刚在 Windows 中收到“llvm-rs-cc.exe 已停止工作”消息。来自控制台的堆栈转储显示在解析我添加的示例函数以查看 varargs 是否会编译时失败。这是堆栈转储。编译器每次都会崩溃。我的猜测是理论上支持它,但编译器没有正确处理它。

Stack dump:
0.  engine.rs:882:32: current parser token ';'
1.  engine.rs:876:1: parsing function body 'average'
2.  engine.rs:876:1: in compound statement ('{}')

删除函数但保留标头包含后,以下内容进入控制台(没有崩溃):

C:\android-sdks\platform-tools\renderscript\clang-include\stdarg.h:30:9: error: unknown type name '__builtin_va_list'
C:\android-sdks\platform-tools\renderscript\clang-include\stdarg.h:48:9: error: unknown type name '__builtin_va_list'
于 2012-04-24T14:43:59.063 回答