我正在将一些较大的视频编解码器移植到Renderscript中。我刚刚设法移植libx264并将其编码为原始H.264流。我通过使用CIL合并库并使全局变量为静态,以及移植Android自己的libc字符串和一些stdio函数(合并)以及使用预分配缓冲区的堆分配函数来实现这一点。Renderscript中的变量参数列表
现在我想要移植libvpx。这个库使用可变参数比libx264更集中的功能(基本上,我需要在libx264中注释的唯一部分是日志记录,剩下的部分只是配置正确,还有一些宏定义来替换它们)。
所以我的问题是任何人有任何提示如何在Renderscript中使用静态函数的可变参数列表? Google声明Renderscript符合C99规范,因此必须以某种方式进行。如果任何人有这样的黑客建议让我知道,如果它目前不支持。
/哈拉尔
谢谢,这是关于据我得到的也。似乎他们已经忘记处理__builtin_va_ *函数并输入* = {start,end,arg,list}。我知道这样做并不容易,因为它非常依赖目标。例如,__builtin_va_start将“...”之前的变量作为输入。如果这是在堆栈上,并且我们知道堆栈增长的方向,则可以使用它来获取指向第一个arg的指针,但这非常符合目标和编译器。通常一些参数通过寄存器传递。但我认为LLVM IR/bitcode有关于此的一些信息。 – 2012-04-24 15:23:20
是的。 RenderScript仍处于起步阶段。正如文档所指出的那样,预期的目标是让它在许多不同的处理器类型上运行,而这些处理器类型与目标相关的东西可能是一件非常困难的事情。谷歌指出,某些功能尚未包含在内,因为它阻止了他们保证代码在所有目标上运行。也许随着环境的增长,他们会增加这个功能,但至少现在看来,这是不可能的。 – Jared 2012-04-24 15:28:24