自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 mtk sensor 驱动调试

mtk sensor 1.0调试

2022-11-10 20:30:00 3174 5

原创 设备互联(三)多屏协同简析

多屏协同简析

2022-11-09 19:06:11 2497

原创 离职一定要谨慎

离职一定要谨慎

2022-11-07 19:27:02 272 3

原创 github 首次上传代码

github常见操作

2022-10-22 16:03:08 264

原创 mediaplayer创建(二)

android mediaplayer 解封装与解码之间数据扭转

2022-10-17 22:32:45 431

原创 mediaplayer创建(一)

mediaplayer 创建

2022-09-21 10:07:21 666

原创 设备互联 (二) p2p连接

p2p连接

2022-09-19 15:43:18 3383

原创 设备互联(一)

iot 设备互联简介

2022-09-16 09:57:53 1207

原创 mediaserver创建

Android mediaserver 创建流程同mediaplayer的交互

2022-07-31 23:21:16 1336

原创 FFmpeg入门(一)

这里我们介绍为什么要研究FFmpeg。多媒体中我们常见的框架如下音视频播放和音视频采集。音视频播放主要功能有:播放本地音视频、网络音视频。直播、视频会议、设备投屏的实现包含音视频播放和音视频采集,如下图只是简单画出了其中部分的流程,对于直播、视频会议、设备投屏低延时场景都需要对复杂网络场景做策略优化,另外音视频同步测试也会根据需求会有不同策略。为什么要研究FFmpeg?因为安卓系统上视频硬编解码都是封装在SDK中,只有芯片原厂可以看到部分,对深入了解音视频会有比较大的限制,而FFmpeg只要

2022-05-25 23:58:26 424

原创 .gitignore 常用语法

*.txt 忽略所有 .txt 后缀的文件 !src.a 忽略除 src.a 外的其他文件 build/ 忽略 build/目录下的所有文件,过滤整个build文件夹; doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件 bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件 /bin: 忽略根目录下的 bin 文件 /*.c: 忽略 cat.c,..

2022-01-06 21:59:54 322

原创 ffmpeg 编译

小白学习多媒体系列。之前有做过几年的音视频同步策略处理,也做过点对点投屏,对投屏延时优化有点小心得。知道音视频大的阶段采集、编码、封装、解封装、解码、同步、输出,但对各中细节、原理都了解不深,只能算是小白。 之前一直在找视频编解码的资料,总是觉得看的太晦涩难懂,后面在极客时间上发现了一个不错的课程,对视频编解码原理部分感兴趣的小伙伴可以看看,链接如下,起对视频编解码原理讲的很清晰,看不懂的话多看几遍,再找开源库结合代码来回顾原理:攻克视频技术_声网_视频技术_视频_YUV_RGB_编码原理_编码..

2022-01-05 23:25:59 1742

原创 android 访问本地文件失败

1)在android apk 编译版本、目标版本不高于(<= 29),是有权限访问/sdcard目录的,如果不能访问,请确认如下三点: 1.1 AndroidManifest.xml 中 application下是否添加 android:requestLegacyExternalStorage="true" 1.2 AndroidManifest.xml中是否配置<uses-permission android:n...

2022-01-04 23:08:01 3000 3

原创 systemserver 创建

system_server进程是Zygote进程 fork 出的第一个进程,它负责管理和启动整个 Framework 层SystemServer 启动流程 public static void main(String[] args) { new SystemServer().run(); } private void run() { TimingsTraceAndSlog t = new TimingsTraceAndSlo...

2021-10-10 23:01:07 265 2

原创 安卓开机流程

安卓系统层次框架图如下图片清晰地展示了Android的五层架构,从上到下依次是:应用层、应用框架层、库层、HAL层以及Linux内核层。Android的启动流程是自下向上的,大体上可以分为三个阶段:1、BootLoader引导启动内核;2、启动Linux内核;3、启动Android系统。Android 启动流程图如下:1 Boot ROM 我们长按电源按键,引导 ROM 代码从 ROM 中预定义位置开始执行。它将引导加载程序加载到 RAM 中并开始执行。存储在Boo......

2021-10-10 20:32:53 1671

原创 window 下搭建 c/c++编译环境

(1)安装VsCode(visual studio code);(2)下载MinGW,配置环境变量;(3)安装C/C++扩展(4)配置编译器路径,按快捷键Ctrl+Shift+P调出命令面板,输入C/C++,选择“Edit Configurations(UI)”进入配置MinGW路径(5)写好hello.cpp文件,点击vs code 右上角run code,执行代码VsCode:Code-Runner:g++ : 无法将“g++”项识别为 cmdlet、函数、脚本文件或可运行程序的名.

2021-10-07 22:43:11 404

原创 2021杂说

最近想换工作,在准备面试的时候才发现,很多东西自己做过,但是都没用进行总结,都只能是进行临时抱佛脚。觉得什么都得看,什么都得翻,一是因为自己没有总结,二是因为自己研究的并不透彻,并未转换成自己的。之前听一个小伙伴说,他为了去阿里准备了一年半,后面想想也确实需要,现在很多大厂都喜欢问算法题,LeetCode总得刷些;也喜欢问基础性的、原理性的东西,所以也得将自己coding的原理性的理一理,每天下班后整整,一年半好像确实不怎么够。 原本觉得一年半时间很长,因为不自律,刷刷抖音...

2021-10-06 22:13:17 98

原创 从网络包中提取多媒体流

有时候保存网络包后,想从其中提取出视频流。方法比较简单,装个wireshark,然后找到类似视频流位置然后选择电话->RTP->流分析,弹出如下提示框点击save,选择文件同步前向流音频,保存类型选择原始数据。这样保存下来的文件重命名为.ts,就可以在电脑的播放器上播放。...

2020-08-04 23:33:36 329

原创 chromium DOM 树构建

浏览器的整个过程,我借用李兵老师的一张简化的流程图如下,把浏览器的过程描述的很简单易懂。浏览器线程负责用户交互、文件储存等功能,网络线程面向渲染进程和浏览器进程等提供网络下载功能,渲染线程主要职责是把从网络下载的 HTML、JavaScript、CSS、图片等资源解析为可以显示和交互的页面,还有很多其他线程,慢慢理。浏览器线程是主线程,负责同用户之间的交互,不能有耗时操作,所以网络线程跟渲染线程是两个独立的线程。上一篇中介绍了network模块,这里开始整理下选染模块的流程,会结合trace 看整个...

2020-06-18 16:22:56 601

转载 CSS Style Calculation in Blink

RenderedAbout this documentThis is is a description of how Blink calculates which style rules apply to each element. It is not a comprehensive guide to the whole style computation/update process but it should be accurate for what it does cover. Further

2020-06-18 16:10:00 243

转载 Threading and Tasks in Chrome

ContentsOverview Nomenclature Core Concepts Threading Lexicon Threads Tasks Prefer Sequences to Physical Threads Posting a Parallel Task Direct Posting to the Thread Pool Posting via a TaskRunner Posting a Sequenced Task Posting to a

2020-06-03 17:22:24 268

转载 chromium URL request

Life of a URLRequestThis document gives an overview of the browser's lower-layers for networking.Networking in the browser ranges from high level Javascript APIs likefetch(), all the way down to writing encrypted bytes on a socket.This document assu.

2020-05-31 09:20:40 1254

转载 Core Principles

These are the things that are important to us: these principles shape the product that we build. Note that the examples given are meant to be illustrative rather than exhaustive.SpeedOur objective is to make the fastest browser - and we tackle th..

2020-05-31 08:47:03 458

转载 Debugging GPU related code

Chromium's GPU system is multi-process, which can make debugging it rather difficult. SeeGPU Command Bufferfor some of the nitty gitty. These are just a few notes to help with debugging.ContentsRenderer Process Code Checking about:gpu Breaking on..

2020-05-31 08:44:40 785

转载 Threading and Tasks in Chrome

ContentsOverview Nomenclature Core Concepts Threading Lexicon Threads Tasks Prefer Sequences to Physical Threads Posting a Parallel Task Direct Posting to the Thread Pool Posting via a TaskRunner Posting a Sequenced Task Posting to a

2020-05-31 07:51:40 269

翻译 HTTP Cache(转译)

总览HTTP缓存是接收HTTP(S)请求并确定何时以及如何从磁盘缓存或从网络中获取数据的模块。 缓存位于浏览器进程中,作为网络堆栈的一部分。 它不应与Blink的内存中缓存混淆,后者位于渲染器进程中,并且与资源加载器紧密耦合。从逻辑上讲,缓存位于内容编码逻辑和传输编码逻辑之间,这意味着缓存处理传输编码属性,并使用服务器设置的内容编码来存储资源。缓存实现了HttpTransactionFactory接口,因此HttpCache :: Transaction(这是HttpTrans...

2020-05-28 20:12:37 1913

翻译 网络堆栈(转译)

该目录包含Gitiles风格的Markdown中的chromium 项目文档。 它是由Gitiles自动渲染的。如果添加新文档,请在下面的文档索引中添加指向它们的链接。目录创建文档 使用md_browser预览本地更改: 使用gerrit到gitile的链接在线查看更改: 文件索引 Checking Out and Building Design Docs Integrated Development Environment (IDE) Set Up Guides G

2020-05-28 19:52:55 7516

原创 从输入URL到页面展示,这中间发生了什么?net篇

目录什么是IPC? 常见的IPC及简介 Chromium的IPC Mojo简介 Chromium 中IPC的调用

2020-05-27 18:43:21 677

翻译 将旧版IPC转换为Mojo(转译)

原文路径:https://chromium.googlesource.com/chromium/src.git/+/master/docs/mojo_ipc_conversion.md目录总览 旧版IPC概念 Mojo接口作为路由 订购注意事项 通道相关接口 决定如何进行转化 处理回复 目的和调用 Blink 具体建议 变量 绑定回调 在Blink中实现Mojo接口 内容的类型映射跟Blink类型 补充说明总览仍然使用Chrome的旧IPC系统在// i

2020-05-27 10:05:55 828

翻译 Mojo C ++绑定API(转译)

本文档是Mojo文档的子集原文路径:https://chromium.googlesource.com/chromium/src.git/+/master/mojo/public/cpp/bindings/README.mdContents总览 入门 接口 Basic Usage 基本用法 创建接口管道 绑定待处理的接收者 收到回应 连接错误 有关端点生存期和回调的注意事项 处理进程崩溃和回调的最佳实践 关于订购的注意事项 种类 枚举 结构体

2020-05-27 08:53:26 1641

原创 chromium Mojo介绍

IPC,全称Inter-Process Communication,字面意思就是进程间通信或者跨进程通信。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。安卓的IPC通信还多了Bundle。对此部分有兴趣的可以看看如下的博客:https://blog.csdn.net/LEON1741/article/details/77934508,对Linux的IP...

2020-05-25 17:14:04 1958

翻译 chromium Mojo (译)

chromium官网对mojo的描述,地址如下,英语不太好,所以进行进行翻译如下:https://chromium.googlesource.com/chromium/src.git/+/51.0.2704.48/docs/mojo_in_chromium.md。Chromium的Mojo本文档旨在用作Chromium开发人员的Mojo入门。 假定没有Mojo的相关认知。目录我应该读这个吗? 为什么选择Mojo? Mojo概述 消息管道 Mojom 绑定管道 回应请求

2020-05-25 08:16:58 2097

原创 Android 进程的创建

之前面试字节跳动的时候被问了一个问题:你能描述下linux下一个进程的启动流程吗?或者安卓的也可以。我想了下,嗯不会,面试中的问题总是来的那么猝不及防。安卓启动一个apk就是一个进程,来看下安卓下如何启动一个进程的。 先简单说下安卓系统的启动流程。安卓系统开机先是由BootLoader引导程序启动,把kernel拉起来并运行。kernel启动时,设置缓存、被保护存储器、计划列表,加载驱动。当kernel完成系统设置,它首先在系统文件中寻找”init”文件,启动init进程,......

2020-05-23 13:23:44 1695

原创 chromium 的jni函数

之前面试百度,那个小哥哥问我,你知道安卓jni有几种方式生成,是怎么实现的,你知道实现的逻辑吗?问题大概是这样。今天就来理一理安卓的JNI。JNI(Java Native Interface,Java本地接口),用于打通Java层与Native(C/C++)层。这不是Android系统所独有的,而是Java所有。众所周知,Java语言是跨平台的语言,而这跨平台的背后都是依靠Java虚拟机,虚拟机采用C/C++编写,适配各个系统,通过JNI为上层Java提供各种服务,保证跨平台性。JNI 分为..

2020-05-22 17:33:23 489

原创 下载chromium for Android

chromium代码下载、代码回传、代码编译.

2020-05-22 08:30:40 4938 6

原创 chromium 84.0.4122.0 WebView apk 启动流程

之前的博客介绍了chromium代码的下载和编译,调试环境的搭建。接下来我们根据编译的WebViewInstrumentation.apk来梳理浏览器的入口,看看chromium demo apk的启动流程。 从日志上看WebViewInstrumentation.apk 的activity是:org.chromium.android_webview.shell/.AwShellActivity。我们看看webview apk的启动流程。 当Android程序启动时系统会创建一个Applic...

2020-05-21 21:38:38 1939 3

原创 chromium 的debug手段

chromium代码量很大,要梳理流程如果直接扎进去看代码,估计会看的泪崩,当然大神级别的另当别论哈。我去看罗升阳罗老师的博客很详细也不算很深,但是是边看边忘,还是自己老老实实的跟代码,再做些笔记,毕竟好记性不如烂笔头。 如下是 我在跟chromium过程中的一些手段:1 Java代码 1.1 log打印: 使用org.chromium.base.log,用法和 android.util.Log一样 ; 1.2打印堆栈,打印出调用关系: ...

2020-05-21 15:04:58 1303

原创 chromium 调试环境搭建

这几年都在做浏览器,从webkit到chromium,从最开始的页面打补丁调整页面的布局显示,到内核问题修改,到性能优化,一直都是公司分配的任务,自己很少的进行整理,趁着长假对这部分进行梳理。浏览器代码下载、编译在之前一篇的博客中有介绍,有兴趣的小伙伴可以看看:https://blog.csdn.net/mengxin00100/article/details/103321170浏览器代码编译结束后,会在src\out\Defautlt\apks\目录下生成相应的apk,可以准备搭建调试环...

2020-05-21 14:34:37 932

原创 chromium 入门

这么多年上班,自己都没有好好总结,这次休长假,好好进行整理整理,太零碎,每次有面试官问起,描述完工作经历,自己就觉得是一直在打杂。对自己的规划是,接下来5年内还是往浏览器内核方向发展,将自己以前所学的串一串,结合代码一起看看。先整理chromium 内核的入门。 接下来的文章会围绕如下几个点进行更新: (1)chrome apk的启动,做了哪了什么启动了哪些县城,跟webview有什么关系; (2)chrome从输入URL到页面展示,这中间发生了什么,这包含了网络模块...

2020-05-15 22:47:25 930

原创 大道至简,静心读书

今年把几个大厂都面了一轮,被虐的是惨不忍睹,有几个都是在第一面就被折了。年级越大,越害怕笔试,因为每次第一面都是问的很基础,对没错,就是很基础的。刚毕业问的是1+1=几,现在问的是1+1为等于2,你知道这背后怎么实现的吗?也对,年纪的增长,需要匹配对应的深度,不然匹配不了对应的待遇。 我不是正规的学软件出生,算是半路出家的和尚。半路出家的和尚最开始学的是CC,如果没人带,自己又有...

2020-05-07 23:51:02 129

chromium thread create.txt

根据chromium 堆栈获取的各线程创建流程,有助于对chromium初始化各线程的理解。便于后续对chromium各线程的追踪及性能优化。

2020-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除