我正在将一些较大的视频编解码器移植到Renderscript。我刚刚设法移植libx264并将其编码为原始H.264流。我通过使用CIL合并库并使全局变量静态,以及移植Androids自己的libc字符串和一些stdio函数(合并)以及使用预分配缓冲区的堆分配函数来实现这一点。
现在我想移植libvpx。这个库使用比libx264更多中心函数的变量参数(基本上我需要在libx264中注释掉的唯一部分是其余的配置正确的日志记录和一些宏定义来替换事物)。
所以我的问题是有没有人知道如何在Renderscript中使用静态函数的变量参数列表? Google表示Renderscript符合C99标准,因此必须以某种方式实现。如果有人对此有建议,请告诉我目前是否支持。
/哈拉尔德
答案 0 :(得分:0)
在SDK目录中,您可以发现标题stdarg.h实际上包含在./android-sdks/platform-tools/renderscript/clang-include/stdarg.h中。如果你添加
#include "stdarg.h"
用你正常的include语句,编译器似乎明白你在说什么。虽然我没有实际的方法来测试这个。
[编辑]我刚在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'