dm8148 HDVPSS 知識簡介
說明:部分內容摘自ti官網論壇
1)hdvpss貌似提供了一些介面API用來配置DM816x的暫存器,但是又把各種板卡型別至於其中,甚至連視訊解碼晶片驅動都放在裡邊了,感覺限制非常大,使用者要怎麼根據自己的板卡使用這些東西,如果是增加新的晶片驅動,會涉及很多更改,遇到這種情況,使用者該怎麼開放呢?
回答:關於問題1這裡有歷史的原因在裡面,最早的時候AD的驅動都是在M3上執行的就是你現在在hdvpss驅動中看到的AD的驅動,這樣架構的問題就是修改需要了解M3的程式碼,對於大家來說難度增加了.為了解決這個問題DVR RDK後續將AD的驅動移到A8,這樣就可以不需要了解M3就可以進行開發了,對於capturelink可以直接定義相應的格式,保證與AD介面對等即可.
2)hdvpss 編譯出來的檔案到底是什麼東西,怎麼在應用程式中怎麼使用呢?應為在Makefile沒有看到,或許有,但是沒有找到,makefile裡確實有編譯hdvpss的,但是應為不清楚軟體架構,不明白編譯hdvpss有什麼用?
回答:
HDVPSS是視訊處理子系統(Video Process Sub-System),針對晶片中整合的VPSS硬體協處理器,編譯出來的是VPSS的驅動庫,供RDK層呼叫其介面以實現視訊資料在VPSS協處理器中的處理,比如採集、縮放、顯示。所以可以理解為RDK和硬體協處理器之間的驅動層。
3)看了下dvr_rdk\mcfw\src_bios6\links_m3vpss程式碼,好像也是使用hdvpss 介面(FVID2_)是不是說這部分就是在hdvpss執行的驅動呢?使用者如果對Vport配置需要修改,只需要修改這部分程式碼,而無需去更改ti_tools\hdvpss\hdvpss_01_00_01_37_patched\packages下的程式碼呢?
答覆:可以這麼理解,呼叫了FVID2介面的部分就是在HDVPSS執行的。不建議客戶自己修改hdvpss目錄下的任何檔案,可以向TI技術支援提出你們具體的需求,大部分應該可以通過RDK配置實現。如果是HDVPSS驅動中還不支援的功能,TI會在後續版本中新增。
4)關於dvr_rdk\mcfw\src_bios6\links_m3vpss編譯後出來的是什麼檔案呢,最後也是通過fw_load.out載入麼?
答覆:編譯出來的是在HDVPSS媒體控制器(m3)中執行的firmware,是通過fw_load.out載入的,可以看load.sh指令碼獲得更詳細資訊。
5)dvr_rdk_fw_m3vpss.xem3 是怎麼生成的呢,裡面大體實現了一些什麼功能?
答覆: 裡面主要包含了RDK中vpss link 層的程式碼以及HDVPSS驅動,在RDK中可以看到在links_m3vpss目錄下的功能都是在這裡實現的。
6)基於hdvpss 介面(FVID2_)編寫的程式碼怎麼除錯呢?
答覆:Rules.make裡面把dvr_rdk_fw_m3vpss.xem3編譯成debug模式,通過模擬器可以除錯。
7)HDVCIP2是什麼? IVAHD 是什麼?
hdvcip:high definition video and image coProcessor;
8)iss和hdvpss (High Definition Video Processing Subsystem)區別?
答覆:用cameralink的話,就是呼叫iss的東西,cameralink是和ISS相關的,capturelink是和VPSS相關的,這是我的理解;
iss是直接接攝像頭,vpss需要轉換晶片像TVP5158等才能和攝像頭相連;
iss:imaging sub-system
hdvpss: high definition video processing subsystem;
TVP5158是什麼?視訊解碼晶片;
9)FVID2 是什麼?
FVID2 are the set of APIs or framework specifically designed for the video class of devices.
10)FVID2 API
10.1)FVID2_init
Int32 FVID2_init(Ptr args);
Int32 FVID2_deInit(Ptr args);
10.2)FVID2_create
FVID2_Handle FVID2_create(UInt32 drvId,UInt32 instanceId,Ptr createArgs,Ptr createStatusArgs,const FVID2_CbParams *cbParams);
10.3) FVID2_start
Int32 FVID2_start(FVID2_Handle handle, Ptr cmdArgs)
10.4) FVID2_stop
Int32 FVID2_stop(FVID2_Handle handle, Ptr cmdArgs)
10.5) FVID2_dequeue
Int32 FVID2_dequeue(FVID2_Handle handle,FVID2_FrameList *frameList,UInt32 streamId,UInt32 timeout);
10.6) FVID2_queue
Int32 FVID2_queue(FVID2_Handle handle,FVID2_FrameList *frameList,UInt32 streamId);
10.7) FVID2_control
Int32 FVID2_control(FVID2_Handle handle,UInt32 cmd,Ptr cmdArgs,Ptr cmdStatusArgs);
10.8) FVID2_delete
Int32 FVID2_delete ( FVID2_Handle handle, Ptr deleteArgs)
10.9) FVID2_setFormat
Int32 FVID2_setFormat(FVID2_Handle handle, FVID2_Format *fmt)
10.10)FVID2_getFormat
Int32 FVID2_getFormat(FVID2_Handle handle, FVID2_Format *fmt)
10.11)FVID2 ProcessFrames
Int32 FVID2_processFrames ( FVID2_Handle handle, FVID2_ProcessList * processList)
10.12)FVID2_getProcessedFrames
Int32 FVID2_getProcessedFrames(FVID2_Handle handle,FVID2_ProcessList *processList,UInt32 timeout)
10.13)FVID2_getStandardInfo
Int32 FVID2_getStandardInfo(FVID2_StandardInfo *stdInfo)
callback:
A user callback can be registered during driver create which is then called by the driver whenever data is available at
any of the channels, streams associated with the driver. User would typicall set a semaphore to wake up a task. The
woken up task will then call dequeue API to get the newly captured frames. Dequeue should be called for every
stream associated with the driver to get the captured frames, since the callback just indicates there is data but the data
could be in any of the streams that are valid for the driver instance.
FVID2_CbParams
FVID2_Format
FVID2_SliceInfo
FVID2_Frame
FVID2 FrameList
FVID2_ProcessList
相關文章
- CSS基礎知識簡介CSS
- 前端跨域知識簡介前端跨域
- Java字元編碼知識簡介(zt)Java字元
- 【Python基礎知識】Django框架簡介PythonDjango框架
- AMBA匯流排基礎知識簡介
- 圖片壓縮知識梳理(5) VectorDrawable 簡介
- Python 入門【預備知識】---- Python 簡介Python
- Identity Server 4 預備知識 -- OAuth 2.0 簡介IDEServerOAuth
- Windows XP 中Internet 基礎知識簡介(轉)Windows
- Scala簡介及該注意的基本小知識點
- Python基礎入門知識點——if 語句簡介Python
- 資料庫安全基礎入門知識簡介(轉)資料庫
- Identity Server 4 預備知識 -- OpenID Connect 簡介IDEServer
- 有關 Oracle 的架構的基礎知識簡介(轉)Oracle架構
- Epub基礎知識介紹
- Shell指令碼知識簡述指令碼
- jquery主要知識點(精簡)jQuery
- Linux簡單知識點Linux
- 簡單介紹一些關於 Kaggle 比賽的知識
- 資料庫安全知識介紹資料庫
- Oracle database 補丁知識介紹OracleDatabase
- shiro入門知識介紹
- JDE 的掃盲知識介紹。。。
- 揭開知識庫問答KB-QA的面紗1·簡介篇
- HTML簡單知識的總結HTML
- memcached快取知識簡單梳理快取
- Web 前端知識體系精簡Web前端
- Web前端知識體系精簡Web前端
- 資料庫基礎知識介紹!資料庫
- 區塊鏈入門知識介紹!區塊鏈
- [推薦]WebService開發知識介紹Web
- 知識圖譜技術的新成果—KGB知識圖譜介紹
- 移動端基礎知識 (Android)-- adb 簡介 [第五期]Android
- 知識篇:新一代的資料處理平臺Hadoop簡介Hadoop
- .net 知新:【4】NuGet簡介和使用
- 簡述Linux chmod命令的知識Linux
- Vue知識精簡總結-更新中Vue
- linux-gcc簡要知識點 **LinuxGC