DM6446 OSD
生活随笔
收集整理的這篇文章主要介紹了
DM6446 OSD
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
DM6446 OSD
TMS320DM6446支持背景窗顏色,兩個(gè)視頻窗口,兩個(gè)OSD窗口,一個(gè)指針(cursor)窗口。它們以遞增的順序排列:一個(gè)特有的第二個(gè)OSD窗口(OSDWIN1)可以用來(lái)配置成屬性窗口來(lái)控制視頻窗口和第一個(gè)OSD窗口(OSDWIN0)的混合(如透明度)。因?yàn)椤癮lpha”混合功能是OSDWIN1最通用的功能,所以以下就主要討論第一個(gè)OSD窗口(OSDWIN0)用來(lái)顯示OSD圖片,以及第二個(gè)OSD窗口(OSDWIN1)用作屬性窗口來(lái)控制混合。
OSD窗口可以配置成接收RGB565或者bitmap數(shù)據(jù)。一般情況,RGB,BITMAP和原始圖像數(shù)據(jù)格式(raw data format)在技術(shù)行業(yè)是可以交換的。如果每個(gè)像素使用的bit數(shù)一樣,那么這些格式就一樣。在達(dá)芬奇處理器上卻不是這種情況。它們提供了配置成RGB565 或者 bitmap的選項(xiàng)。當(dāng)OSD窗口配置成接收bitmap數(shù)據(jù),它就使用256條目的顏色查找表(CLUT)。這意味著最大顏色深度是8bit(4,2,1bit的也支持)。當(dāng)OSD窗口配置成接收RGB565數(shù)據(jù),CLUT就不需要的了,因?yàn)镽GB數(shù)據(jù)在外部存儲(chǔ)器中先轉(zhuǎn)換成YCBCR;RGB565使用16bit/pixel,因此能接收64k顏色。兩個(gè)窗口都可以同時(shí)配置成接收bitmap數(shù)據(jù)。然而,只有一個(gè)OSD窗口可以配置成接收RGB565數(shù)據(jù)二不能兩個(gè)都配置。因此,如果第二個(gè)OSD窗口用作屬性窗口,第一個(gè)OSD窗口最好使用RGB565模式,主要因?yàn)樗梢源嫒?6bits(64k顏色)。 Linux 有兩個(gè)重要的驅(qū)動(dòng)結(jié)構(gòu),塊驅(qū)動(dòng)和特征驅(qū)動(dòng)塊驅(qū)動(dòng)允許無(wú)須存取并能掛載到文件系統(tǒng)中。包括了硬盤(pán)驅(qū)動(dòng),外部RAM,及copmpact flash驅(qū)動(dòng)。Character驅(qū)動(dòng)讀取作為流,以FIFO順序(如音頻視頻)。所以大家會(huì)測(cè)出,OSD功能是作為character(視頻驅(qū)動(dòng))驅(qū)動(dòng)。 Linux的另一個(gè)的特征是character驅(qū)動(dòng)能以類似的方式存取文件。這意味著你可以open,write,close這些設(shè)備跟操作文件一樣。從Linux的命令提示下,你可以copy(cp),display(cat) 及pipe(>>)數(shù)據(jù)從一個(gè)文件到另一個(gè)文件中。這個(gè)強(qiáng)大的特征允許把數(shù)據(jù)放到OSD窗口中而不用寫(xiě)任何的代碼。 達(dá)芬奇平臺(tái)提供了訪問(wèn)視頻硬件的兩個(gè)Linux驅(qū)動(dòng),V4L2視頻采集驅(qū)動(dòng)(視頻處理前端VPFE --- davinci_vpfe.c)和FBDev(即Framebuffer設(shè)備)顯示驅(qū)動(dòng)(視頻處理后端VPBE ---- davincifb.c)。
(1)Video for Linux 2(V4L2)是一個(gè)標(biāo)準(zhǔn)的,二級(jí)Linux視頻輸入驅(qū)動(dòng),它修正了第一版的一個(gè)bug。
(2)FBDev是一個(gè)標(biāo)準(zhǔn)的Linux視頻輸出驅(qū)動(dòng),用來(lái)映射顯示設(shè)備幀存。如DaVinci處理器到user空間。
Linux frame buffer display device(ie. FBDev 驅(qū)動(dòng))包含了OSD特征。幀存驅(qū)動(dòng)提供了顯示硬件的概括。它令視頻輸出硬件(OSD亦如此)作為一個(gè)幀存設(shè)備。并因此允許軟件訪問(wèn)圖形硬件就像寫(xiě)入一個(gè)緩沖區(qū)。跟上面提到的一樣,輸出設(shè)備緩存存取跟訪問(wèn)文件一樣,一般定位在 /dev 路徑中。在這種情況下,這個(gè)路徑我們感興趣的是改變DaVinci OSD 是/dev/fb/0。使用這個(gè)路徑,我們能修改顯示,而只是通過(guò)一個(gè)定義好的接口。它的操作包括跟文件一樣(如open, read,write,close)的操作和設(shè)備指定的命令(ioctls 來(lái)查詢/設(shè)置關(guān)于硬件的信息)。
我們應(yīng)該熟悉下面的命令:
cp – copy (e.g. >cp osd.r16 /dev/fb/0 --copies osd.r16 file to /dev/fb/0 設(shè)備)
把以上的幾點(diǎn)放到一起,通過(guò)寫(xiě)一個(gè)簡(jiǎn)單的命令(>cp osd.r16 /dev/fb/0)就可以把osd.r16的內(nèi)容復(fù)制到OSD幀存中,并能顯示。Osd.r16文件從哪里來(lái)呢?這個(gè)文件包含了現(xiàn)有顯示到OSD的內(nèi)容;因此通過(guò)圖像編輯器(如GIMP)編輯好圖像后,通過(guò)運(yùn)行轉(zhuǎn)換工具(tar.gz 文件中)就可以轉(zhuǎn)換。但是GIMP要?jiǎng)?chuàng)建什么樣格式的文件呢?推薦的格式是BMP。
步驟如下:
(1)創(chuàng)建OSD圖像通過(guò)圖像編輯器(如GIMP)并且保存為BMP文件。
(2)運(yùn)行小程序來(lái)轉(zhuǎn)換為RGB565格式。>.bmpToRgb16 mysod.bmp,這個(gè)命令就會(huì)產(chǎn)生osd.r16文件。
(3)把轉(zhuǎn)換后的文件復(fù)制到OSD幀存中。>cp osd.r16 /dev/fb/0
(4)重復(fù)以上的幾步,直到滿意。保存osd.r16文件,它就可以被應(yīng)用程序加到源代碼中了。
需要指出的是屬性窗口不應(yīng)該設(shè)置為100%視頻(所有都為0),因?yàn)檫@樣混合水平不允許OSD圖形顯示。 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的DM6446 OSD的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux subsys_initcal
- 下一篇: DOCKER镜像仓库地址