我正在尋找一個在不使用OpenMAX的情況下直接在Raspberry Pi上解碼視頻的示例。在不使用OpenMAX的情況下解碼Raspberry Pi中的視頻?
這解釋多媒體軟件的不同層:
有未在這裏示出的附加層時,「MMAL」層,它是(我相信)博通包裝周圍的OpenMAX 。 (如果不是,它將是一個OpenMAX備選方案,位於內核驅動程序之上)例如raspivid和raspistill是使用MMAL編寫的。
我想要一個視頻解碼的例子,其中輸入是原始的H.264,輸出是內存中的視頻或屏幕上的視頻。我想這樣做直接使用VCHIQ,而不是使用OpenMAX。 (主要用於性能和靈活性的原因)
這github上存儲庫:https://github.com/raspberrypi/userland/包含上面顯示的所有內容源(橙色和綠色盒;源VCHIQ本身上VCHIQ,也OpenGL和EGL實現的頂部的OpenMAX IL實現中, ...)。所以從理論上講,它應該足以開始。問題在於,即使熟悉OpenMAX和一般多媒體框架,如何使用它也是非常不明顯的。
例如:vchiq_bulk_transmit()似乎是人們用來將視頻發送到解碼器的功能。但如何初始化類型VCHIQ_SERVICE_HANDLE_T
的第一個參數?結果在哪裏,在幀緩衝區中,還是在結果句柄中,或...?
EDIT賞金可以通過使用vchiq中,API演練示出呼叫序列(即使不是一個工作示例)或指向足夠的文件寫這提供視頻解碼的一個工作實例來收集。一個工作的例子將得到一個沉重的額外賞金:)
是否有沒有使用OpenMAX的特殊原因? – drahnr
@drahnr:我想要一個可以立即獲取解碼數據的API。 OpenMAX IL有一堆緩衝區,對實現可能對它們做什麼沒有特別限制,它可能會緩衝多個幀,並且API中沒有辦法控制它。我已經看到相當慢的返回數據的實現(吞吐量仍然很高,數據只是延遲)。 ......我想,如果有人想要回答這個問題,那就說明如何使用OpenMAX在RPi上的1/60秒內獲得解碼幀,那也可以。:) –
這可能不是什麼你希望聽到,但是實現H264解碼器是非常具有挑戰性的,我不知道有一個靈魂可以免費編碼(即使你已經放置了500次的補償)。 – karlphillip