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