Linux
xyh01215
这个作者很懒,什么都没留下…
展开
-
Gstreamer的音视频同步 .
一 概述 Gstreamer的音频视频同步,概括起来是一个比较大的问题,因为在网上可以看到很多音视频同步的办法。这里我们只看最普通的一种。以音频时钟做为参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块上的时间大于参考时钟转载 2013-11-20 12:31:34 · 2742 阅读 · 0 评论 -
Linux内核中内存相关的操作函数
1、kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内核空间申请指定大小的内存区域,返回内核空间虚拟地址。在函数实现中,如果申请的内存空间较大的话,会从buddy系统申请若干内存页面,如果申请的内存空间大小较小的话,会从slab系统中申请内存空间。 gfp_t fla转载 2013-12-12 18:01:29 · 682 阅读 · 0 评论 -
__attribute__ 之weak,alias属性
//strong.c#include void symbol1(){ printf("%s.%s\n",__FILE__,__FUNCTION__);}//weak.c#include void symbol1() __attribute__ ((weak,alias("symbol222")));//void symbol1() __attribute_转载 2013-12-30 18:08:14 · 2475 阅读 · 0 评论 -
GNU C/C++ __attributes__
GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。描述函数属性的几个重要的关键字:void noreturnfun() __attribute__((noreturn));//函数不会返回。 void centon() __attribute__((alias("__centon")));//设置函数别名,函数是__cen转载 2013-12-30 17:58:23 · 1043 阅读 · 0 评论 -
为何敏捷开发将成为主流
公司里80后的同事和我聊天时戏称,你们那个时代是20年一个代沟,我们现在4年就一个代沟了。这些年国内各方面的进步实在是在令人目不暇接,在硬件上很多已超过欧美了,在软件和思想上则急起直追。在1978年之前非国营企业的工作是非法的,之后有了小私营企业,但雇用人员在8人以上则被认为是资本主义的剥削。(对于剥削的这个定义,你现在是否觉得不可思议?)根据全国工商联主编的民营经济蓝皮书数据显示,到了2010年转载 2014-01-12 13:32:00 · 695 阅读 · 0 评论 -
深入研究字节对齐问题 .
1. 对齐的原因与作用1.1. 对齐的原因各种硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐。1.2. 对齐的作用最常见的情况是,如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台转载 2014-01-12 13:15:59 · 676 阅读 · 0 评论 -
路由器原理及路由协议
本文通过阐述TCP/IP网络中路由器的基本工作原理,介绍了IP路由器的几大功能,给出了静态路由协议和动态路由协议,以及内部网关协议和外部网关协议的概念,同时简要介绍了目前最常见的RIP、OSPF、BGP和BGP-4这几种路由协议,然后描述了路由算法的设计目标和种类,着重介绍了链路状态法和距离向量法。在文章的最后,扼要讲述了新一代路由器的特征。——近十年来,随着计算机网络规模的不断扩大,大型转载 2014-01-12 13:41:51 · 779 阅读 · 0 评论 -
linux usb 子系统
linux usb subsystem :http://blog.chinaunix.net/uid/13321460/cid-133872-list-1.html转载 2014-01-12 16:11:50 · 554 阅读 · 0 评论 -
linux socket 分析 2
starting /etc/init/network.conf.shreg_sig_handler : done sig 1reg_sig_handler : done sig 14reg_sig_handler : done sig 13srpc_start:680:: start a TCP srpc server! ------> family is 2 ,type is原创 2014-03-15 19:28:13 · 653 阅读 · 0 评论 -
__setup 在内核中的作用
__setup(//做了一次完整的盗贼,我毫无修改的抄袭了一次,但有时间会做量身裁减的//from http://www.linuxforum.net/forum/printthread.php?Cat=&Board=linuxK&main=470221&type=thread关于__setup 在内核中的作用 问题::比如在printk.c有这样一句 __se转载 2014-03-15 18:59:47 · 704 阅读 · 0 评论 -
FFmpeg架构之I/O模块分析 .
注意:这篇转载的文章比较早,写得很清晰,但是新版的ffmpeg的很多数据结构的名字已经改了。因此只能作参考。(例如ByteIOContext已经改名为AVIOContext)1概述ffmpeg项目的数据IO部分主要是在libavformat库中实现,某些对于内存的操作部分在libavutil库中。数据IO是基于文件格式(Format)以及文件传输协议(Protocol)转载 2013-12-11 02:16:46 · 719 阅读 · 0 评论 -
gstreamer应用程序调试
大型应用程序需要完善的debug及log,用于出错调试以及运行时的日志。gstreamer提供了灵活的调试和日志工具 - Gstreamer调试和日志子系统GstInfo。Gstreamer的调试和日志子系统是获取应用程序运行状况的途径。只有在Gstreamer程序初始化以后调试子系统才开始运行,比如调用gst_init()进行初始化。Gstreamer调试和日志子系统在应用程序运转载 2013-11-27 18:30:50 · 1742 阅读 · 0 评论 -
Gstreamer的同步机制
本文编译自gstreamer源代码中的文档,原文的路径是gstreamer/docs/design/part-synchronisation.txt。本文描述了Gstreamer的同步机制,Gstreamer中实现同步的组件如下:GstClock,是全局的,用于pipeline中的所有elements。 GstBuffer的timestamps。 buffers之前的NEW_S转载 2013-11-27 18:34:40 · 1769 阅读 · 0 评论 -
gstreamer核心源码走读typefind原理和对象关系浅析(三)
mark>待完善 如需转载,请注明出处:本博客链接http://blog.csdn.net/acs713/article/details/7742976转载 2013-11-20 19:03:31 · 1116 阅读 · 0 评论 -
相见恨晚之gstreamer衬垫的激活
1.衬垫的激活 当一个bin(箱柜)的状态发生变化时,它里面的元件的状态是按照sink到source的顺序变化的,即先设置sink元件的新状态,再设置source元件的新状态。当状态变化是从ready变到pause时,元件的衬垫开始激活,为数据在元件之间的流动做准备。有些pad,还会启动一个任务(task),来驱动数据流。 对某个元件来说,它通常先激活它的sourc转载 2013-11-20 18:54:01 · 1126 阅读 · 0 评论 -
深入浅出gstreamer的调度模式 .
gstreamer的官方文档里,调度的英文是schedule. 什么是schedule? 它的英文解释为" to plan that something will happen at a particular time “.在gstreamer里,调度的意义跟它基本差不多。在gstreamer里,调度的目的主要有以下几个: (1)在适当的时候通知每个元件去完成相应的任务,确保这些职责转载 2013-11-20 18:54:44 · 1260 阅读 · 0 评论 -
gstreamer 核心源码source创建和识别typefind原理浅析(一) .
一般情况下,用户打开一个多媒体文件,gstreamer首先需要知道文件的类型,然后创建相应的解码器来解析这个文件,最终实现播放这个文件。 一个实现流程实例如下: (1) app程序通知gstreamer会根据uri、文件路径,创建相应类型的src组件,一般为filesrc组件(element)) (2) 接着根据插件名创建type_find组件 (3)转载 2013-11-20 19:00:26 · 944 阅读 · 0 评论 -
gstreamer核心源码走读typefind原理浅析(二) .
在我的上一篇文章里,谈到: 8)Filesrc最终会调用open函数打开文件。接着src组件状态也发生切换,创建一个task,最后把文件信息推送给typefind; 9) typefind会从src读取一部分数据然后送出typefind_callback,在callback里面创建合适的plugin。合适的plugin. 本文将从源码分析的角度,重点将这2步分析清楚。可以说,理解了转载 2013-11-20 19:01:20 · 1436 阅读 · 0 评论 -
gstreamer插件工作原理与流程分析 .
gstreamer plugins的工作同所有的基于插件的程序的工作原理类似,本质上都是通过读取动态库实现的,只需要每个动态库都实现某一个特定的接口就可以了,比如XX_init等,gstreamer统一使用plugin_init。里面会有个像注册表一样的数据结构会存储所有的插件的信息。 (1)在应用程序启动时,会调用gst_init--->gst_init_check。gst_init转载 2013-11-20 19:04:58 · 1645 阅读 · 0 评论 -
C语言宏与单井号(#)和双井号(##)
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if转载 2013-11-20 19:30:18 · 759 阅读 · 0 评论 -
Gstreamer架构 简介
本文给出了Gstreamer的总体设计。通过阅读本文可以了解Gstreamer的内部工作原理。本文编译自gstreamer源码中的文档,原文在源码中的位置是/gstreamer/docs/design/part-overview.txt。概述Gstreamer是一个libraries和plugins的集合,用于帮助实现各种类型的多媒体应用程序,比如播放器,转码工具,多媒体服务器等。翻译 2013-11-27 18:28:50 · 1109 阅读 · 0 评论 -
ffdemux_mpegts中时间戳的处理问题
ffdemux_mpegts是gstreamer的demux plugin,基于ffmpeg,在使用的时候发现处理实时流存在问题。先来描述一下问题,采用gst-launch命令启动转码,命令如下:gst-launch-0.10 udpsrc multicast-group=239.1.80.80 port=49500 ! queue ! ffdemux_mpegts name=de转载 2013-11-27 18:33:43 · 1169 阅读 · 0 评论 -
linux socket 分析 1
start the system ...starting /etc/init/devices.init.shstarting /etc/init/system.init.shstarting /etc/init/tmpfs.init.shstarting /etc/init/cron.conf.shstarting /etc/init/date.conf.shFri Jun原创 2014-03-15 19:20:33 · 664 阅读 · 0 评论