0.闲来无事,想研究webrtc,看了一些网上的文章之后,觉得谬误较多,以讹传讹的比较多,自己试验了一把,记录一下。 官网的写的教程在实践中也觉得不用那么复杂,有种落伍与繁冗的感觉。 1.我想看的是webrtc在android平台的使用,所以就以android平台下载/编译为例子。由于周知的原因,w Read More
posted @ 2017-02-15 19:17 mr_nop Views(1405) Comments(0) Diggs(0) Edit
稀里糊涂也学习了几种编程语言了,虽然每种都只是能应付平时工作,看到神奇的用法时仍然要去查查语法。 每学一门新语言,除去语法规则,其中最常用的最需要熟练掌握的东西,却都是差不多的。小记一下,以后再学新语言也可以有所专注,能够快速上手。 1.数据结构 对于每一门语言,内建的一些数据结构是最最常用的,数组 Read More
posted @ 2016-03-22 23:22 mr_nop Views(359) Comments(0) Diggs(0) Edit
整个AOSP代码,包天包地,从kernel,libc,gui,net……简直包括了绝大多普通程序员职业生涯涉及的整个领域。其实,开源界早已经遇到并且解决了Android的很多问题,不过google讨厌GPL说起,或者说,google为了照顾更多的商业公司,以一已之力,重造了很多轮子。下面缩缩。gli... Read More
posted @ 2014-11-24 00:38 mr_nop Views(663) Comments(0) Diggs(0) Edit
看电视麻,必须有节目才行。节目从哪里来?自然要搜索才行。我们就来介绍一下搜索功能如何实现。一,搜索所需要的硬件1,当然是tuner,就是我们俗称的高频头,因为节目都是由信道中的一个一个频点所承载的,我们要得到频点里的电信号,这个部件自然是不可缺少的。for example,我们要看ccav-1,假定... Read More
posted @ 2014-04-20 17:04 mr_nop Views(1504) Comments(0) Diggs(0) Edit
开始写时,想把vlc/ffmepg/x264/xvid/都弄一遍,觉得很多代码都要自己编译一下才爽,后来发现,如果不做二次开发,拿dll回来用,足够了,不用费劲自己搞环境。大部分时间大家又想用windows平台下的编译方法,这又更加麻烦了,因为windows的shell环境太弱了,gcc又需要另外装,太麻烦了。而且想弄的库什么的太多,我乃普通人,学不了这么多东西。另外有太多事情大家已经重复做过很多次,写了很多文章,我不用画蛇添足了。所以我决定打个折扣,只写一些大家不太关心的,但是又有一些人想知道的。我要是能把264编解都搞定,xvid/ffmpeg又能用得虎虎生风,也不会像现在这样写普及文章了 Read More
posted @ 2014-04-10 18:18 mr_nop Views(533) Comments(0) Diggs(0) Edit
一,概念解释什么是渲染?这是高大上的说法,翻译成正常语言,就是把图像缓冲区的数据显示到屏幕的过程,就是渲染。原理说白了很简单,但实际操作中有太多因素需要考量。OS/硬件提供的加速机制/解码后图像数据格式/字幕数据的格式。。。。刚开始查找资料时,我总是试图找到所有的渲染方式,后来发现这实在错的比较离谱。因为说到底,这是一个图形学的问题:如何在计算机屏幕上绘图。不同的图形库有不同的绘图接口,太多的厂商有自己的图形库,根本不可能穷举出所有的图形库。我们只能讨论一些相对主流的方式。另外去找所有的图形渲染方式也是没有意义的,因为他们的理念大体上又是差不多的,只是API不同。唯一的要求是,你要画的足够快, Read More
posted @ 2014-03-27 23:37 mr_nop Views(1027) Comments(0) Diggs(0) Edit
在一个gpu如此强大的时代,视频解码怎么能少了gpu厂商的参加。为了用硬件加速视频解码,厂商定义了一些api。 好吧,一旦和硬件打交道,就会有os的参加,有了硬件与os参加,api肯定会变成很凌乱,看了一点代码,一些wiki,一些文档,写个总结,希望真正的专家斧正一下。windows平台: 微软一家说了算,硬件都是小弟。所以api没那么凌乱。就一种 DXVA(directx video acceleration),两个版本,1.0和2.0.linux平台: 什么事到了linux这,都异常让人郁闷。 号称给你很多选择,最自由的选择,如果都不满意,还可以自己定义一套。 其实呢?我根... Read More
posted @ 2013-10-18 15:48 mr_nop Views(2463) Comments(0) Diggs(0) Edit
自己的这个笔记,废了好久,还是要坚持写下去,虽然现在看来,质量不太高,而且很多东西貌似没有说到位,只有自己才看得懂,明显不是技术普及的方式。先说基本原理,这个基本就是抄书了,因为不是做科研的,很多东西都是人们用了很多年才逐渐总结出来的。对于算法研究而言,本身就是要先知道哪个地方可以努力,哪些地方行不通。这些原理,就是指明方向的。一.视频压缩的可行性1.空间冗余一幅静态图像,比如人脸。背景,人脸,头发等处的亮度,颜色,都是平缓变化的。相邻的像素和色度信号值比较接近。具有强相关性,如果直接用采样数来表示亮度和色度信息,数据中存在较多的空间冗余。如果先去除冗余数据再编码,表示每个像素的平均比特数就会 Read More
posted @ 2013-09-04 23:56 mr_nop Views(6778) Comments(3) Diggs(0) Edit
在讨论stagefright如何调用硬件解码之前,我们要先清楚几个问题。我不展开这几个结论是如何得来的,因为这部分属于进程间通信binder的理解,和多媒体本身无关。一.问题空间这个有点像方法学上的东西了,呵呵。其实我们讨论一个问题,首先要观注的就是,什么是我们应该关心的,什么是我们在这个问题空间里不用解决的。上次我们说到,awesomeplayer所有codec,包括软解与硬解的,都是由omx封装的。我的第一个结论就是:OMX是一个server,等同于surfaceflinger,audioflinger的server。既然是server,那么,肯定存在客户端与服务器两个方面,另外,serv Read More
posted @ 2013-08-30 16:15 mr_nop Views(4469) Comments(1) Diggs(0) Edit
玩了两天rtp协议,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,几个协议的区别和概念弄明白了。这里记录一下。rtsp:类似用户界面操作,和Http比较类似,提供播放,停止,加入等功能。注意,这里rtsp只负责发送操作命令,实际的音视频数据,并不由这个协议承载。这是我困惑很久之后才明白的(我是不是太弱了,呵呵) rtsp协议并没有规定底层是由tcp还是udp实现,实际操做中,我通过google搜索发现rtsp确实有tcp和udp两种实现,我就不上抓包数据了,这个博客园里面已经有人干过了。另外这个也算和http不同的一点,http都是tcp。rtp : 这个协议... Read More
posted @ 2013-08-28 15:57 mr_nop Views(14248) Comments(0) Diggs(1) Edit