我正在將一些較大的視頻編解碼器移植到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