- 博客(203)
- 资源 (10)
- 收藏
- 关注
转载 yuv,ycbcr,ypbpr,yiq itu-r bt.656 itu-r bt.601
YUV,是一种颜色编码方法。YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、 Chroma),Y'UV, YUV, YCbCr, YPbPr 常常有些混用的情况,其中
2009-09-23 19:01:00 16991 1
原创 Android的个人修炼心经
自从跳出三界奋勇前行三年有余,其间的喜怒哀乐自有体会,收获还是颇丰,但有一点做得不好就是博客停更,虽说任务重时间紧,但或多或少拿它当借口了。言归正传,期间所做的技术工作主要是原生Linux相关的,本以为做Android机会不是很多(做得又不需要太深入),但是最近的工作又需要转回到Android上(要比较深入),于是乎又得捡起回看一下原来做Android所做的笔记,缩短一下热身和起步时间。下面所写的...
2020-03-13 11:19:20 468
原创 论Camera和MediaRecorder的友情(安卓学习年度总结篇)
2016年即将过去,在这一时刻总觉得应该写点什么有价值的东西来纪念一下。思前想后,觉得脱离M$体系转向Android/Linux的开发有两年时间了,在这一过程中还是有很多收获的:澄清了一些模糊概念、验证并确认了一些个人做法、领会了开源项目中的精妙内容。由于Android体系的庞大代码量,当初为尽快入门采用的是“提纲挈领、重点突破、由线及面”的策略,在了解Android的整体设计哲学思想(详见引用一,
2016-12-14 16:17:11 1662 1
原创 Android的lowmemorykiller演变分析
在学习Android的lowmemorykiller机制过程中,发现从KK到L再到M有一些新的变化,因此有必要进行一下总结。在开始分析前先厘清一些基础概念,便于描述的展开和结论的形成。一、基本概念1、PageCache:Linux内核为加快文件预取而采用的特有机制(参考引用一),就是尽可能的把空闲内存用于缓存最近访问过的磁盘文件数据。由于会占用大量的空闲内存,在某种情况下就会导致OOM
2016-11-24 17:28:48 2696 1
原创 android下使用htop和lsof
在编译并使用基于android的htop-2.0.2过程中(引用一),发现查看进程使用文件句柄(快捷键'l',实际调用命令lsof)信息一直为空白,经研究发现原来android的lsof其实是包含在toolbox中的子功能,其功能很单一不支持命令行参数,现单独编译源代码生成程序供htop调用。一、编译方式1、在android框架中编译在github上有项目(引用二),是基于4.86在l
2016-10-08 11:43:24 3764 1
原创 Git Flow版本控制方式学习
在团队日常开发中,选择合适的版本控制工具并灵活运用能更好的协调团队开发节奏,并保证公司重要的资产---项目文档资料---的安全性,同时也能为产品发布后的运行维护提供帮助。目前常用的版本控制工具是SVN(集中式)和Git(分布式),两者各有特点,选用哪种工具根据公司策略及其团队实际情况而定,如公司产品类型(线上或线下)、开发模式(敏捷或原型)、团队规模(单分支或多分支)、开发工具使用(原生或托管)等
2016-09-29 11:14:53 999
原创 linux(arm架构)内存管理学习(2)
在上一篇文章中,主要从MMU的映射规则角度对内存管理进行了一些分析,经过一些初步学习(未包括LPAE方式)发现不同版本ARM对应的MMU映射和工作规则是兼容的(错了请拍砖),对于差异性就需要通过阅读对应的官方提供的芯片手冊(如多核cortex-a7手冊目前最新版本是r0p5,文件名是DDI0464F_cortex_a7_mpcore_r0p5_trm.pdf)来深入学习了。
2016-09-27 12:49:28 962
原创 linux(arm架构)内存管理学习(1)
在研究内核hibernate实现的时候,由于需要对内存管理如MMU配置、内存分布和分配有相应了解,因此进行了专门的学习。最终结果是hibernate未研究出什么成果,反倒是内存管理的学习小有心得,就此予以总结。当然,按照一贯做法少上代码、多提思路和关键点。 我所使用的平台是全志的平台T3(四核Cortex-A7、2G DDR),内核版本是3.10.65,硬件物理地址分布是:S
2016-08-31 11:11:26 2701
原创 Android的Jack编译器试用
最近在8核(Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz)、64GB内存服务器下编译的Android 6.0时,发现在仅开了四个编译任务(make -j 4)的情况下,服务器的所有CPU占用率和虚拟内存的使用都达到满负荷,导致命令行操作极慢,这在原来编译4.4的时候就算开了八个编译任务都是没有出现过的情况。经分析是因为6.0的java编译工具默认已经由openj
2016-05-17 11:59:19 10225
原创 音频透传背后的技术实现
现在市面上流行的电视盒大部分都是Android,“音频透传”是一个经常见到的词,那到底什么是音频透传、音频透传背后的技术实现到底如何,引起了我的兴趣,因此花了点时间研究了一下。由于是针对全志H8的电视盒方案进行分析,因此分析的结果不具有普遍性,可能其它的方案在技术实现上有所不同。 在开始分析前先查找了一下关于“透传”这个概念的解释,根据度娘的说法是“透传即是透明传送,即传送网络无
2016-05-06 20:26:54 18709
原创 关于架构、框架、业务逻辑的理解
最近在回顾和总结上一个五年的工作成长历程,顺便加入了个人对架构、框架、业务逻辑的理解。由于个人认知有限,难免存在纰漏。架构:按照我的理解,架构有广义和狭义的解释。从广义角度来说,它是人类进行社会化生产的组织形式,以及为保证组织形式能够正常开展的方方面面。一个典型的案例就是现代企业的组织架构,它从上到下设计了公司的部门组成,相应的也规定了各自的责、权、利,以及日常运作的规章制度-------如员
2016-04-18 11:33:56 4931
原创 Android的Native方式广播intent
本文是在在Android中使用native程序(非Java)来广播intent这篇博文的基础上的完整实现,实现了在Native下广播一个即将关机的通知。#define LOG_TAG "IntentTest"#include #include #include #include #include #include #include #include namespace
2016-03-03 16:00:10 5396 8
原创 Live555在Android下改造
Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,具体就不做介绍了。从它提供的例子程序来看,都是运行后就不再退出,在实际工作中把它移到Android下做为流媒体服务器运行(TS数据流通过RTSP发送),但是需要根据WIFI状态的变化来加载和退出,退出的时候还需要保证申请的资源都被释放。为此深入研究了一番代码实现这个目的。 Live555的基本组件包括UsageEn
2016-01-30 14:42:15 3021 3
原创 NDK编译ffmpeg的配置文件
仅做记录,未涉及背景相关内容#!/bin/shNDK=/home/ffmpeg/android-ndk-r10dSYSROOT=$NDK/platforms/android-19/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64PREFIX=/home/ffmpeg/
2015-11-18 17:44:30 1323
原创 NDK编译OpenCV-3.0.0的配置文件
仅做记录,未涉及背景相关内容#!/bin/shexport ANDROID_NATIVE_API_LEVEL=21export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9cmake \ -DBUILD_SHARED_LIBS=ON \ -DWITH_OPENGL=ON \ -DBUILD_opencv_apps=ON \
2015-11-18 17:37:37 2036 1
原创 使用vlc-2.21的rtsp点播功能
在学习流媒体播放的时候,是利用vlc-2.2.1做为调试工具的。由于需要对ts流进行rtsp方式点播,在进行rtsp的C/S两端配置时出现了种种问题,经过一番探索解决问题,发现使用命令行的方式比界面方式方便很多,配置的复杂度集中在服务端,客户端则很简单,界面或命令行方式皆可。1、vlc -vvv --extraintf=logger test.ts --sout "#duplicate{dst
2015-11-03 15:58:32 2191
原创 生成Android SDK的深入探索
基于KitKat(KRT16S)、ARM平台配置进行描述。 一、基础概念1、 sdk级别高级别sdk:一般就是指android.jar,这个在做应用开发的时候可以直接导入;低级别sdk:通过如“make sdk”命令生成的zip文件,包含platforms、platform-tools、tools等目录,以及模拟器、avd管理器、sdk管理器等;这个需要开发工具如eclip
2015-07-03 20:35:12 6897
原创 配置Android下OpenCV的native开发环境
在进行配置和编译前,已经安装好了Android的NDK和SDK,以及其它的辅助工具如git、cmake、ant、doxygen等。配置和编译的方法也是基本上按照官方(引用一)所描述的做法进行,由于可以进行系统定制所以并没有选择使用OpenCV Manager/Service,而是编译生成Native共享库、附带生成JavaAPI和JNI的形式进行开发(引用二),当然也可以使用cmake工程或NDK
2015-06-15 16:59:16 2285
原创 理解RPC和LPC的概念
一直以来对于RPC的概念就是远程调用,缺乏深入的理解,现有利用业余时间做一些了解。RPC是“远程过程调用(Remote Procedure Call)”的缩写,最早开始是出现在Sun微系统公司和HP公司运行UNIX操作系统的计算机中。RPC的“远程”定义是一个广义的说法,可以发生在不同的主机之间,也可以发生在同一台主机的不同进程之间。Windows系统做为后起之秀,它是一种宏微混杂
2015-05-22 10:44:39 8547
原创 学习binder机制的简要笔记
如标题所言,只是做为学习后的思想总结,仅标识出个人关注的要点。一、关注的函数wake_up_interruptible proc/thread(9)wake_up_interruptible_all proc(1)wait_event_interruptible thread(1)wait_event
2015-04-10 14:53:58 1370
原创 astyle进行源文件格式化的扩展
astyle是一个对源文件进行格式化的不错工具,它可以嵌入到编辑、编译工具中,也可能直接在命令行运行;可以针对单个文件,也可以针对目录。本文所描述的方法,是指在window下的命令行方式,通过鼠标拖动文件夹到批处理上进行格式化的简易方法,使用的版本是2.0.1。批处理内容如下:@echo off::批量将指定目录中的所有C文件用Astyle进行代码美化操作,支持鼠标拖动操作::参考htt
2015-03-13 09:39:18 1961
原创 Wince中的服务变化
这里所说的服务就是字面上所表达的意思,不过从wince5=>wince6=>wince6 r3有一些变化,引用微软的原文(引用一)如下:Servicesd.exe is a process that acts as a host to service dynamic-link libraries (DLLs). Long-running services that do not need di
2015-02-03 19:38:08 1123
原创 wince的diskcache和filecache
wince系统中存在diskcache和filecache两种cache,通俗的来讲前者是
2014-11-18 16:11:22 2053 1
原创 Android的surface的三种工作方式
注:基于kitkat进行的分析Surface的三种使用方式Native层的Surface工作方式有:仅在Proxy端、Proxy和Service端协同、仅在Service端工作三种方式(第三种方式有待确认)。前两种方式在Proxy端都有共同的预处理工作要做,如下:Proxy端1、创建SurfaceFlinger的本地代理sp client = new Surface
2014-11-13 14:46:33 16067
原创 流驱动XXX_Init中分配内存引起的问题
全局类(无继承、无虚函数、无静态成员)在XXX_Init中进行的new,按照往常应用开发的经验认为类占用内存是整体清零了,实际运行中发现有成员变量是非零值(具体来说是排列靠前的成员),而且数值每次都一样。改用malloc在XXX_Init中分配同样大小的内存,问题同样存在。内存分布情况是这样的:
2014-10-20 11:08:20 1169
原创 android的hwc浅析
注:本文档基于kk进行分析,着重于概念的精确定义和版本历史演变一、关于hwc的介绍广义的来讲是指利用硬件完成图像数据组合并显示的功能(能力),狭义的来讲就是指Hwcomposer HAL。1、从广义的角度来分析,有几个概念需要精确定义(注意字母大小写差异)(1)hwc:利用硬件完成图像数据组合并显示的功能(能力),具体到代码级别它是由多个类如SurfaceFling
2014-09-15 11:05:36 26489 5
原创 高通方案camera子系统daemon存在原因
具体的说来,高通msm系列的android方案中,camera子系统有一个mm-camera-daemon的服务进程是开机自动运行的。它也是很多人诟病的一个东西:太耗电了。为什么要这么设计在(https://www.mail-archive.com/linux-media%40vger.kernel.org/msg26091.html)有明确的答案,摘抄其关键部分如下:For MSM came
2014-09-13 16:24:31 5942 2
原创 深究repo的所谓“续传”功能
从网上了解到的种种下载android源码失败的处理,都提到repo同步是可以“续传”的,我也一直认为这个所谓的“续传”是“断点续传”的意思。直到我在下载android-x86这个开源项目时,才发现这个“续传”不是“断点续传”。现象是这样的:由于服务器的不稳定,在下载到frameworks/base这个有几GB的project时老是失败,提示信息先后是“The remote end hung
2014-08-29 10:56:14 19512 5
原创 H264基础概念
一、MPEG-4说明1、VOP视频编码技术VO(Video Object):视频对象,它是场景中的某个物体,最简单的情况下就是矩形框,它是有生命期的,由时间上连续的许多帧构成。VOP(Video Object Plane):视频对象平面,它可以看作是VO在某一时刻的采样,即一帧VO。2、运动估计与运动补偿技术I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补
2014-08-06 12:45:43 13562 1
原创 VS2008编译chrominu问题汇总
网上有大把的使用VS2008编译chromium的文章,但是经过我的实践,最靠谱的还是“地址一”所描述的方法。编译成功后,从代码下载、生成工程、编译出现的种种问题总结了一下,大致是下面几个问题:1、下载问题:由于中华局域网的问题,导致下载工具以及代码更新都费了很大力气,需要通过代理的方式才行,为此前提条件就是需要有一个稳定的代理服务器。关于下载工具,我是使用的官方提供的deploy_tool工
2014-02-20 15:02:11 1761
原创 WINCE系统调用的本质
WINCE的系统调用采取的方式没有使用ARM推荐的软件中断方式(即SWI指令,现在改为SVC,不过ARM的内联汇编方式仍然认可SWI),而是使用的ARM的异常中断PrefetchAbort,关于这一点在WINCE的私有代码armtrap.s中可以看到具体实现:sub r12, lr, #0xF1000000cmp r12, #MAX_METHOD_NUM-0xF1000
2013-12-09 14:29:39 1330 1
原创 EAWebKit的WincePort
关于EAWebKit的相关信息,是从(http://blog.csdn.net/achellies/article/details/6550050)这个网址了解到的,在此文中讲到利用一个开源的界面库DuiLib和duibrowser做为EAWebit的graphic和backend,由于原文没有讲到如何移植到Wince,本着偶一贯的作风:自己动手丰衣足食,开始移植工作。移植工作分为三个部分,按
2013-10-30 12:44:40 3347 6
原创 编译webkit的wince版本
编译的过程基本上参照的是(http://trac.webkit.org/wiki/WinCE#WindowsCEPortofWebKit),做了一些小的调整一、使用工具版本vs2005 + sp1cmake 2.8.11.2(此处需要注意的是在系统路径中cygwin的cmake路径不能放在此路径前面)gperf 3.0.1win flex_bison 2.4ActivePe
2013-10-21 12:28:49 1988 2
转载 Wince禁止自动关机/suspend
转自:http://www.proarm.net/wince-disable-auto-suspend.html本文描述禁止wince自动关机或者suspend再resume后出现自动关机的情况。wince的注册表有如下内容:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]“ACUserIdle
2013-10-09 10:56:27 2371
原创 另一个基于NEON指令优化的数学库Ne10
在之前曾经找到过一个基于NEON指令的数学库math-neon(见“一个基于NEON指令的数学库”),最近又发现另一个数学库Ne10,其基本介绍如下:Ne10 是由ARM主导开发的一个开源软件库。该库旨在提供一系列通用的,基于ARM NEON架构并且经过深度优化的函数集合。通过调用该库函数可以让软件开发人员免于编写重复的底层汇编代码,同时也能充分利用ARM NEON SIMD指令的并行运算能力
2013-09-14 16:53:27 8554 2
原创 一个基于NEON指令的数学库
这是一个开源的库,地址为https://code.google.com/p/math-neon/,根据项目介绍应该是利用neon指令实现的数学库:包括三角、对数、指数等基于浮点的运算实现,以及矩阵运算,因为是基于neon指令它必须在arm cortex-a架构(有neon指令支持)上才能运行。从项目介绍说因为gcc对于neon的支持不是很好(估计是指neon内在函数效率不如汇编),所以核心的运算代
2013-06-19 15:20:22 9857 9
原创 wince下三角、对数、指数函数优化
在上一篇中,论述了使用wec7的neon内在函数进行代码优化的可能。在这一篇中将讲述neon指令对三角、对数、指数函数效率的提升。一、测试平台1、CPU: Cortex-A8 1GHz2、OS: Wince6R33、COMPLIER: 1、vs2005 2、wec7二、测试代码链接1、http://gruntthepeon.free.fr/ssemath/neon_math
2013-04-02 10:16:31 1842
原创 使用WEC7的NEON内在函数功能
对于ARM交叉编译器,GCC或RCVT能够支持内联汇编,而WINCE6是不支持的。在高版本的GCC(如4.6)或RCVT(如4.0)针对Cortex-A8还增加了新的方式,那就是内在函数(intrinsic),即在代码编写时通过引入头文件arm_neon.h,在C或C++文件中加入相关NEON指令的内在函数,编译器会将此函数按类似inline方式进行展开,这样即简化了汇编代码的编写,举一个简单
2013-03-30 18:12:13 3967 1
opencv_wince_patch
2016-03-10
libjpeg-turbo的wince版本补丁文件
2015-11-25
duibrowser移植到wince的代码patch
2013-10-30
math-neon for wince
2013-06-19
ARM® VFPv2 Floating Point Support Library for Windows® Embedded CE 6.0
2010-03-12
SiRF A4 Developer Manual
2009-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人