Android Graphics 显示系统 - 解读Source Crop和Display Frame(三二)

2024-04-23 04:28

本文主要是介绍Android Graphics 显示系统 - 解读Source Crop和Display Frame(三二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“ 假设你手里有一张足够大的白纸,请你把它对折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相关内容

这篇关于Android Graphics 显示系统 - 解读Source Crop和Display Frame(三二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/927777

相关文章

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读