android 显示和分辨率区别
来源:互联网 发布:反转二叉树c语言 编辑:程序博客网 时间:2024/06/05 13:21
1、系统启动时:
/system/core/init/init_disp.c函数init_initdisplay()先是判断是否有HDMI的信号和其他信号输出然后交又函数init_swtichdisplay()处理。这里处理的事/dev/disp设备
/system/core/init/init_disp.c函数init_initdisplay()先是判断是否有HDMI的信号和其他信号输出然后交又函数init_swtichdisplay()处理。这里处理的事/dev/disp设备
2、点击设置界面的显示模式:
源码分为两种模式:
1)、不改变分辨率但是改变扫描的点数和刷新频率
打开设备/dev/disp,DISP_CMD_LAYER_SET_SCN_WINDOW等操作
打开设备/dev/disp,DISP_CMD_LAYER_SET_SCN_WINDOW等操作
包括HDMI等的控制
init_dispoutput()
DISP_CMD_HDMI_SET_MODE
DISP_CMD_HDMI_ON
DISP_CMD_HDMI_SET_MODE
DISP_CMD_HDMI_ON
驱动如下:
驱动drivers/video/sun4i/disp/dev_disp.c
实现drivers/video/sun4i/disp/de_bsp/de/disp_layer.c函数BSP_disp_layer_set_screen_window
drivers/video/sun4i/disp/de_bsp/de/disp_scaler.c函数Scaler_Set_Framebuffer
实现drivers/video/sun4i/disp/de_bsp/de/disp_layer.c函数BSP_disp_layer_set_screen_window
drivers/video/sun4i/disp/de_bsp/de/disp_scaler.c函数Scaler_Set_Framebuffer
2)、改变实际的分辨率
在驱动中发现drivers/video/fbmem.c函数do_fb_ioctl()中得出设置fb大小的cmd是FBIOPUT_VSCREENINFO
Android源码中发现device\softwinner\crane-common\hardware\libhardware\display\Display.cpp中调用了ioctl(ctx->mFD_fb[fb_id],FBIOPUT_VSCREENINFO,&var);而此文件正是设置节目点击后进入的,只是选中了上面的模式。
display_changemode【设置界面调节,有进入此函数】
->display_singlechangemode->display_requestfb
->display_singlechangemode->display_requestfb
出现本来1080p,调成720p是分成了3个界面,因为每次启动bootloader都会去修改framebuffer,并且在这里去改fb,已经初始化了界面,所以这里的修改有点晚了,但是在这里去kill掉surfaceflinger是可以实现分辨率调节的。所以设想应该是在系统启动第一个界面之前就修改好fb大小,这是想到init.c的初始化
接下来的问题是何处修改分辨率,满足如下条件
(1)、必须在surfaceflinger启动之前
(2)、必须在第一次操作fb之前
(3)、必须在驱动加载完毕
搜索整个Android源码,发现第一次使用fb的是
Init_disp.c (system\core\init): sprintf(node, "/dev/graphics/fb%d", fb_id);
Logo.c (system\core\init): fb->fd = open("/dev/graphics/fb0", O_RDWR);
Logo.c (system\core\init): fb->fd = open("/dev/graphics/fb0", O_RDWR);
发现第一次使用fb的事init进程,所以毫无疑问要在init中实现,但是发现系统启动到这个init.c的函数init_disp.c()时nand分区尚未挂载成功,所以想通过读取文件去修改分辨率是实现不了的,只能把参数传递给内核去修改sys_config1.fex。但是此处可以实现任意固定的分辨率。
0 0
- android 显示和分辨率区别
- AD分辨率和精度区别
- AD分辨率和精度区别
- android大分辨率图片的缩放处理和图片添加水印+文字,水印图片对角线显示
- android获取分辨率和密度
- 调整Ubuntu显示的分辨率和刷新率
- 对话框全屏显示和自适应分辨率
- 对话框全屏显示和自适应分辨率
- HDMI 设置 显示分辨率和频率
- QT-程序分辨率和居中显示
- 显示分辨率
- 显示分辨率
- 关于android多分辨率中的density和density-independent pixel的区别
- 电视线和分辨率的区别
- 分辨率和清晰度的区别关系
- 转:ADC 分辨率和精度的区别
- ADC 分辨率和精度的区别
- 手机分辨率PPI和DPI的区别
- Oauth2.0 用Spring-security-oauth2 非常简单
- 华为是怎样研发的(8)——兄弟文化
- Ubuntu下vim设置文件.vimrc内容
- 解决Cygwin "error while loading shared libraries"的问题
- 华为是怎样研发的(7)——开会
- android 显示和分辨率区别
- 菜鸟学Struts——I18N对国际化的支持
- Android学习笔记之AIDL
- 初步认识套接字编程(1)
- JavaScript (滚动条的移动事件)
- VIM学习(积累中....)
- hdu 5340 Three Palindromes
- QR二维码
- 新开发模式下自动化测试