rockchip的RK3399硬解碼總結


Android下可以直接使用MediaCodec,它更下一層是OpenMAX,再下一層是MPP。

Ubuntu下理論應該可以使用OpenMAX,但是個人對OpenMAX也沒有任何了解,所以只能直接使用MPP了。

開始接觸RK3399硬解碼的時候,服務商提供的資料里面提到gstreamer,就去死轉它了,浪費了兩星期時間,根本沒能把它運行起來,稍微修改了一下代碼就編譯過去了,但是使用gstreamer卻一直失敗,但是軟解是可以使用的,因為對gstreamer也不熟悉只能放棄,轉投Android。

Android下開發很簡單,解碼顯示都沒問題,但是一到使用OpenCV處理幀時就出現了重大問題,1080p的幀處理過程既然要達到100ms,跟蹤了一下,發現獲取得到的幀光拷貝到OpenCV的Mat就花了10ms,聽取別人的建議要使用JNI實現,自己覺得干脆直接回到Ubuntu平台徹底放棄Android。

分析MediaCodec后,對rockchip提供的MPP庫才有了新的理解,解碼功能迎刃而解!OpenCV 的C++效率果然高了不少,不到40ms做完相同的處理。

需要注意

1、Android下MediaCodec得到的幀,其提示是YUV420 NV21,而直接使用MPP解碼得到的幀卻是YUV NV12,實際上MediaCodec是錯的,硬件解碼返回的格式為YUV NV12;

2、返回幀是1920×1088的,而不是有效的1920×1080,一開始處理幀數據的時候,我就直接取1920×1080×3/2的數據,結果顯示怎么都是錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM