<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[峻峰飞阳的博客  blog.youkuaiyun.com/while0]]></title><description><![CDATA[ 代码创造不同！]]></description><link>https://blog.youkuaiyun.com/guggy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; guggy]]></copyright><item><title><![CDATA[Android中的GraphicBuffer同步机制-Fence]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/125497413</link><guid>https://blog.youkuaiyun.com/guggy/article/details/125497413</guid><author>guggy</author><pubDate>Tue, 28 Jun 2022 10:26:24 +0800</pubDate><description><![CDATA[Fence是一种同步机制，在Android里主要用于图形系统中GraphicBuffer的同步。那它和已有同步机制相比有什么特点呢？它主要被用来处理跨硬件的情况。尤其是CPU。GPU和HWC之间的同步，另外它还能够用于多个时间点之间的同步。...]]></description><category></category></item><item><title><![CDATA[Android Surface 使用总结]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/125232910</link><guid>https://blog.youkuaiyun.com/guggy/article/details/125232910</guid><author>guggy</author><pubDate>Sat, 11 Jun 2022 11:36:34 +0800</pubDate><description><![CDATA[surface总结]]></description><category></category></item><item><title><![CDATA[Opengl的VAO个人理解]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/119333200</link><guid>https://blog.youkuaiyun.com/guggy/article/details/119333200</guid><author>guggy</author><pubDate>Sun, 29 May 2022 16:35:59 +0800</pubDate><description><![CDATA[使用Opengl也有一段时间了，但是对于VAO,Vertex Array Object 一直是有点模糊的概念，今天又重新梳理了一下，看了些博客和官方文档。理解又加深了一点，现在记录如下：

几个关键概念:

1,VAO : Vertex Array Object

2,VBO : Vertex Buffer Object

几个关键函数:

1,glBindVertexArray

2,glBindBuffer(GL_ARRAY_BUFFER,vbo);

3,glEnableVertexAttribArr]]></description><category></category></item><item><title><![CDATA[glActiveTexture和glBindTexture的关系]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/125032230</link><guid>https://blog.youkuaiyun.com/guggy/article/details/125032230</guid><author>guggy</author><pubDate>Sun, 29 May 2022 16:09:29 +0800</pubDate><description><![CDATA[今天在做glsl渲染yuv图像时，因为对glActiveTexture和glBindTexture的不熟，遇到了麻烦。经过试验，有了新的理解，并基于此理解解决了问题。

之前用到纹理，都是传GL_RGB或者GL_RGBA类型的数据进去的，只需要使用一张纹理，完全不用设置glActiveTexture的，所以对glActiveTexture的理解很浅

渲染yuv就不同了。
ffmpeg解码出来的yuv一般是以yuv420p的格式，分别存放在AVFrame-&gt;data二维数组中。其中


data[0]]]></description><category></category></item><item><title><![CDATA[在 VSCode 下用 Markdown Preview Enhanced 愉快地写文档]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/124677531</link><guid>https://blog.youkuaiyun.com/guggy/article/details/124677531</guid><author>guggy</author><pubDate>Mon, 09 May 2022 22:51:37 +0800</pubDate><description><![CDATA[文章内容很杂，所以在开头先整理下。这篇文章的主要内容有：

用 Markdown + Git 写文档真是爽
	MPE 功能很强大，请吃安利
	用 ditta 画简图轻松愉悦
	在文档里插入代码，随时验证自己的想法
	小型黑科技：制作动态Markdown
	小型黑科技：使用导入文件功能进行非线性写作
	小型黑科技：用 Markdown 写幻灯片
目标用户是有写文档需求的：策划、有程序基础的策划、有策划基础的程序和美术，等等等等。



1. 为什么要用 Markdown 写文档

你可能没听说过 Markdo]]></description><category></category></item><item><title><![CDATA[Android 绘图机制]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/118684160</link><guid>https://blog.youkuaiyun.com/guggy/article/details/118684160</guid><author>guggy</author><pubDate>Mon, 12 Jul 2021 21:18:07 +0800</pubDate><description><![CDATA[一：前言

一直对Android绘图机制比较感兴趣，虽然从书和博客中对SurfaceFlinger稍微有些了解，但是没有往下去深究。刚好最近项目中设计openGL相关的需求，于是便研究了下Android的绘图机制（基于7.0源码）。

二：App的画板Surface

回想一下如果我们小时候画画的时候，老师总会给我们发一张纸，让我们画在上面，同样App如果想要绘制图形，也总得给它一个画板吧，在Android中，这块画板就是Surface。

那么问题来了，这块画板是何时给我们的呢？换句话说，App的Surf]]></description><category></category></item><item><title><![CDATA[Camera Framework 分析]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/117776209</link><guid>https://blog.youkuaiyun.com/guggy/article/details/117776209</guid><author>guggy</author><pubDate>Thu, 10 Jun 2021 13:05:43 +0800</pubDate><description><![CDATA[Camera Framework分析，本文主要介绍Camera API2相关。

类文件速查表

类文件目录


			
1
2
3
4
5
6

			
			
			
1. Framework Java API1:frameworks/base/core/java/android/hardware/Camera.java
2. Framework Java API2:frameworks/base/core/java/android/hardware/camera2
3. Framework JN...]]></description><category></category></item><item><title><![CDATA[Camera AIDL 代码分析]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/117756159</link><guid>https://blog.youkuaiyun.com/guggy/article/details/117756159</guid><author>guggy</author><pubDate>Wed, 09 Jun 2021 22:56:22 +0800</pubDate><description><![CDATA[通过阅读本文您将收获以下知识点:


一、 Camera Framework 列文件目录
二、 JNI 相关
三、 AIDL 相关
四、 IInterface 类型文件
五、Parcelable 类型文件
六、ICameraService 相关
七、 ICameraServiceProxy.aidl 文件
八、 ICamera 相关
九、 ICameraDevice 相关
十、 Services 目录下的文件介绍
十一、API1/API2
十二、QTICamera2Client
十三、Device1/Dev]]></description><category></category></item><item><title><![CDATA[android c++ 打印调用堆栈]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/117130126</link><guid>https://blog.youkuaiyun.com/guggy/article/details/117130126</guid><author>guggy</author><pubDate>Fri, 21 May 2021 17:43:51 +0800</pubDate><description><![CDATA[cpp
1. 头文件
#include
#include
#include

2.源文件

android::CallStackstack;

stack.update(1, gettid());

stack.log("satcklog", ANDROID_LOG_ERROR, "stackdump:");

或

stack.log("satcklog",(android_LogPriority)6, "stackdump:");

CallStack 的具体定义见: system/core/l...]]></description><category></category></item><item><title><![CDATA[项目中adb shell am 常见用法]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/116747935</link><guid>https://blog.youkuaiyun.com/guggy/article/details/116747935</guid><author>guggy</author><pubDate>Thu, 13 May 2021 14:07:22 +0800</pubDate><description><![CDATA[am start
C:\Users&gt;adb shell am start
usage: am [subcommand] [options]
usage: am start [-D] [-W] [-P &lt;FILE&gt;] [--start-profiler &lt;FILE&gt;]
       [--sampling INTERVAL] [-R COUNT] [-S] [--opengl-trace]
       [--user &lt;USER_ID&gt...]]></description><category></category></item><item><title><![CDATA[Android 图形架构相关的概念]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/116702114</link><guid>https://blog.youkuaiyun.com/guggy/article/details/116702114</guid><author>guggy</author><pubDate>Wed, 12 May 2021 12:52:37 +0800</pubDate><description><![CDATA[图形架构

本文介绍在Android中与图像架构相关的概念或类Surface、SurfaceHolder、EGLSurface、SurfaceView、GLSurfaceView、SurfaceTexture、TextureView、SurfaceFlinger 和 Vulkan 的知识。

本页将介绍 Android 系统级图形架构的基本元素，以及应用框架和多媒体系统如何使用这些元素。我们会重点介绍图形数据的缓冲区是如何在系统中移动的。 如果您想了解 SurfaceView 和 TextureView .]]></description><category></category></item><item><title><![CDATA[tar命令排除.repo .git等目录]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/116668155</link><guid>https://blog.youkuaiyun.com/guggy/article/details/116668155</guid><author>guggy</author><pubDate>Tue, 11 May 2021 20:10:21 +0800</pubDate><description><![CDATA[压缩：
tar -czvf abc.tar.gzabc--exclude=*.svn --exclude=*.git --exclude=*.repo
此命令将当前目录下的abc目录压缩为abc.tar.gz，并排除其中的.svn, .git, .repo目标

解压：
tar -xzvf abc.tar.gz
此命令将abc.tar.gz解压到当前目录。

...]]></description><category></category></item><item><title><![CDATA[LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_JAVA_LIBRARIES 区别]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/116665925</link><guid>https://blog.youkuaiyun.com/guggy/article/details/116665925</guid><author>guggy</author><pubDate>Tue, 11 May 2021 19:12:58 +0800</pubDate><description><![CDATA[LOCAL_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_JAVA_LIBRARIES表示把引用的外部Java库直接编译打包到本模块中，在runtime时可以直接从本模块中找到相关的东西。

LOCAL_JAVA_LIBRARIES
LOCAL_JAVA_LIBRARIES表示引用的外部Java库在编译时可以找到相关的东西，但并不打包到本模块，在runtime时需要从别的地方查找，这个别的地方就是在编译时将引用的外部Java库的模块名添加到PRODUCT_BOOT_JARS，例如An]]></description><category></category></item><item><title><![CDATA[Android Camera内存问题剖析]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/112362395</link><guid>https://blog.youkuaiyun.com/guggy/article/details/112362395</guid><author>guggy</author><pubDate>Fri, 08 Jan 2021 14:50:29 +0800</pubDate><description><![CDATA[本文通过一类 Android 机型上相机拍摄过程中的 native 内存 OOM 的问题展开，借助内存快照裁剪回捞和 Native 内存监控工具的赋能，来深入剖析此类问题。


背景

Raphael 是西瓜视频 Android 团队开发的一款 native 内存监控工具，在字节跳动内部产品（如西瓜、抖音、头条等）上广泛用于监控 native 内存泄漏问题。在抖音 7.8.0-8.3.0 上搜集到大量因虚拟内存触顶而 crash 的内存日志现场（如 pthread_create、GL error、EGL_.]]></description><category></category></item><item><title><![CDATA[Html div和span详解]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/109316167</link><guid>https://blog.youkuaiyun.com/guggy/article/details/109316167</guid><author>guggy</author><pubDate>Tue, 27 Oct 2020 17:39:35 +0800</pubDate><description><![CDATA[div和span的区别

div:

div是一个块级元素，可以包含段落，表格等内容，用于放置不同的内容。一般我们在网页通过div来布局定位网页中的每个区块。

Span:span是一个内联元素，没有实际意义，它的存在纯粹是为了应用样式，给一段内容加上&lt;span&gt;&lt;/span&gt;标记可以通过在span上定义样式来设定其内容的样式。

div和span元素最大的特点是默认都没有对元素内的对象进行任何格式化渲染。主要用于应用样式表。

比如：代码：

&lt;html&gt;

&lt;.]]></description><category></category></item><item><title><![CDATA[解决：android studio 编写代码时没有提示了]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/108096586</link><guid>https://blog.youkuaiyun.com/guggy/article/details/108096586</guid><author>guggy</author><pubDate>Wed, 19 Aug 2020 11:29:12 +0800</pubDate><description><![CDATA[在编写代码时，代码不自动提示，发现代码自动提示设置正常，所以查询到问题原因在于节能模式的开启，具体解决方式如下：

关闭节能模式

	

	关闭节能模式
	
	
	如上图所示，将Power Save Mode前面的对勾去掉，则完成节能模式的关闭，代码提示功能正常。
	
...]]></description><category></category></item><item><title><![CDATA[Activity启动模式(launchMode)详解]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/105869220</link><guid>https://blog.youkuaiyun.com/guggy/article/details/105869220</guid><author>guggy</author><pubDate>Thu, 30 Apr 2020 20:44:56 +0800</pubDate><description><![CDATA[Activity 的启动模式有四种，standard、singleTop、singleTask、singleInstance.





image.png

1.standard




  standard是Activity默认的启动模式，在不进行显示指定的情况下，所有活动都会自动使用这种启动模式。
  每次启动都一个新的Activity位于栈顶。
  android:launchMode...]]></description><category></category></item><item><title><![CDATA[android 的px,dp与sp的区别以及换算]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/103344416</link><guid>https://blog.youkuaiyun.com/guggy/article/details/103344416</guid><author>guggy</author><pubDate>Mon, 02 Dec 2019 10:32:21 +0800</pubDate><description><![CDATA[1、px

即像素，1px代表屏幕上的一个物理像素点。
“pixel” 的缩写，像素。是画面显示的基本单位，真实的像素并不是点或者方块（虽然有时这样显示），也没有实际固定长度，只是一个抽象的取样。设计中的像素和实际显示屏上的像素相对应。

屏幕的分辨率一般就描述为“宽向像素数X纵向像素数”。比如 Android手机常见的分辨率有：320 X 480, 480 X 800, 1080 X 1920等...]]></description><category></category></item><item><title><![CDATA[Android Surface创建]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/102815242</link><guid>https://blog.youkuaiyun.com/guggy/article/details/102815242</guid><author>guggy</author><pubDate>Wed, 30 Oct 2019 11:06:17 +0800</pubDate><description><![CDATA[一、 OverView

Android Surface的创建涉及三个进程


	App 进程
	Surface本质上是一个Native Window, 并且保存着需要在屏幕上显示的数据(buffer), 它通常包含 triple-buffers 以防止Jank。
	那么谁要创建Surface呢? 当然是App了，App需要将自己的内容显示在屏幕上，所以App负责发起Surface创建请求，创建好...]]></description><category></category></item><item><title><![CDATA[Android 双屏显示分析]]></title><link>https://blog.youkuaiyun.com/guggy/article/details/102799914</link><guid>https://blog.youkuaiyun.com/guggy/article/details/102799914</guid><author>guggy</author><pubDate>Tue, 29 Oct 2019 15:10:33 +0800</pubDate><description><![CDATA[双屏异显

系统提供了Presentation类，可以实现在两块屏幕上同时显示不同的内容；Presentation是一个特殊的dialog，它的目的是显示内容到第二屏幕。



image.png

基本原理



image.png

1 获得显示设备信息：
DisplayManagerService 启动后从SurfaceFlinger当中获取到系统默认的Display 与HDMI displ...]]></description><category></category></item></channel></rss>