1. 程式人生 > >HDMI 設定 顯示解析度和頻率

HDMI 設定 顯示解析度和頻率

HDMI控制器支援很多顯示的解析度和頻率,每種都有相對應的timing

比如:



這些值,在streamon的時候通過函式

“hdmi_timing_apply” 寫到HDMI的setting core registers和 Timing generator registers暫存器。

在進行HDMI顯示時,設定的格式必須要和hdmi preset(timing的預置值)一致,否則導致顯示不正確,或者記憶體溢位錯誤。

在videodev2.h中有配置的巨集


HDMI 在初始化的時候有預設的配置(hdmi_drv.c)


在probe中,根據預置的巨集獲取hdmi時鐘引數,


S5PV210支援的引數為:


通過VIDIOC_ENUM_DV_PRESETS命令可以獲取HDMI控制器列舉列表,

通過VIDIOC_S_DV_PRESET,可以設定當前HDMI預設值,

通過VIDIOC_G_DV_PRESET,可以獲取當前預設值。

測試程式(測試環境:在顯示完480P後,再顯示1080P時必須重新配置的一個程式):

int setup_preset(int fd,  int preset)
{
	int ret;
	int count;
	struct v4l2_dv_preset presetinfo;
	struct v4l2_dv_enum_preset enuminfo;
	memset(&presetinfo, 0, sizeof(presetinfo)); 
	memset(&enuminfo, 0, sizeof(enuminfo)); 
	//列舉s5pv210支援的preset值
	while((ret = ioctl(fd, VIDIOC_ENUM_DV_PRESETS, &enuminfo)) >= 0)
	{
		printf("preset:%d,name:%s\n",enuminfo.preset, enuminfo.name);
		enuminfo.index++; 
	}
	memset(&presetinfo, 0, sizeof(presetinfo)); 
	presetinfo.preset = preset;
	//設定當前的preset值
	if((ret = ioctl(fd, VIDIOC_S_DV_PRESET, &presetinfo))<0)
	{
		printf("VIDIOC_G_DV_PRESET error:%d\n",ret);
		return -1;
	}
	memset(&presetinfo, 0, sizeof(presetinfo)); 
	//讀取當前的preset值
	if((ret = ioctl(fd, VIDIOC_G_DV_PRESET, &presetinfo))<0)
	{
		printf("VIDIOC_G_DV_PRESET error:%d\n",ret);
		return -1;
	}
	printf("preset:%d\n",presetinfo.preset);
	return 0;
}


在設定格式之前呼叫這個函式

open_hdmi_device();
setup_preset(hdmi_fd, 18);//這裡的18代表[email protected]
hdmi_setfmt();

log:

preset:1,name:[email protected]
preset:2,name:[email protected]
preset:6,name:[email protected]
preset:7,name:[email protected]
preset:8,name:[email protected]
preset:14,name:
[email protected]
preset:16,name:[email protected] preset:17,name:[email protected] preset:12,name:[email protected] preset:13,name:[email protected] preset:18,name:[email protected] preset:18


相關推薦

HDMI 設定 顯示解析度頻率

HDMI控制器支援很多顯示的解析度和頻率,每種都有相對應的timing 比如: 這些值,在streamon的時候通過函式 “hdmi_timing_apply” 寫到HDMI的setting core registers和 Timing generator regist

未知顯示器設定螢幕解析度螢幕擴充套件設定

今天用螢幕擴充套件,結果在顯示器上的螢幕解析度只能顯示1024*768,很不協調,於是百度了一下,看得了一個解決方案,這裡記錄下來,以便以後不時之需。 原文地址:http://blog.csdn.net/metaphysis/article/details/6885767

IntelliJ IDEA設定顯示記憶體指示器設定記憶體大小

一、設定顯示記憶體指示器 idea預設情況下,是不顯示當前記憶體使用情況的,可以通過設定讓其顯示,方法如下: 開啟Settings-->Preferences-->Appearance & Behavior-->Appearance,右側勾選Window Option

樹莓派 外接HDMI線顯示屏解析度設定

如果hdmi_group = 1(CEA),這些值有效 hdmi_mode = 1 VGA hdmi_mode = 2 480p 60 Hz hdmi_mode = 3 480p 60 Hz H hdmi_mode = 4 720p 60 Hz hdmi_mode = 5 1080i 60 Hz hdmi_m

[RK3399][Android7.1] 除錯筆記 :UBOOT 中HDMI預設解析度的修改【UBOOT上HDMI LOGO 顯示程式碼分析】

平臺 核心版本 安卓版本 RK3399 Linux4.4 Android7.1 文章目錄 問題: 現象:

QLCDNumber設定背景色顯示數字顏色

//LCD時間顯示 QLCDNumber *m_pLcdTime = new QLCDNumber(this); //設定顯示幾個數字 m_pLcdTime->setDi

故障集錦--st7920無法顯示中文設定游標位置

故事的起因很簡單,一塊以前做完的顯示電路現在需要裝到測試盒裡面,供人測試晶片,用的是51的晶片,12864M的顯示屏,內建的是st7920的控制驅動器。但是呢,在裝盒的過程中,發現顯示屏壞掉了,無法顯示東西,就去買了一個新的顯示屏,好了,故事就從現在起發生了。 st7920簡介 要說

Android下設定CPU核心數頻率

現在的Android手機雙核、四核變得非常普遍,同時CPU頻率經常輕鬆上2G,功耗肯定會顯著增加。而大多數的ARM架構的CPU採用的是對稱多處理(SMP)的方式處理多CPU。這就意味著每個CPU核心是被平等對待的,同時開啟又同時關閉。顯然,這樣的做法在Mobile Dev

Ubuntu 16.04 LTS設定螢幕解析度顯示Unknown display 解決

新裝完Ubuntu 16.04 LTS 通過System settings-->Displays 設定螢幕解析度 顯示“Unknown display”,選擇後無反應,並且螢幕大小不會改變,無法通過設定改變螢幕解析度 經過搜尋,發現可以使用xrandr命令調節解析度,如下: 帶*號的為當前解析度,

mipi LCD 的CLK時鐘頻率顯示解析度及幀率的關係

我們先來看一個公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2 即mipi 屏的傳輸時鐘頻率(CLKN,CLKP)等於(螢幕解

利用windows API更改顯示器的解析度更改雙屏的顯示模式

//更改顯示屏的解析度(windows8) DEVMODE dmScreenSettings; memset(&dmScreenSettings,0,sizeof(dmScreenSettin

ubuntu low-graphics mode ; 開機紫屏; detial 顯示驅動不正確; lspci -k 整合顯示NVIDIA 都沒有驅動;HDMI顯示

  新買的拯救者 Y7000 , 裝上UBUNTU16_04後各種蛋疼:ubuntu  low-graphics mode ; 開機紫屏; detial 顯示驅動不正確; lspci -k 整合顯示卡和NVIDIA 都沒有驅動;HDMI不顯示 先在BOOT 的時候按E ,修改

zynq-7000學習筆記(四)——Zedboard HDMI核的構建輸出顯示測試(2017/6/9補充修改)

參考: PC平臺:WINDOWS 10 64位 Xilinx設計開發套件:Xilinx_vivado_sdk_2016.3(之前用的是2014.2,後面的截圖還是2014的,就沒有一一改過來了) 一、下載HDL參考設計程式碼,包括庫和專案檔案 下載之前

Linux下設定終端解析度,最全的VGA程式碼解析度對照表

一般安裝完linux後預設的kernel給的tty解析度是非常有限的,解決的方法就是給kernel傳遞VGA引數。對應的要修改的配置檔案為 /etc/grub.conf,(或者 /boot/grub/grub.conf)就是在grub.conf啟動列表的kernel最後新增vga引數 vga=xxxx, 

EditText設定密碼隱藏顯示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" an

TextView內容設定顯示不同的字型顏色不同的字型大小新增圖示

/** * 設定同一個TextView中顯示不同的字型顏色和不同的字型大小 * @param context * @param prescriptionName

secureCRT中的中文顯示亂碼設定列印顏色處理

一、顯示亂碼處理 在Options-〉session options-〉appearance中設定為UTF-8; 二、設定列印資訊的顏色 "選項"(Options)-〉"全域性選項"(Global options)->"預設會話"(Default Session)-

sublime text 3 顯示空格Tab

ces space setting 希望 pytho blog csdn 顯示 img 因為sublime text3確實太好用了所以也用它寫代碼了,可是在Python3中不支持Tab鍵和空格鍵混用所以要改變顯示方式,以便方便使用,突然發現網上的資料太少,所以我把它貼了出來

angularjs 水平滾動選中按鈕高亮顯示 swiper回到頂部指令的實現ionic

cor load sse component 邏輯 return position col href 首先安裝 swiper npm install --save swiper 或者 bower install --save swiper <link rel=

微信二次分享不顯示摘要圖片的解決方法

conf eight sage 接口 所有 微信公眾平臺 取消 onf split 微信二次分享不顯示摘要和圖片的解決方法 解決不顯示摘要和圖片的問題,需要調用微信公眾號的js-sdk的api ,需要前端和後臺的配合, 後臺需要返回 appid (公眾號的appid )