簡體   English   中英

MediaCodec作為解碼器,用於將解碼后的數據發送到兩個表面。 如何避免大量中繼數據復制?

[英]MediaCodec as decoder to send decoded data to two surfaces. How can we avoid big trunk data copy?

要配置解碼器,我們稱

decoder.configure(format,surface, crypto,flags)

然后,在

MediaCodec.Callback.onOutputBufferAvailable()

我們稱之為

codec.releaseOutputBuffer(index,System.nanoTime())

在該表面上繪制解碼的視頻,該視頻在configure()函數中傳遞。 我們是否有辦法將輸出緩沖區發送到另一個表面,該表面由編碼器從

MediaCodec.createInputSurface()

避免大量中繼數據復制。

沒有辦法做到這一點。 研究完Nvidia的Android源代碼和omx解碼器工具之后; 如果需要將數據發送到兩個表面,則必須使用制造商提供的本地DMA內存復制功能,或直接使用本地omx解碼器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM