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代表1080P@60hz
hdmi_setfmt();

log:

preset:1,name:480p@59.94
preset:2,name:576p@50
preset:6,name:720p@50
preset:7,name:720p@59.94
preset:8,name:720p@60
preset:14,name:1080p@24
preset:16,name:1080p@30
preset:17,name:1080p@50
preset:12,name:1080i@50
preset:13,name:1080i@60
preset:18,name:1080p@60
preset:18



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值