理解 Linux 配置文件 本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。介绍每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU
pjsip,webrtc音视频解决方案 WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android, ios。pjsip + 移植并且优化后的webrtc整个音频引擎 + silk + 视频 + 优化后的p2p 协议;VoiceEngine:音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整
阐述信号与系统中三大变换(即傅里叶变换、拉普拉斯变换、Z变换)的关系 傅立叶变换是最基本得变换,由傅里叶级数推导出。傅立叶级数只适用于周期信号,把非周期信号看成周期T趋于无穷的周期信号,就推导出傅里叶变换,能很好的处理非周期信号的频谱。但是傅立叶变换的弱点是必须原信号必须绝对可积,因此适用范围不广。拉普拉斯变换是傅立叶变换的推广,傅立叶变换不适用于指数级增长的函数,而拉氏变换相当于是带有一个指数收敛因子的傅立叶变换,把频域推广到复频域,能分析的信号更广。然而缺点
关于FitIn和FitOut 首先说明下什么是FitIn,FitOut,我刚接触这个概念时也是一头雾水!这两个名词是我在新公司听到的,不知道类似的功能,大家是不是也是这么称呼!以下是我理解的!先总体说下:FitIn和FitOut都是使图片宽或高和容器一致,然后缩放时,FitIn是再使高或宽小于容器的,FitOut是再使高或宽大于容器的。FitIn:比如说有张图片,它的宽或高大于放图片的容器的宽高,如果想要图片完整地
样本函数 样本函数随机过程X(t,w)是定义在T*W上的二元函数:(1)当t固定时,X(t,w)是定义在W上的随机变量 (2)当w固定时,X(t,w)是定义在T上的普通函数,此时间函数即称为随机过程的样本函数
音频编码对比 opus6 kb /秒到510 kb / s的比特率采样率从8 kHz(窄带)到48 kHz(全频)帧大小从2.5毫秒到60毫秒支持恒定比特率(CBR)和可变比特率(VBR)从窄带到全频段的音频带宽支持语音和音乐支持单声道和立体声支持多达255个频道(多数据流的帧)可动态调节比特率,音频带宽和帧大小良好的鲁
语音识别的技术原理 简要给大家介绍一下语音怎么变文字的吧。首先说一下作为输入的时域波形。我们知道声音实际上是一种波。常见的mp3、wmv等格式都是压缩格式,必须转成非压缩的纯波形文件,比如Windows PCM文件,即wav文件来处理。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。采样率越大,每毫秒语音中包含的点的个数就越多。另外声音有单通道双通道之分,还有四通道的等等。对语音识别任务来说,
高效视频编码(HEVC)标准概述(一) 英文原稿下载地址:http://download.csdn.net/detail/jzeng76/6036335 高效视频编码(HEVC)标准概述 摘要——ITU-T的视频编码专家组和ISO/IEC的运动图像专家组目前正准备将高效视频编码(HEVC,High Efficiency Video Coding)作为最新的视频编码标准。HEVC标准化工作的主要目标,是
高效视频编码(HEVC)标准概述(四)之ABCDEF IV. HEVC视频编码技术和从H.261 [2]开始的、之前所有ITU-T与ISO/IEC JTC 1制定的视频编码标准一样,HEVC的设计沿袭了经典的基于块的混合视频编码方式(如图1所示)。这种基本的源编码算法混合了利用时域统计相关性的帧间预测、利用空域统计相关性的帧内预测,并对预测的残差信号进行变换编码以进一步利用空域统计相关性。相对于先前的视频编码标准,HEVC在压缩效率方面的重大
高效视频编码(HEVC)标准概述(三) CSDN贴图很麻烦,自本节起,相关图表请参考原文,原文的下载链接见第一节。 III. 高阶句法HEVC的高阶句法包含从H.264/MPEG-4 AVC的NAL继承下来的多种元素。NAL的作用是将表示图像内容的视频编码层(VCL,video coding layer)数据映射到不同的传输层上,包括RTP/IP、ISO MP4和 H.222.0/MPEG-2系统,
高效视频编码(HEVC)标准概述(二) II. HEVC 编码设计和特性的要点HEVC标准是为达到如下多个目标而设计的:编码效率,易于整合到传输系统,数据丢失的恢复,以及并行处理能力。下列各段简要描述标准所设计的用以实现上述目标的关键元素, 以及可以产生有效码流的典型编码器操作。各元素的相关句法和解码过程的更多细节将在第III、IV节中给出。A. 视频编码层 HEVC的视频编码层采用了自H.261以来所有的视频压缩标准
VP8 的败笔 VS H264 VP8 视频压缩解决方案厂商On2 Technologies公司现已推出最新的视频压缩格式On2 VP8。On2 VP8是第八代的On2视频,能以更少的数据提供更高质量的视频,而且只需较小的处理能力即可播放视频,为致力于实现产品及服务差异化的网络电视、IPTV和视频会议公司提供理想的解决方案。 对更高效视频压缩格式的需求显着 高清电影和电视节目的下载与发送如今
解读HEVC视频标准的环内滤波 1.0 引言 高效视频编码(HEVC)是H.264/MPEG-4 AVC(高级视频编码)的一种升级版视频压缩标准(即ISO/IEC 23008-2 MPEG-H第2部分和ITU-T H.265)是由ISO/IEC动态图像专家组(MPEG)和ITU-T视频编码专家组(VCEG)共同编写的。与业界标准H.264相比,HEVC能够以几乎同样的视频质量实现半比特速率,并且有望在视频应用中得到广
h264 图像、帧、片、NALU H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR帧的概念。对于 H.264中出现的一些概念从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。这里有几点值得说明:(1)、在 H.264协议中图像是个集合概念,顶场、底场、帧都可以称为图像(本文图像概念时都是集合概念)。因此我们可以知道,对于H.264 协议来说,我们平常所熟悉
webrtc(不定时更新) 话唠】hhoolbuild/common.gyp static_library 改为 shared_library【话唠】hhool2014/10/10 21:58:56gclient runhooks
WebRTC 杂谈 参考:http://www.csdn.net/article/2012-08-14/2808592http://www.leiphone.com/0925-ce6093-webrtc.htmlhttp://www.infoq.com/cn/news/2011/06/google-webrtcWebRTC 百度 百科Dongdong Deng 写的WebRT
STUN和TURN技术浅析 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。
gallery总结 进入Gallery以后通过startDefaultPage启动界面,data.putString(AlbumSetPage.KEY_MEDIA_PATH, DataManager.TOP_LOCAL_TIME_SET_PATH);getStateManager().startState(LocalTimeAlbumSetPage.class, data);data.putString(Al
启动hbase 报错 Address already in use 的解决办法 master: java.net.BindException: Address already in usemaster: at sun.nio.ch.Net.bind(Native Method)master: at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:1
分布式搜索方案选型 分布式搜索方案选型之一:Solr 我第一个了解到的分布式搜索框架是solr,它是由java开发的,基于lucene的分布式搜索引擎,提供了类似于webserver的编程接口,是一个比较成熟的搜索引擎,目前很多公司都在使用。很快我就部署了一个由4台机器组成的solr集群,开始导公司的数据进去测试,导的数据为200万。导入速度非常快。接下来就开始测试查询效率,发现它是有缓存的,第一次
webtc代码流程 接收数据:OnPacketReceived->ViENetworkImpl::ReceivedRTPPacket()->ViEChannel::ReceivedRTPPacket()->ViEReceiver::ReceivedRTPPacket()->ViEReceiver::InsertRTPPacket()->ModuleRtpRtcpImpl::IncomingRtpPacket()->R
对照Jingle的XMPP stanza理解Libjingle的几个关键数据结构 1.SessionManager管理多个Session:Cpp代码 stanza理解Libjingle的几个关键数据结构" style="margin:0px; padding:0px; border:0px; list-style:none">class SessionManager { typedef std::map SessionMap;
ICE协议 这个文件描述了以UDP为基础的请求/回答模式的多媒体会话的NAT穿越的协议。这个协议名叫ICE。ICE利用了STUN协议和它的扩展版本TURN。ICE可以被任何请求/问答模式的协议利用。例如sip。1. 简介RFC 3264 定义了一个双向会话描述协议(SDP),以建立多媒体回话。这种请求/回答模式被sip利用。 请求/回答的协议很难穿越NAT。因为它们想要建立
简析STUN协议 STUN简介STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。一旦
P2P的原理和常见的实现方式(为libjingle开路) 为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN、ICE等)实现细节,要么中间有很多纰漏。最后去伪存真,归纳总结了一下,希望对以后的同行有些许帮助。 如果有什么需要讨论或者指正的,欢迎留言或者邮件peakflys@gmail.com P2P实现的原理
libJingle中关于p2p的一段文字翻译 Peer-to-Peer Component P2P组件 This component manages the connection between the local and remote computer. It sends and receives peer to peer data across the network, generates local
libjingle源码分析之:Session和Transport 摘要 本文介绍了Session和Transport模块。概述 Session、SessionClient、Transport和TransportChannel的关系如下图所示:模块解析SessionClientSessionManager中,按content_type来区分不
libjingle源码分析之:P2P 摘要 本文主要介绍了libjingle库中的P2P模块。概述 在libjingle中,P2P模块并非一个完全独立的模块,它的实现依赖于Jingle协议,需要通过libjingle中的其它模块获取必要的信息和支持。P2P模块的内部结构及与其它模块的关系如下图所示。 如前文所示,Soc
libjingle源码分析之:Thread和SocketServer 摘要 本文主要分析了libjingle源码中的Thread和SocketServer模块,以及它们是如何协同工作的。首先,介绍了Thread和SocketServer的模型,给出了如何使用Thread的示例。然后,分析了Thread中的默认消息循环的处理流程和如何自己处理消息。概述 libjingle源码中,Thread和So
libjingle翻译之《Important Concepts(重要概念)之Data Packets(数据包)》 Data Packets(数据包)计算机间的P2P数据被多重协议封装,就像下图演示的,具体被什么协议封装依懒于实现的应用程序。并不是每个应用程序都能用到所有的协议,例如:文件传输应用使用了pseudo-tcp协议,但是语音聊天应用却没有使用
libjingle翻译之《Important Concepts(重要概念)之Candidates(候选)》 Candidates(候选)libjingle一个主要的好处就是它可以穿透防火墙和NAT设备进行链接协商。libjingle使用ICE机制穿透防火墙。libjingle应用程序第一步要做的就是在试图协商一个链接时为其它计算机的链入创建一个潜在的本地端口地址链表。链表中的每个潜在的地址就称作一个候选。候选就是“IP地址:端口”对应对,这些对应对使应用程序和其它计算机互联(技术上,这些对应对只在本
libjingle翻译之《Important Concepts(重要概念)之Transports, Channels, and Connections(传输、通道、链接)》 Transports, Channels, and Connections(传输、通道、链接)每个p2pTransportChannel代表了本地机与远程机的数据通道。这个通道实际上包含着(隐藏着)一个设计复杂而健壮的体系。P2PTransportChannel管理着大量的不同的Connection对象,每个对象代表了一个不同种类的链接(UDP,TCP等)。一个Connection对象实际上封
libjingle翻译之《Important Concepts(重要概念)之Connections(链接)》 Connections(链接)一个p2p的链接实际上由两个通道组成。● session negotiation channel(也称作signaling channel),会话协商通道。是为数据链接服务的沟通通道。这个通道被用来回应取得一个链接的请求,交换候选,和协商会话的细节(比如:套接字地址,需要的编码方案,交换的文件,链接改变请求,终止请求)。这个通道是两个计算机之间建立的第一个链
libjingle翻译之《Important Concepts(重要概念)之SSL Support(SSL支持)》 分类: libjingle libjingle 支持两种类型的SSL:● OpenSSL (for UNIX)● SChannel (for Windows)使用SSL,应用程序必须执行如下步骤:1、#define FEATURE_ENABLE_SSL (如果编译器是Visual Studio,这个设置是在工程设置中定义的,而不是在代码中)。2、确定SSL_USE_OPENSSL 或SSL_USE_SCH
libjingle翻译之《Important Concepts(重要概念)之Naming Conventions(命名约定)》 Naming Conventions(命名约定) libjingle有一些命名约定,比较有用;OnSomeMethod 凡是以“On”开头的函数,大多和一个信号成员关联起来了,不是在本身对象内就是在其它对象内实现了这种关联。如果此函数被所在对象调用,大有可能是在不同的线程内调用的(即对象通过另一个线程调用自身的函数)。SomeMethod_w 在worker thread中(
libjingle翻译之《Important Concepts(重要概念)之Threads(线程)》 Threads(线程) libjingle 考虑到使用到此库的应用程序的性能,libjingle内部支持多线程。其内组件使用1或2个全局线程:● signaling thread 被用作创建底层(基础)组件, 例如:Session Management,Control,XMPP Messaging组件。● worker thread ( 有时称作channel thr
libjingle翻译之《关于libjingle》 Libjingle 是google talk voice(语音聊天) 和 p2p interoperability(点对点操作)库,是提供了google talk,p2p文件共享和语音呼叫能力的组件集,libjingle包中包含了jingle和jingle语音以及两个被xmpp标准提议的扩展。 About libjingle (关于libjingle) Libjingl
libjingle翻译之《Important Concepts(重要概念)之Signals (信号)》 Important Concepts(重要概念)你应该理解libjingle中以下的重要概念:● Signals (信号)● Threads and Messages (线程、消息)● Naming Conventions
linux mint 13 支持KVM spice 官方qemu-kvm不支持,下载最新源码加--enable-spice编译,还要编译spice-server。并且/dev/kvm期限要root和777
webrtc中的带宽自适应算法 webrtc中的带宽自适应算法分为两种:1, 发端带宽控制, 原理是由rtcp中的丢包统计来动态的增加或减少带宽,在减少带宽时使用TFRC算法来增加平滑度。2, 收端带宽估算, 原理是并由收到rtp数据,估出带宽; 用卡尔曼滤波,对每一帧的发送时间和接收时间进行分析, 从而得出网络带宽利用情况,修正估出的带宽。两种算法相辅相成, 收端将估算的带宽发送给发端, 发
build WebRTC for android 1. gclient config https://webrtc.googlecode.com/svn/trunk2. add "target_os = ['android'] to .gclient (at the very end, outside all brackets)3. gclient sync4. cd trunk5. source ./build/android/envs
搜索引擎的大数据时代 近日百度和药监局达成战略合作,百度将使用药监局的的药品数据为人们提供用药相关的查询。百度为这批数据付出的代价并未提及。天下没有免费的午餐,药监局虽然是要造福于民,但是这批数据显然不会白给。这意味着搜索引擎为数据买单的时代已经到来。笔者今天想谈谈关于搜索和数据关系的一些看法。注意,大数据离我们太远,这不是谈大数据。360与即刻此前已达成战略合作,共同运营食品安全和曝光栏栏目外,且360将与即刻共
视频编解码学习之三:变换,量化与熵编码 第6章 变换编码1. 变换编码变换编码的目的去除空间信号的相关性将空间信号的能力集中到频域的一小部分低频系数上能量小的系数可通过量化去除,而不会严重影响重构图像的质量块变换和全局变换块变换:离散余弦变换(Discrete Cosine Transform,DCT),4x4,8x8,16x16全局变换:小波变换(Wavelet)变换的能量集中特性
视频编解码学习之二:编解码框架 第四章 视频编码基础1. 压缩码流语法:码流中各个元素的位置关系01001001…图像编码类型(01),宏块类型(00),编码系数1001等语义:每个语法元素所表达的意义。例如:图像编码类型2. 编码层次序列(Sequence)图像组(Group of Pictures,GOP)图像(Picture)条带(Slice)宏块(M
视频编解码学习之一:理论基础 第1章介绍1. 为什么要进行视频压缩?未经压缩的数字视频的数据量巨大存储困难一张DVD只能存储几秒钟的未压缩数字视频。传输困难1兆的带宽传输一秒的数字电视视频需要大约4分钟。2. 为什么可以压缩去除冗余信息空间冗余:图像相邻像素之间有较强的相关性时间冗余:视频序列的相邻图像之间内容相似编码冗余:不同像素值出现的概率
引爆2013年互联网格局的十大趋势 每次互联网新的爆发点出现时,成功的原因都会被一遍一遍反复分析,其目的也不外乎试图从中借鉴一些成功的经验。在即将过去的2012年,有一些模式或概念曾被反复提及和探讨,它们或许不是目前盈利模式最清晰的,但却很可能是引爆下一场互联网格局变动不可忽略的趋势。二维码有人说2012年是二维码的营销元年,从市场的普及度来讲,这种论断并不为过。据调查,目前,二维码技术无论是在个人还
点评阿里云、盛大云等国内IaaS产业 摘要:阿里云、盛大云等国内IaaS平台刚刚起步,虽然问题多多,但代表了国内IaaS领域的标杆。同时,百度、腾讯等互联网大佬和一些IDC转型进军IaaS。本文由网银互联云计算部刘黎明发布于个人博客,对国内IaaS格局进行了犀利点评。真不喜欢这么长的文章标题,真怕有的人一口气读不过来,也真怕语文不好的人断句困难,但为了搜索引擎愿意收录,也为了有人看到标题后能够有兴趣读下去,不得不用这个冗长
Amazon虚拟化 Amazon虚拟化 Amazon EC2作为世界领先的IaaS云计算服务,它有下面这些特点:1) 功能丰富:支持丰富的操作系统和海量的软件,还支持负载均衡等,并提供功能强大的Web管理界面和API。 2) 优秀性能:除了快速的启动速度之外,EC2还提供了各种配置强大的套餐让用户随意地选择。 3) 安全性高:EC2提供多种安全机制来确保用户能安全地使用其提供的实例。
网络虚拟化——互联网的下一波革命 导读:最近几天开放网络峰会(Open Networking Summit)的召开掀起了一股软件定义网络(SDN)和OpenFlow的报道热潮。很多人相信,软件定义网络和OpenFlow主导的网络虚拟化必将引发互联网的下一场革命。 成立于5年前的Nicira被认为是硅谷最吸引人的初创企业。简单来说Nicira是一家网络虚拟化公司,它的任务是把内核从网络硬件移植到软件中。这
不仅仅是“屠龙之技”-编译器开发者的精神胜利! 时不时听到周围作编译器相关工作的朋友、同学,对编译这个行业的未来持不乐观态度。诚然,芯片厂商可以通过优化芯片内的结构调整,很容易获得百分之十几以上的加速。而相比之下,编译器方面的静态优化,由于几十年的发展,能挖的性能很有限了,平均能有个10%左右的加速,发表一篇PLDI级别的文章,问题不大。有机会接触芯片细节,并据此开发编译器的,只有几个芯片设计公司;有机会接触到中端优化的,还有一些主推整套平台的
qemu QEMU 的簡介請見 QEMU internals。建置 QEMUQEMU 1.0 預設會編譯成 PIE,這對舊版的 GDB 會有影響。強制開啟 IO thread。使用Clang 編譯 QEMU 會出現以下訊息1)2)3)。In file included from /z/tmp/chenwj/qemu-1.0/user-exec.c:21:/z/tmp/chenw
五大云存储服务对比:iCloud、Google、亚马逊Cloud Drive、Dropbox和SkyDrive 云存储和音乐服务最近已成为一个热门话题,而苹果的iCloud则让云存储服务进入全面战争状态。有人甚至认为iCloud的目的是干掉Windows。种类繁多的云存储服务让人眼花缭乱,下面就从空间、支持文件类型、易用性、支持设备、音乐服务、离线支持、可用性等七大方面对五大云存储服务进行详细介绍。这五大云存储服务是苹果iCloud,Google,亚马逊Cloud Drive,Windows Liv
GPU也玩虚拟机 解析RemoteFX虚拟化技术 ● 解析RemoteFX虚拟化技术 ZDNET至顶网服务器频道 3月29日 编译(文/Desire):在Windows Server 2008 R2 SP1正式发布之前,曾有消息称该版本将支持RemoteFX技术。现在,我们可以从微软官方的技术文档中得知RemoteFX技术的详细情况。 RemoteFX其实不是一个独立的新功能,它作为桌面虚拟化的一部分运行在远程桌面连接之上,能够减轻G
浅谈云计算与数据中心计算 文/林仕鼎云计算概念发端于Google和Amazon等超大规模的互联网公司,随着这些公司业务的成功,作为其支撑技术的云计算也得到了业界的高度认可和广泛传播。时至今日,云计算已被普遍认为是IT产业发展的新阶段,从而被赋予了很多产业和产品层面的意义。由于意义多重,各种概念纷繁复杂,众多公司和从业人员的眼中都有自己的一朵云,正如徐志摩在《偶然》一诗中所说:“我是天空里的一片云,偶尔投影在你的波心”。
云计算架构提供商的私有云路线图梳理 现在私有云的市场也成为众多厂商的必争之地。各种私有云线路图和方案让企业用户看得眼花缭乱,本文对主流的云计算架构提供商的私有云路线图进行梳理,希望能够在企业选择最适合自己的私有云路线时有所帮助。 微软 微软的私有云路线图一直很明确,致力于帮助用户从原有的数据中心平滑过渡到私有云的IT架构,保护了用户的原有投资,具体来说分为五步:首先是使用Active Directory实
虚拟化管理软件比较(Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt) 最近笼统地学习和试用了几款比较有名的虚拟化管理软件。学习的内容包括Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt。借这一系列文章,对过去一个月的学习内容作一个阶段性的总结。(1)授权协议、许可证管理、购买价格等方面的比较 授权协议许可证
[译]关于Android图形系统一些事实真相 【IT168 技术】 现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽,下面给大家一些关于Android硬件渲染的事实真相,硬件加速并非大家想的那么完美,而我们也一直在改进! 1. Android 一直在使用硬件加速。实际上从1.0版本之后,所有的窗口元素的合成与显示都是通过硬件完成的。 2.这意味着许多你所看见的动画都是被加速过的:按钮的显示、通知栏下拉的阴影、不同
Hotspot 性能架构 第一章:介绍和概述Java HotSpot虚拟机是Sun公司的Java平台一个高效的虚拟机实现。Java HotSpot技术提供Java标准平台的基础设施,提供对快速开发、部署关键业务的桌面和企业应用程序的解决方案。Java SE可应用在Solaris操作环境、Linux和Windows下,也可以应用在其它通过Java技术认证的平台下。 Java平台已经成为软件
LLVM Language Reference Manual 摘要该文档是LLVM汇编语言的参考指南。LLVM是基于表示的静态单赋值(SSA),该表示提供类型安全、低层级操作,灵活性,及简洁表示所有高层级语言的能力。这是贯穿各方面LLVM编译策略的通用代码表示。 简介LLVM代码表示用于三个不同形式:作为在内存(in-memory)编译器IR、磁盘比特码表示(适合即时编译器的快速加载),以及人类可读的汇编语言表示。这让
使用Flex Bison 和LLVM编写自己的编译器 本文由赵锟翻译,酷壳发布,转载请注明译者和出处,请勿用于商业用途原文出处:http://gnuu.org/2009/09/18/writing-your-own-toy-compiler 1、介绍我总是对编译器和语言非常感兴趣,但是兴趣并不会让你走的更远。大量的编译器的设计概念可以搞的任何一个程序员迷失在这些概念之中。不用说,我也曾今尝试过,但是并没有取得太大的成功,我以前
如何将 Android带入互联网数字家庭? 系列文章第四篇 作者 章立 ARM公司在第一篇中,我们分享了数字家庭软件平台的发展趋势和特点;在第二篇中,我们归纳了将Android移植到电视、机顶盒平台需要面对的五大技术挑战并重点探讨了挑战1 : 符合电视体验的2D/3D图形性能和用户交互模式方面的挑战;在第三篇中, 我们探讨了更多的挑战, 包括“适合大屏的丰富多媒体影音体验”,“如何集成数字电视相关功能”, “如何推动应用开发者开发适合于TV的Andro
如何将 Android带入互联网数字家庭? 第三篇 在第一篇中,我们分享了数字家庭软件平台的发展趋势和特点;在第二篇中,我们归纳了将Android移植到电视、机顶盒平台需要面对的五大技术挑战并重点探讨了挑战1 : 符合电视体验的2D/3D图形性能和用户交互模式方面的挑战。在本篇中,我们将一起来继续分析其他的技术挑战。挑战 2 : 适合大屏的丰富多媒体影音体验:Android设计时是以移动手持设备为目标的,因此并没有考虑作为家庭娱
连载二:如何将 Android带入互联网数字家庭? 在上一篇中,我们探讨了数字电视/机顶盒软件架构的现状与未来,分享了数字家庭软件平台未来的发展趋势和特点(http://bit.ly/jCvlNs)。在本篇中,我们将一起来探讨为什么Android能够成为未来数字家庭软件平台的选择之一;而我们又如何才能将原本为手持设备量身定做的Android移植到电视/机顶盒平台?1. 首先,我们需要回答的第一个问题就是: Why Android?为什么An
连载一:如何将如何将Android带入互联网数字家庭? Android作为优秀的开源软件解决方案, 它的作用域已经从手机市场,波及到了平板电脑,甚至以数字电视、机顶盒为典型应用的数字家庭领域。Android最初是为手机移动设备量身定做的,它默认支持的分辨率,色彩深度, 多媒体播放架构,用户交互方式,2D/3D图形的性能等都无法适应类似于数字电视,机顶盒这样的家庭应用。因此,将Android移植到数字电视或机顶盒需要对Android进行大量的定制和修
EDID在HDMI高清设备中的应用说明 HDMI(High Definition Multimedia Interface),作为新一代数字多媒体接口,能够传输高速率无压缩的数字音频、视频数据,HDMI1.2 像素时钟可达165M,数据速率达到 4.95Gbps,而HDMI1.3 像素时钟则高达340M, 数据速率达到10.2Gbps。 目前高清1080p的数据带宽是2.2Gbps,HDMI完全可以用在高清图像传输中。事实上,目前高清图
GObject Tutorial GObject TutorialRyan McDougall(2004)目的—这篇文档可用于两个目的:一是作为一篇学习Glib的GObject类型系统的教程,二是用作一篇按步骤的使用GObject类型系统的入门文章。文章从如何用C语言来设计一个面向对象的类型系统开
多核处理器的九大关键技术 与单核处理器相比,多核处理器在体系结构、软件、功耗和安全性设计等方面面临着巨大的挑战,但也蕴含着巨大的潜能。CMP和SMT一样,致力于发掘计算的粗粒度并行性。CMP可以看做是随着大规模集成电路技术的发展,在芯片容量足够大时,就可以将大规模并行处理机结构中的SM
编译技术的应用 1 高级程序设计语言的实现2 针对计算机体系结构的优化 a 并行性 b 内存层次结构3 新计算机体系结构的设计 a RISC b 专用体系结构4 程序翻译 a 二进制翻译 b 硬件合成 c 数据查询解释器 d 编译然后模拟5
开始TI OMAP4 项目 TI还没有量产的OMAP4,有机会接触到最前沿的多媒体处理器平台OMAP4- 准确地讲,是OMAP4430,是个很复杂的系统HOST-SLAVE架构从下图可以看出,左边HOST是Dual Core Coretex-A9处理器,主要运行HLOS(High Level OS,比如Linux,Android系统)右边虚线框是SLAVE,就是传说中的Ducati子系统
Android OTA 升级之五:updater Android OTA 升级之五:updater作者: 宋立新Email:zjujoe@yahoo.com前言 可以说,前面分析的OTA升级的各部分代码都是在搭一个舞台,而主角现在终于登场,它就是updater. Google的代码架构设计非常好,各部分尽量松耦合。前面介绍升级脚本时,可知有两种类型的脚本,amend & edify. 他们各自对应一个updater. 这里,我们主要关
Android OTA 升级之四:进入根文件系统 Android OTA 升级之四:进入根文件系统作者: 宋立新Email:zjujoe@yahoo.com前言 从bootloader 进入Recovery 模式后,首先也是运行Linux内核,该内核跟普通模式没有区别(减轻了BSP开发者的任务)。区别从执行文件系统开始。 Recovery 模式的细节就隐藏在其根文件系统中。 下面,我们就看看进入Re
Android OTA 升级之三:生成recovery.img Android OTA 升级之三:生成recovery.img作者: 宋立新Email:zjujoe@yahoo.com前言 得到了ota升级包后,我们就可以用它来升级系统了。Android 手机开机后,会先运行 bootloader。 Bootloader 会根据某些判定条件(比如按某个特殊键)决定是否进入 recovery 模式。Recovery 模式会装载 r
Android OTA 升级之二:脚本 ota_from_target_files Android OTA 升级之二:脚本 ota_from_target_files作者: 宋立新Email:zjujoe@yahoo.com前言 前面介绍了ota package 的编译过程,其中最核心的部分就是一个 python 脚本:ota_from_target_files. 现在我们分析这个脚本。先看一下帮助不带任何参数,先看一下它的帮助:
Android OTA 升级之一:编译升级包 Android OTA 升级之一:编译升级包作者: 宋立新Email:zjujoe@yahoo.com前言 OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了完全升级、增量升级模式,可以通过 SD 卡升级,也可以通过网络升级。 这里,我们先研究最简单的情况,通过 SD 卡进行完全升级。 如何执行升级就不多
Android debugging using Lauterbach Trace32 software Today I will briefly go over my thoughts on Android debugging using Lauterbach Trace32 software. This blog entry attempts to introduce a possible method of Trace32 JTAG debugging to developers worki
在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs 本系列文章包括两篇,它们文详细地地介绍了Linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。本文是该系列文章的第二篇,它介绍了procfs、seq_file、debugfs和relayfs,并结合给出的例子程序详细地说明了它们如何使用。一、procfsprocfs是比较老的
在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink 燚 杨 (yang.y.yi@gmail.com), 计算机科学硕士2006 年 2 月 16 日本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。本文是该系列文章的第一篇,它介绍了内核启动参数、模块参数与sysfs、sysct
SDIO的驱动的通讯基本分析 SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。 SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是
將 SDL整合至Android平台 網路上有很多文章在講解如何將SDL整合到Android的平台上,我自己也試著動手做看看,順便將一些步驟及心得整理起來。以下是這次我所用到的開發環境。- Cygwin- Android NDK:android-ndk-r4b-windows- SDL:1.2.14《Step 1》將SDL中的Makefile.minimal修改如下 (紅體字) :#
在 Android上實作一個FFmpeg+SDL的media player 我們想要在Android上面開發自己的media player,第一個想到的就是利用FFmpeg來實作。FFmpeg是一個跨平台的編解碼函式庫,我們可以呼叫它所提供的API來完成。另外,FFmpeg有提供一個小程式ffplay,它本身就是一個media player,所以我們打算以ffplay作為程式的基礎。以下是這次我所用到的開發環境:- Cygwin- Android NDK:android-ndk-r4b-window
將 FFmpeg整合至Android平台 FFmpeg是一個跨平台的影音編解碼函式庫,我們可以用來實作一個在Android平台上的media player。首先先build出一個Android版本的FFmpeg。以下是這次我所用到的開發環境:- Cygwin- Android NDK:android-ndk-r4b-windows- FFmpeg:0.6.1《Step 1》在Android NDK上
Stagefright (7) - Audio和Video的同步 講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A
Stagefright (7) - Audio和Video的同步 講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A
Stagefright (6) - Audio Playback的流程 到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。(1) 當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動status_t AwesomePlayer::play_l()<
Stagefright (5) - Video Rendering AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。(1) 要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderervoid AwesomePlayer::onVideoEvent(){ ... if (
Stagefright (4) - Video Buffer傳輸流程 這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t OMXCodec::read(...){ if (mInitialBufferSubmit) { mInitialBuf
Stagefright (3) - 選擇Video Decoder 在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的OMXCodec::Create()會回傳video decoder給mVideoSource。<br /
Stagefright (2) - 和OpenMAX的運作 Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){ mClient.connect();}status_t OMXClient::connect(){ mOMX = service->getOMX();}sp MediaPlayerService::getOMX(
Stagefright (1) - Video Playback的流程 在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相當穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢。以下我們就先來看看Stagefright是如何播放一個影片檔。Stagefright在
Android.mk文件语法规范及使用模板 Android.mk文件语法规范根据eoeandroid上的的连载,进行一些更新、修改和加亮。今天翻译ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt)Android.mk文件语法规范Introduction:Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法。在阅读下面的内容之前,假定你已经阅读了doc
Ubuntu下PDF乱码解决办法 一半情况下,用自带的阅读器看PDF是有乱码的,也就有人提示安装sudo apt-get install xpdf-chinese-simplified来解决,但是偶尔也有人(跟我一样)安装了xpdf-chinese-simplified,还是有乱码。嘿嘿。那么就按照下面的办法来吧!1.在下载poppler-data,解压2.在终端执行:cd /解压路径/poppler-data-0.13.再输入:
深刻理解Linux进程间通信(IPC) 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT
Linux环境进程间通信(五): 共享内存(下) 在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同。系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统s
u-boot的Makefile分析 U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。u-boot源码结构 解压就可以得到全部u