海思平台OSD的实现(2)
目錄
- 一、字庫字符實現OSD
- 1、原理講解
- 2、代碼框架分析
- 二、字庫字符實現OSD源碼解析
一、字庫字符實現OSD
1、原理講解
??位圖填充支持兩種實現方式:其一、用戶通過HI_MPI_RGN_SetBitMap 接口將位圖數據拷貝至內部顯示畫布;其二、用戶通過 HI_MPI_RGN_GetCanvasInfo 獲取內部備份顯示畫布的地址,直接對該地址數據進行更新,然后調用HI_MPI_RGN_UpdateCanvas 接口將備份顯示畫布更新為待顯示畫布,達到實現更新位圖數據的目的。
??在上篇文章中我們使用了方式二,并且直接使用bmp圖片去顯示,在這篇文章中我們將使用方式一,我們將使用海思提供的字模庫先生成bmp圖片數據再去顯示。
??實現的功能效果為:
2、代碼框架分析
HH_OSD_Init //進行一些初始化并實現內容的顯示 HH_OSD_SetOsdPosDefault //設置osd的坐標的,使用默認的位置HH_OSD_GetOrg //獲取進行顯示位置的的坐標HH_OSD_GetColor //獲取顏色HH_OSD_GetTitle //獲取要顯示的內容HI_Create_Osd //創建一個顯示logo,實例化一個用于顯示的logo變量HI_OSD_Build //創建osd結構體,創建位圖,直接顯示HI_OSD_Parse_OsdTitle //解析osd字符,更新字符相關屬性HI_OSD_Get_BmpSize //根據ip_config配置的視頻源的大小,來配置pOsdLogo中記錄的OSD的字母的寬高、x,y坐標等HI_Create_Osd_Reg //首先申請了OSD的bmp圖片的內存buf,然后調用海思的RGN API來初始化overlayHI_MPI_RGN_Create //創建osdHI_MPI_RGN_AttachToChn //將osd與venc的通道綁定HI_OSD_Create_Bitmap根據pOsdLogo記錄的OSD要顯示的內容,來生成bmp圖片數據,然后調用HI_MPI_RGN_SetBitMap將這張BMP圖片顯示到OSD中HI_OSD_CreateBMP // 用字庫來生成bmp文件的HI_MPI_RGN_SetBitMap // 真正設置osd顯示的APIHI_OSD_Set_Show //根據傳參show為true或者false來開啟或關閉OSD的顯示HI_MPI_RGN_GetDisplayAttr //獲取區域的通道顯示屬性HI_MPI_RGN_SetDisplayAttr //設置區域的通道顯示屬性 HH_OSD_All_Refresh //手動去刷新顯示的內容,實現時間的變化HH_OSD_AllTime_Refresh HH_OSD_ChnTime_Refresh HH_OSD_ChName_RefreshHH_OSD_GetLogoHandleHH_OSD_GetTitle //獲取顯示的內容HI_OSD_Parse_OsdTitle 解析osd的字符,更新字符相關屬性HI_OSD_Get_BmpSizeHI_OSD_Create_BitmapHI_OSD_CreateBMPHI_MPI_RGN_SetBitMapHH_OSD_Show_RefreshHH_OSD_GetLogoHandleHH_OSD_GetShowHI_OSD_Set_Show //根據傳參show為true或者false來開啟或關閉OSD的顯示HH_OSD_AllName_Refresh總結:字庫字符實現OSD的本質原理是:先由字庫生成對應文字內容的bmp文件,然后將bmp文件顯示在osd中。
二、字庫字符實現OSD源碼解析
(1)主要文件
hh_osd.c處于hh_osd_api.c的上層,從各自文件中的函數名也可以看出,hh_osd.c中的以HH_開頭,而hh_osd_api.c以HI_開頭
(2)如何在字庫中查取字模,使用漢字區位碼(區碼+位碼,構成一個x,y坐標),漢字區位碼是為每個漢字編一個唯一的代碼,以便計算機辨認、接收和處理。
本部分內容比較偏門和晦澀,只有專門去做這塊內容的人才會研究的比較深,我們做到能大致看懂框架和簡單使用即可。
注:本文章參考了《朱老師物聯網大講堂》課程筆記,并結合了自己的實際開發經歷以及網上他人的技術文章,綜合整理得到。如有侵權,聯系刪除!水平有限,歡迎各位在評論區交流。
總結
以上是生活随笔為你收集整理的海思平台OSD的实现(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数论——质数与约数
- 下一篇: 又是没有专业技术的一篇嘿嘿!