1、ESM6802顯示簡(jiǎn)介
ESM6802根據(jù)顯示接口的不同分為兩種版本,一種支持RGB顯示接口,主要用于低分辨率顯示;另外一種同時(shí)支持LVDS和HDMI顯示接口,可以單獨(dú)使用任意接口或者搭建LVDS+HDMI的雙屏顯示系統(tǒng)。用戶購(gòu)買時(shí)可根據(jù)自己的需要選擇支持RGB的單屏顯示型號(hào)或者支持LVDS+HDMI的雙屏顯示型號(hào)。
雙屏顯示設(shè)置包括:
● 雙屏運(yùn)行不同的程序(Qt5程序)
● 雙屏運(yùn)行相同的程序,程序自身負(fù)責(zé)同步
● 雙屏播放不同的視頻
● 雙屏同步播放相同的視頻
● 一個(gè)屏幕運(yùn)行程序,一個(gè)屏幕播放視頻
● 一個(gè)屏幕分塊顯示多個(gè)視頻(單屏/雙屏通用)
下面先簡(jiǎn)單介紹一下顯示接口的設(shè)置。
設(shè)置顯示接口需要設(shè)置U-Boot,我們已有默認(rèn)設(shè)置可以滿足大部分用戶需求,目前我們的出廠設(shè)置是將LCD或者LVDS屏幕作為主屏(mxcfb0),HDMI屏幕作為附屏(mxcfb1),且HDMI屏幕設(shè)置為1920x1080M@60,if=RGB24,由于HDMI屏幕顯示協(xié)議中有一個(gè)協(xié)商的部分,HDMI顯示輸出會(huì)根據(jù)我們的設(shè)備以及顯示屏幕支持的分辨率進(jìn)行選擇,使用雙方都支持的最大分辨率,所以用戶一般不需要修改此配置。而修改LCD或者LVDS的配置可以用過(guò)我們提供的修改開(kāi)機(jī)畫(huà)面的命令flash_opt燒寫(xiě)正確分辨率的bmp圖片,我們的系統(tǒng)就會(huì)在下一次開(kāi)機(jī)自動(dòng)修改LCD/LVDS屏幕的分辨率設(shè)置了。如此設(shè)置可以方便用戶進(jìn)行快速修改屏幕設(shè)置。
對(duì)于需要自行修改設(shè)置的用戶,下面對(duì)設(shè)置方法進(jìn)行簡(jiǎn)單介紹。開(kāi)機(jī)調(diào)試串口顯示Hit any key to stop autoboot時(shí)按下任意鍵進(jìn)入U(xiǎn)-Boot環(huán)境,輸入命令 printenv video 查看默認(rèn)設(shè)置:
=> printenv video
video=video=mxcfb0:dev=ldb,800x600M@60,if=RGB666 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24
輸入命令setenv video video=設(shè)置 來(lái)設(shè)置顯示輸出,如:
=> setenv video video=mxcfb0:dev=ldb,800x600M@60,if=RGB666 video=mxcfb1:dev=hdmi,800x600M@60,if=RGB24
設(shè)置的格式為($數(shù)字表示變量,需要根據(jù)實(shí)際情況配置):
video=mxcfb$1:dev=$2,$3x$4M@$5,if=RGB$6
● $1可以取值0或1,單屏顯示只需要設(shè)置為0, 雙屏顯示時(shí)0為主屏,會(huì)輸出開(kāi)機(jī)畫(huà)面,1屏默認(rèn)開(kāi)機(jī)沒(méi)有開(kāi)啟,輸出顯示時(shí)會(huì)自動(dòng)打開(kāi)。
● $2表示輸出設(shè)備,可選值為lcd—RGB屏,ldb--LVDS屏,hdmi--HDMI屏。
● $3和$4表示屏幕分辨率。
● $5為屏幕刷新頻率。
● $6為屏幕輸出接口,常用接口為RGB565、RGB666、RGB24。
用戶根據(jù)自己的實(shí)際情況設(shè)置此參數(shù)后,運(yùn)行命令saveenv保存,然后運(yùn)行命令boot開(kāi)機(jī)。開(kāi)機(jī)之后可以運(yùn)行命令ls /dev/fb* 查看設(shè)置是否成功,其中fb0、fb2表示屏幕,fb1是fb0代表屏幕的左上部分。默認(rèn)fb2沒(méi)有開(kāi)啟,可以輸入下面命令打開(kāi):
echo 0 > /sys/class/graphics/fb2/blank
用戶在使用中可以讓雙屏顯示不同應(yīng)用程序或者一個(gè)屏幕運(yùn)行圖形界面程序,另外一個(gè)屏幕進(jìn)行視頻播放等,具體設(shè)置方法將在下面兩章節(jié)(QT 5支持 和 多媒體音視頻 )中分別進(jìn)行介紹。用戶閱讀完下面的內(nèi)容之后可以進(jìn)行隨意組合使用雙屏顯示不同或相同內(nèi)容。
2、Qt5支持
ESM6802 文件系統(tǒng)已經(jīng)移植好了Qt 5.5.1 版本,支持qml等Qt5新特性,并且已經(jīng)移植好了tslib庫(kù)來(lái)支持工業(yè)上比較常見(jiàn)的電阻觸摸屏,用戶可以方便的使用Qt 5來(lái)開(kāi)發(fā)圖形界面應(yīng)用程序。ESM6802 文件系統(tǒng)中的Qt 5 使用 eglfs 平臺(tái),我們默認(rèn)已經(jīng)設(shè)置了環(huán)境變量 QT_QPA_PLATFORM=eglfs, 如果用戶發(fā)現(xiàn)Qt 5 程序無(wú)法運(yùn)行,請(qǐng)首先檢查此環(huán)境變量是否被改變。ESM6802文件系統(tǒng)里面也提供了qmlscene程序用于運(yùn)行qml文件,qmlscene程序在/usr/bin/qt5/文件夾下面。關(guān)于eglfs 以及更多Qt 5程序開(kāi)發(fā)的相關(guān)知識(shí)請(qǐng)參考Qt 官網(wǎng)或其他資料,關(guān)于Qt 5開(kāi)發(fā)環(huán)境的搭建請(qǐng)參考《ESM6802開(kāi)發(fā)工具安裝》文檔,我們?cè)诖酥缓?jiǎn)單展示qml運(yùn)行效果。示例用的qml文件可以從光盤(pán)中獲取,運(yùn)行命令:
/usr/bin/qt5/qmlscene example_billborad.qml
運(yùn)行效果如下圖:
雙屏設(shè)置:
Qt5運(yùn)行于eglfs平臺(tái),與屏幕設(shè)置有關(guān)的環(huán)境變量為QT_QPA_EGLFS_FB,用戶在運(yùn)行Qt程序之前設(shè)置此環(huán)境變量就可以實(shí)現(xiàn)控制Qt程序在哪個(gè)屏幕上進(jìn)行顯示了,如下例在LVDS和HDMI屏幕上運(yùn)行兩個(gè)不同的Qt程序:
export QT_QPA_EGLFS_FB=/dev/fb0//第一個(gè)程序顯示在fb0(LVDS)上
/usr/bin/qt5/qmlscene example_billborad.qml &
export QT_QPA_EGLFS_FB=/dev/fb2 //第二個(gè)程序顯示在fb2(HDMI)上
./smarthome
運(yùn)行效果如下圖:
目前無(wú)法支持將一個(gè)應(yīng)用程序的界面同時(shí)顯示在兩個(gè)屏幕上,如果用戶需要實(shí)現(xiàn)此功能,需要在兩個(gè)屏幕上同時(shí)運(yùn)行相同的程序(以不同的QT_QPA_EGLFS_FB設(shè)置運(yùn)行兩次程序),然后在程序中使用Linux提供的進(jìn)程同步機(jī)制來(lái)控制兩個(gè)程序,從而達(dá)到兩個(gè)屏幕同步顯示相同內(nèi)容。
3、多媒體音視頻
ESM6802支持多種格式的音視頻多媒體文件的播放,提供的函數(shù)接口是基于gstreamer的,運(yùn)行命令gst-inspect-1.0 就可以查看系統(tǒng)支持的所有g(shù)streamer plugins。
關(guān)于gstreamer 編程請(qǐng)參考官網(wǎng)文檔及其他相關(guān)資料:
https://gstreamer.freedesktop.org/documentation/
ESM6802文件系統(tǒng)中的gst-launch-1.0 可以進(jìn)行簡(jiǎn)單的播放展示,如果用戶不需要對(duì)音視頻播放進(jìn)行暫停快進(jìn)等特殊操作,也可以在應(yīng)用程序中調(diào)用gst-launch-1.0進(jìn)行簡(jiǎn)單的多媒體播放。ESM6802支持AVI、MP4、FLV、MPG2、MKV、RMVB常見(jiàn)視頻格式最大分辨率1920x1080(1080p)的播放,以及常見(jiàn)音頻格式如MP3、WMA和圖片格式JPEG、PNG、GIF、BMP。
簡(jiǎn)單的視頻播放可以使用如下命令:
gst-launch-1.0 playbin uri=file:///mnt/cloudy720p.mkv
播放效果如下圖:
控制視頻在不同屏幕上播放或這同時(shí)在兩個(gè)屏幕上播放需要用到overlaysink插件(系統(tǒng)已經(jīng)安裝),配置overlaysink的文件為/usr/share/imx_6q_display_config , 配置格式如下:
[Display NAME]
必須配置,指明顯示名稱
device=
必須配置,指明設(shè)備文件,如/dev/video17(默認(rèn)為L(zhǎng)VDS/RGB)或/dev/video18(默認(rèn)為HDMI)
fmt=
可選配置,設(shè)置顯示格式,如RGBP、RGB565等,默認(rèn)為RGBP
width=
height=
可選配置,設(shè)置顯示分辨率
alpha=
可選配置,設(shè)置alpha(透明)值,默認(rèn)0
color_key=
可選配置,顏色配置,默認(rèn)關(guān)閉
具體配置示例如下:
# LVDS display
[master]
device = /dev/video17
fmt = RGBP
width = 1024
height = 768
alpha = 0
# HDMI display
[slave]
device = /dev/video18
fmt = RGBP
width = 1920
height = 1080
根據(jù)以上配置在不同屏幕(LVDS+HDMI)上同時(shí)播放不同視頻的可用命令:
gst-launch-1.0 playbin uri=file:///mnt/cloudy720p.mkv playbin uri=file:///mnt/xpg.mp4 video-sink=”overlaysink display-master=false display-slave=true”
播放效果如下圖所示:
如需在不同屏幕上播放相同視頻可以運(yùn)行如下命令:
gst-launch-1.0 playbin uri=file:///mnt/cloudy720p.mkv video-sink=”overlaysink display-master=true display-slave=true”
結(jié)合上一章Qt的介紹,可以在一個(gè)屏幕上運(yùn)行程序,在另外一個(gè)屏幕上播放視頻:
./smarthome &
gst-launch-1.0 playbin uri=file:///mnt/cloudy720p.mkv video-sink=”overlaysink display-master=false display-slave=true”
運(yùn)行效果如下圖:
視頻播放還支持一個(gè)屏幕播放多個(gè)視頻,可以使用如下命令:
gst-launch-1.0 playbin uri=file://$FILE1 video-sink=”overlaysink overlay-width=960 overlay-height=540” playbin uri=file://$FILE2 flags=0x41 video-sink=”overlaysink overlay-left=960 overlay-width=960 overlay-height=540” playbin uri=file://$FILE3 flags=0x41 video-sink=”overlaysink overlay-top=540 overlay-width=960 overlay-height=540” playbin uri=file://$FILE4 flags=0x41 video-sink=”overlaysink overlay-left=960 overlay-top=540 overlay-width=960 overlay-height=540”
運(yùn)行效果如下圖:
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660