- 博客(54)
- 资源 (2)
- 收藏
- 关注
转载 Linux调度域负载均衡-设计,实现和应用
第一部分:Linux负载均衡的设计一.负载均衡的原则1.确保每个cpu核心的负载均衡;2.在cpu和cache以及内存布局的影响下加权执行1。对于一般多核心cpu情况,以上两个原则可以简述为下面的原则:1.尽量不执行进程迁移,以确保cache的热度;2.除非各个cpu的负载已经严重失衡,执行负载均衡二.系统以及cpu的拓扑结构这个道理
2016-07-29 09:40:01 2005
转载 CFS完全公平调度类
最近在学习Linux内核的相关知识,参考的资料是《Professional Linux Kernel Architecture》和linux2.6.24的内核源码。对Linux2.6.24中的核心调度器做一下总结。 Linux2.6.24内核采用分层的思想管理调度。可以看作两层,第一层被称为核心调度器,在核心调度器下面为调度器类。在调度器被调用时,它会查询调 度器类,得知接下来运行哪
2016-07-28 23:50:31 1253
转载 GDB简单调试linux内核与模块的方法
gdb 对于看系统内部是非常有用. 在这个级别精通调试器的使用要求对 gdb 命令有信心, 需要理解目标平台的汇编代码, 以及对应源码和优化的汇编码的能力. 调试器必须把内核作为一个应用程序来调用. 除了指定内核映象的文件名之外, 你需要在命令行提供一个核心文件的名子. 对于一个运行的内核, 核心文件是内核核心映象, /proc/kcore. 一个典型的 gdb 调用看来如
2016-07-28 07:16:04 6796
原创 内核模块遍历进程
#include #include #include #include #include int __init sched_fun_init(){struct task_struct *p, *ts = &init_task;struct list_head *pos;int count = 0;list_for_each(pos, &t
2016-07-27 22:34:48 2928
转载 CFS中一些调度参数的实现原理
在cfs调度中有这么几个常用的参数:sysctl_sched_latency:表示一段时间内,sched_entity肯定会被调度到一次,也就是一个sched_entity调度的最大的延时,2.6.35.13内核中默认是6ms。sysctl_sched_min_granularity:表示调度的最小粒度,如果调度的时间间隔小于这个时间段,内核是不会挑选其他sched_e
2016-07-27 09:05:56 1314
转载 FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。swscale主要用于在2个AVFrame之间进行转换。下面来看一个视频解码的简单例子,这个程序完成了对"北京移动开发者大会茶歇视频2.flv"(其实就是优酷上的一个普通视频)的解码工作,并将解码后的数
2016-07-26 18:39:44 1825
转载 详解YUV数据格式
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chro
2016-07-26 15:22:24 668
转载 FFMPEG合两帧YUV420P为一帧
pSum_FrameYUV为目的帧,pFrameYUV是被合帧。把pFrameYUV合到pSum_FrameYUV上,高度相同,宽度是pSum_FrameYUV的1/2 ,m_rect是合成后视频帧显示的区域。注意:pFrameYUV.linesize并不是一行有效地数据宽度。它比一行的宽度m_rect.Width()/2要大。所以在复制时,每次要复制m_rect.Width()/2个数据
2016-07-26 15:12:53 1442 1
转载 ITU-R BT.656 , 帧 , 场 === 模拟视频信号采集的处理,以及奇偶场
TU-R BT.656 , 帧 , 场 === 模拟视频信号采集的处理,以及奇偶场 (自己整理过的........内容源自网络.)一,ITU-R BT.656ITU-R BT.656 8/10位数据传输;不需要同步信号;串行数据传输;传输速率是601的2倍;先传Y,后传UV。行场同步信号嵌入在数据流中。包含三部分 :①:视频信号 ②:定时基准信号
2016-07-26 14:10:26 2913
转载 I,P,B帧和PTS,DTS的关系,GOP相关
I,P,B帧和PTS,DTS的关系,GOP相关 I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列
2016-07-26 14:07:13 669
转载 H264的RTP负载打包的数据包格式,分组,分片
H264的RTP负载打包的数据包格式,分组,分片 1. RTP数据包格式RTP报文头格式(见RFC3550 Page12): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2016-07-26 13:57:54 949
转载 YUV格式分析详解
YUV格式分析详解一,YUV含义 YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。 在摄像头之类编程经常是会碰到YUV格式,而非大家比较熟悉的RGB格式. 我们可以把
2016-07-26 13:53:09 988
转载 链接地址学习笔记
链接地址启动过程示例代码如下:start.S 文件.globl _start_start:/*硬件相关设置*/ldr r0,=0x70000000orr r0,r0,#0x13mcr p15,0,r0,c15,c2,4/*关看门狗*/ bl test
2016-07-26 10:12:47 1251
原创 Linux内核中的atoi,itoa等函数
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。对此Linux内核里有了相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。
2016-07-25 22:42:27 8972
转载 2个YUV视频 拼接技术
[cpp] view plain copy/************************************************* * 主要功能:两路 YUV4:2:0拼接一路左右半宽格式YUV视频 参考资料:http://www.pudn.com/downloads271/sourcecode/multimedia/vfw/detail1237
2016-07-25 18:39:41 2409
转载 Kernel panic 信息分析方法
Oops: 0000 [#1] PREEMPT SMP Modules linked in: capidrv kernelcapi isdn slhc ipv6loop dm_multipath snd_ens1371 gameport snd_rawmidi snd_ac97_codecac97_bus snd_seq_dummy snd_seq_oss
2016-07-25 10:11:21 2129 1
转载 kernel panic 分析解决方法
kernel panic 表示Linux kernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。 下面讲解几种用于查找出错函数定位的方法首先看一下出错的kernel panic 现象,下面是一个kernel panic的出错log:如
2016-07-25 10:06:14 2948
转载 用户空间和内核空间通讯之【proc文件系统】
今天我们介绍另一种用户内核空间通信的方法:proc文件系统。proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的proc文件系统已经演变成一个“用户-内核”空间半双工的通信方式了(虽然目前已经开始有点混乱了,但某些早期开
2016-07-25 07:57:47 433
转载 linux下proc文件的读写(部分转载)
in Linux, proc文件系统是一个虚拟文件系统,用户和应用程序可以通过proc文件系统得到当前的一些系统信息,并可以改变一些内核的参数。/proc下的文件是一种特殊文件,不能够像一般文件一样创建删除。如果要创建一个 proc 文件,并且不用 proc_fs 默认提供的 file_operations 的话,可以使用 proc_create() 这个函数(见方法二),通过最后一个参数
2016-07-25 07:41:14 1329
转载 Linux驱动开发必看
【IT168 技术文档】在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时器、同步机制以及内存分配方法。不过,我们还是得从头开始这次探索之旅。因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。 2.1 启动过程 图2-1显示了基于x86计算机Linux系统的启动顺序
2016-07-24 22:38:20 2006
转载 FFmpeg源代码简单分析:libswscale的sws_getContext()
FFmpeg的库函数源代码分析文章列表:【架构图】FFmpeg源代码结构图 - 解码FFmpeg源代码结构图 - 编码【通用】FFmpeg 源代码简单分析:av_register_all()FFmpeg 源代码简单分析:avcodec_register_all()FFmpeg 源代码简单分析:内存的分配和释放(av_malloc()、av_f
2016-07-24 17:54:05 930
转载 ffmpeg开发指南
FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码.TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。 一、
2016-07-24 16:40:15 2473
转载 Linux 使用 ffmpeg 开发
1、下载ffmpeg。×比本文更详细的安装帮助×"linux下安装FFMPEG全纪录.doc"http://vdisk.weibo.com/s/lBNHd http://download.chinaunix.net/download.php?id=5532&ResourceID=2990 我是在这个网址上下载ffmpeg-0.4.9-p20051
2016-07-24 16:15:48 1907
转载 ffmpeg结构体以及函数介绍(三)
1 AVPackettypedef struct AVPacket { /** * Presentation timestamp in AVStream->time_base units; the time at which * the decompressed packet will be presented to the user. * C
2016-07-24 14:50:13 321
转载 ffmpeg结构体以及函数介绍(二)
1 avcodec_find_decoder()/** * Find a registered decoder with a matching codec ID. * * @param id CodecID of the requested decoder * @return A decoder if one was found, NULL otherwise. */
2016-07-24 14:49:22 351
转载 ffmpeg结构体以及函数介绍(一)
本文对在使用ffmpeg进行音视频编解码时使用到的一些函数做一个简单介绍,我当前使用的ffmpeg版本为:0.8.5,因为本人发现在不同的版本中,有些函数名称会有点小改动,所以在此有必要说明下ffmpeg的版本号。 ffmpeg本人也是刚接触,本文将采用累加的方法逐个介绍我使用到的函数,如有不妥之处,还望谅解! 头文件引入方法:extern "C"{#inclu
2016-07-24 14:48:36 320
转载 AVDictionary结构体相关源码介绍
本文对AVDictionary结构体部分相关函数代码进行了介绍[cpp] view plain copy 本文研究分析AVDictionary相关代码 struct AVDictionary { int count; AVDictionaryEntry *elems; };
2016-07-24 14:43:27 4614 2
转载 linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待
2016-07-21 11:55:42 1392
转载 Linux内核驱动之主次编号
字符设备通过文件系统中的名子来存取. 那些名子称为文件系统的特殊文件, 或者设备文件,惯例上它们位于 /dev 目录. 字符驱动的特殊文件由使用 ls -l 的输出的第一列的"c"标识.ls -l 命令, 你会看到在设备文件项中有 2 个数(由一个逗号分隔)在最后修改日期前面, 这里通常是文件长度出现的地方. 这些数字是给特殊设备的主次设备编号crw-rw-rw- 1 root root
2016-07-21 08:11:36 671
转载 linux内核中等待队列(wait_event,wake_up...)
根据内核3.1.6版本源码、书籍和网上资料,对几个函数进行分析 介绍这几个函数,不得不先介绍等待队列wait_queue_head_t 等待队列用于使得进程等待某一特定事件的发生,无需频繁的轮询,进程在等待周期中睡眠,当时间发生后由内核自动唤醒。等待队列 (一)数据结构 等待队列结构如下,因为每个等待队列都可以
2016-07-21 07:53:25 952
转载 [总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,
2016-07-19 18:15:21 1479
转载 RTMP 封包详解
Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。具体使用RTMP的AS代码大概如下: var videoInstance:Video = your_video_instance; var nc:NetConnection = new NetC
2016-07-16 08:37:01 1669
转载 RTMP 协议学习总结
RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1 消息消息是RTMP协议中基本的数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分别发挥着不
2016-07-16 08:30:07 388
转载 FFmpeg源代码简单分析:avio_open2()
FFmpeg的库函数源代码分析文章列表:【架构图】FFmpeg源代码结构图 - 解码FFmpeg源代码结构图 - 编码【通用】FFmpeg 源代码简单分析:av_register_all()FFmpeg 源代码简单分析:avcodec_register_all()FFmpeg 源代码简单分析:内存的分配和释放(av_malloc()、av_f
2016-07-12 17:11:09 1016
转载 FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
本文简单分析FFmpeg常见结构体的初始化和销毁函数的源代码。常见的结构体在文章:《FFMPEG中最关键的结构体之间的关系》中已经有过叙述,包括:AVFormatContext:统领全局的基本结构体。主要用于处理封装格式(FLV/MKV/RMVB等)。AVIOContext:输入输出对应的结构体,用于输入输出(读写文件,RTMP协议等)。AVStream,AVC
2016-07-12 15:22:58 1250
转载 H264码流解析及NALU
ffmpeg 从mp4上提取H264的naluhttp://blog.csdn.net/gavinr/article/details/7183499639 /* bitstream filters */640 REGISTER_BSF(AAC_ADTSTOASC, aac_adtstoasc);641 REGISTER_BSF(CHO
2016-07-12 11:59:10 7231 2
转载 linux系统移植和根文件系统制作
linux 内核移植和根文件系统的制作1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。 1.1.1 Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATC
2016-07-12 08:12:40 3855
转载 C的xml编程-libxml2(转)
这里主要讲述libxml2在linux下的使用。(以下内容除了linux下的安装步骤是自己写的,其余均出自http://www.blogjava.net/wxb_nudt/archive/2007/11/28/161340.html,由于该篇文章讲解的非常详细,我也没必要重写一遍了。如果该篇文章早出些时候,早期开发我也不会走很多弯路了。虽然在该篇文章出现之前我已经对libxml2较熟悉了并
2016-07-11 17:42:12 2215
原创 libxml主要函数说明 (二)
4. 创建和释放XML文档函数函数功能在内存中创建一个新的XML文档。所创建的文档需要使用xmlFreeDoc()来释放资源函数接口xmlDocPtr xmlNewDoc (const xmlChar * version)参数说明version:XML标准的版本,目前只能指定为“1.0”
2016-07-11 17:40:07 462
原创 libxml主要函数说明 (一)
许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能。下面的列表列出了libxml的主要函数及其用法说明。1. 全局函数说明头文件引用xml2config --cflags库文件引用xml2config --libs主要头文件parse.htree.hxpath.
2016-07-11 17:38:37 766
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人