HDMI相关
HDMI相關基礎
- 4.4 與 9.0 差異
- AVMUTE 的使用
- hdcp異常
- 檢查 HDCP 交互:
- 檢查 ksv(視頻加密密鑰):
- HDCP 的內部檢測:
- 顯示模式分析
- 查看是否已連接電視機
- 查看當前顯示模式
- 更改當前顯示分辨率
- 查看 EDID 信息
- 查看顯示設備的 EDID 信息
- 查看電視機支持的最佳分辨率
- Android 系統對 HDMI 輸出制式的設置
- 1. 查看當前輸出制式的節點命令:
- 2. 輸出制式在 Framework 層的代碼位置:
- 主要接口說明
- 最優分辨率、顏色空間、色深的配置
- 使用 HDMI Bist 模式驗證 HDMI 的顯示
- 節點說明
4.4 與 9.0 差異
4.4走framework MboxOutputModeService
9.0走systemcontrol
AVMUTE 的使用
對應的切點:/sys/class/amhdmitx/amhdmitx0/avmute
往其寫入 1,表示進行 SET_AVMUTE
往其寫入-1,表示進行 CLEAR_AVMUTE
hdcp異常
檢查 HDCP 交互:
輸入命令 cat /sys/module/hdmitx/parameters/hdmi_authenticated,輸出大于 0 為成功,小于等于 0 為失敗
檢查 ksv(視頻加密密鑰):
輸入命令 cat /sys/class/amhdmitx/amhdmitx0/hdcp_ksv_info,輸出如下:
- AKSV: 663fa14267 Valid
- BKSV: 27c2d1b6ca Valid
如果出現 AKSV 為 invalid 的情況,請檢查 HDCP key 燒錄是否有誤。
如果出現 BKSV 為 invalid 的情況,請檢查歉收端是否為合法的帶有 HDCP key 的設備。
HDCP 的內部檢測:
輸入命令 cat /sys/class/amhdmitx/amhdmitx0/hdcp_ksv_info,出現以下打印表示檢測成功,否則為檢測失敗
顯示模式分析
查看是否已連接電視機
輸入命令 cat /sys/class/amhdmitx/amhdmitx0/hpd_state
0: 未連接電視 1:已連接電視查看當前顯示模式
輸入命令 cat /sys/class/display/mode,輸出當前分辨率(如:720p50hz)
輸入命令 cat /sys/class/amhdmitx/amhdmitx0/disp_mode,也可查看分辨率,顯示的是 vic 編號,其對應關系:
更改當前顯示分辨率
輸入 echo 1080p > /sys/class/display/mode
查看 EDID 信息
查看顯示設備的 EDID 信息
cat /sys/class/amhdmitx/amhdmitx0/edid
查看電視機支持的最佳分辨率
cat /sys/class/amhdmitx/amhdmitx0/disp_cap
以下為輸出(其中帶星號的為最佳分辨率):
Android 系統對 HDMI 輸出制式的設置
1. 查看當前輸出制式的節點命令:
cat /sys/class/display/mode
2. 輸出制式在 Framework 層的代碼位置:
frameworks/base/core/java/android/app/MboxOutputModeManager.java frameworks/base/services/java/com/android/server/MboxOutputModeService.java實際上最終都是通過 MboxOutputModeService 類實現對 HDMI 制式的設置。
主要接口說明
1. setDisplayMode() Function: 設置當前屏幕的顯示比例 Param: "4:3" "16:9" 2. setScreenModeValue() Function: 設置屏幕的顯示模式 Param: "full": 全屏 "normal" : 正常模式 "16_9": 16:9 "4_3" : 4:3 3. GetScreenModeValue() Function: 獲取當前屏幕的輸出模式。 Param: 無 4. setHdrMode() Function: 設置顯示的 HDR 模式 Param: "0":關閉 HDR "1":打開 HDR "2": auto 模式 5. getHdrMode() Function:獲取 HDR 模式 Param:無 6. setColorspaceMode() Function: 設置顯示的顏色空間和色深 Param: "Auto" "Y420 8bit" "Y420 10bit" "Y422 12bit" 7. getColorspaceMode() Function: 獲取當前顯示的顏色空間和色深 Param: 無 8. getSupportColorSpaceList() Function: 獲取當前顯示設備支持的顏色空間和色深列表 Param: 無 9. getSupportResoulutionList() Function: 獲取當前顯示設備支持的分辨率列表 Param:無 10. getBestMatchResolution() Function: 獲取當前顯示設備最佳的分辨率 Param:無 11. setOutputMode() Function:設置當前顯示設備的顯示模式 Param:"cvbs" "720p60hz" "1080p60hz"最優分辨率、顏色空間、色深的配置
獲取當前顯示設備支持的顏色空間及色深的節點:
cat /sys/class/amhdmitx/amhdmitx0/dc_cap
獲取當前顯示設備支持的分辨率節點:
cat /sys/class/amhdmitx/amhdmitx0/disp_cap
使用 HDMI Bist 模式驗證 HDMI 的顯示
echo bist1920 > /sys/class/amhdmitx/amhdmitx0/debug
echo bistline > /sys/class/amhdmitx/amhdmitx0/debug
echo bistdot > /sys/class/amhdmitx/amhdmitx0/debug
echo bistoff > /sys/class/amhdmitx/amhdmitx0/debug
節點說明
/sys/class/amhdmitx/amhdmitx0/hdcp_ver ro //RX端支持的HDCP version /sys/class/amhdmitx/amhdmitx0/hdcp_lstore ro //本機含有的HDCP KEY類型 /sys/class/amhdmitx/amhdmitx0/disp_cap ro //RX支持的分辨率能力 /sys/class/amhdmitx/amhdmitx0/vesa_cap ro //RX端支持的VESA模式 /sys/class/amhdmitx/amhdmitx0/dc_cap ro //RX端支持的色深,色彩空間能力 /sys/class/amhdmitx/amhdmitx0/hdr_cap ro //RX端支持的hdr能力 /sys/class/amhdmitx/amhdmitx0/dv_cap ro //RX端支持的dolbyVersion能力 /sys/class/amhdmitx/amhdmitx0/hdcp_mode rw //{1|2} /sys/class/amhdmitx/amhdmitx0/hdcp_ctrl wo //hdcp控制 {stop14|stop22} /sys/module/hdmitx20/parameters/hdmi_authenticated ro //hdmi認證 /sys/class/amhdmitx/amhdmitx0/avmute wo //hdmi 聲音圖像{1 disable|-1 enable} /sys/class/display/mode rw //讀寫分辨率模式 /sys/class/video/axis rw //播放器顯示窗口大小坐標 /sys/class/graphics/fb0/window_axis rw //頁面播放大小坐標 /sys/class/amhdmitx/amhdmitx0/hpd_state ro //HDMI線的撥插動作 {0未連接|1已連接} /sys/class/amhdmitx/amhdmitx0/phy w //{0 disable| 1 enable}echo bist3840 > /sys/class/amhdmitx/amhdmitx0/debug echo bist1920 > /sys/class/amhdmitx/amhdmitx0/debug echo bist1280 > /sys/class/amhdmitx/amhdmitx0/debug echo bist720 > /sys/class/amhdmitx/amhdmitx0/debug echo bistoff > /sys/class/amhdmitx/amhdmitx0/debug關 pq echo vpp_pq disable > /sys/class/amvecm/debug echo 0 > /sys/module/am_vecm/parameters/probe_ok 開 pq echo vpp_pq enable > /sys/class/amvecm/debug echo 1 > /sys/module/am_vecm/parameters/probe_ok//sr{0關|1開} echo 0 > /sys/class/video/sr echo 1 > /sys/class/video/sr//bypass DI echo 1 > /sys/module/di/parameters/bypass_all//{0 disable| 1 enable} echo 0 > /sys/class/amhdmitx/amhdmitx0/phy echo 1 > /sys/class/amhdmitx/amhdmitx0/phy //聲音圖像{1 disable|-1 enable} echo 1 >/sys/class/amhdmitx/amhdmitx0/avmute echo -1 >/sys/class/amhdmitx/amhdmitx0/avmute//{stop14|stop22} echo stop14 > /sys/class/amhdmitx/amhdmitx0/hdcp_ctrl echo stop22 > /sys/class/amhdmitx/amhdmitx0/hdcp_ctrl//{1|2} echo 1 > /sys/class/amhdmitx/amhdmitx0/hdcp_mode echo 2 > /sys/class/amhdmitx/amhdmitx0/hdcp_mode$ps -A |grep -i hdcp $kill -9 hdcp pid $hdcp bin文件&echo null > /sys/class/display/mode echo 444,8bit > /sys/class/amhdmitx/amhdmitx0/attr echo 1080p60hz > /sys/class/display/mode總結
- 上一篇: 再见五月
- 下一篇: Linux下对文件权限的管理