“ 假设你手里有一张足够大的白纸,请你把它对折51次。想象一下,它会有多高?1米?2米?其实,这个厚度超过了地球和太阳之间的距离!人生亦如此,不用心去投资,它不过是51张白纸的简单堆叠而已;一旦用心去规划投资,它就像不断对折51次的白纸,越积越高,高到超乎我们的想象!”
01
前言
为了展示效果,我写了简单的Demo来做演示,感兴趣的到 文末获取demo源码!
我们工作中经常遇到两类BUG:
一类是画面显示位置、大小异常
比如下面这张图,我屏幕的分辨率是3840x2160,播放一个1920x1080的视频,画面显示的位置大小不符合预期
dumpsys SurfaceFlinger,可以看到
一类是画面显示不全,似乎被裁剪
比如下面这张图,我屏幕的分辨率是3840x2160,播放一个1920x1080的视频。画面虽然全屏显示了,但是画面被裁剪了,内容显示不全
dumpsys SurfaceFlinger,可以看到
以上两类问题在分析时,就是要先透过dumpsys SurfaceFlinger信息来看看display frame 和 source crop是不是有异常,而且这两个信息通常是上层设置下来给SurfaceFlinger及HWC来控制显示属性的。
当然如果display frame 和 source crop没有设置错误但显示画面异常,那很可能是SF or HWC处理有问题了。
02
Source Crop和Display Frame
大概可以用下面这张图来释义:
图像的原始数据(RGB/YUV等格式)会存放到GraphicBuffer中,就暂且称之为原始图像吧。
Source Crop
阅读原文
Android Graphics 显示系统 - 解读Source Crop和Display Frame((三二)
关注公众号获取更多Android Graphics相关内容