- 博客(88)
- 资源 (22)
- 收藏
- 关注
转载 嵌入式 使用mp4v2将H264+AAC合成mp4文件
录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是:(1)接收并解析RTP包,分离出H264和AAC数据流;(2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查看。 第一步已经有部分代码可供参考,因此很快就完成了。第二步,我们决定封装成mp4,查找了一些资料后,决定使
2014-09-30 17:07:45 2473 5
转载 嵌入式 H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
一、MP4格式基本概念MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二、MP4封装格式核心概念1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12: ISO
2014-09-30 17:05:09 1288
转载 嵌入式 H264中的SPS、PPS提取与作用
使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两项从哪里获取呢?答案是从H264码流中获取.在H264码流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"为开始码的,找到开始码之后,使用开始码之后的第
2014-09-30 17:01:35 1428
转载 嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律
H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set)对应H264标准文档 7.3.2.1 序列参数集的语法进行解析SPS参数解析// fill sps with content of p[cpp] view plaincopyint InterpretSPS (VideoParameters *p_Vid, DataPartition
2014-09-30 16:59:17 4535
转载 嵌入式 网卡驱动PHY的id组成小结
网卡驱动首先要理解几个基本概念(....)BYTE 8-bitFIFO 先进先出缓存MAC 媒体访问控制(MAC)位于链路层的底部,基于共享信道的各种网络都有MAC子层.MAC子层可提供广播,组波,点对点通信服务,是无连接的数据报服务MII MII (Media Independent Interface(介质无关接口);或称为媒体独立接口RMII 简化媒体独立接口
2014-09-30 16:33:44 6452
转载 嵌入式 linux下kernel代码中设备驱动模型之device-driver
前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。本节的实现代码集中在drivers/base/bus.c和drivers/base/dd.c中。先来回忆下,在device_reg
2014-09-30 16:06:24 1155
转载 嵌入式 linux下kernel代码中设备驱动模型之driver
上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas
2014-09-30 16:03:43 1124
转载 嵌入式 linux下kernel代码中设备驱动模型之bus
前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev
2014-09-30 16:03:43 894
转载 嵌入式 linux下kernel代码中设备驱动模型之device
linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。 头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。struct device { struct de
2014-09-30 16:01:18 1176
转载 嵌入式 linux下kernel代码中更强的链表klist
前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种就是本节要介绍的klist。虽然三者不同,但hlist和klist都可以看成是从list_head中发展出来的,用于特殊
2014-09-30 15:58:25 742
转载 嵌入式 linux下kernel代码中原子性操作atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前
2014-09-30 15:55:35 1453
转载 嵌入式 linux下kernel代码中设备驱动模型的基石kobject
之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码很重要,会在设备驱动模型代码中无数次被用到,如果不熟悉的话可以说是举步维艰。二是为了熟悉linux的编码风格,为以后分析
2014-09-30 15:55:26 743
转载 嵌入式 linux下kernel代码中记录生命周期的kref
kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。s
2014-09-30 15:54:15 780
转载 嵌入式 linux下kernel代码中连通世界的list
在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。struct list_head { struct list_head *next, *prev; }; 这是链表的元素结构。因为是循环链表,表头和表中节点都是这一结构。有prev和
2014-09-30 15:52:39 701
转载 嵌入式 linux下kernel中kobject之kobject_uevent.c文件分析
struct kset_uevent_ops { int (*filter)(struct kset *kset, struct kobject *kobj); //过滤函数,kset中的kobj是否需要处理 const char *(*name)(struct kset *kset, struc
2014-09-30 15:48:25 877
转载 嵌入式 linux中kernel代码/lib/kobject.c文件分析
本文件的函数列表:char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask)获取指定kobject的完整路径名 void kobject_init(struct kobject * kobj)初始化kobj(引用为1,链表为空,设置kset宿主) int kobject_add(struct kobj
2014-09-30 15:36:41 1039
转载 嵌入式 linux中kernel代码/lib/klist.c文件分析
小结: 下面这个图应该能说明全部问题 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: void klist_init初始化klist,主要操作是挂空k->k_list,初始化k_lock锁,挂上get和put函数 void klist_add_h
2014-09-30 15:02:39 956
转载 嵌入式 linux中probe函数中传递的参数来源(上)
上一篇中,我们追踪了probe函数在何时调用,知道了满足什么条件会调用probe函数,但probe函数中传递的参数我们并不知道在何时定义,到底是谁定义的,反正不是我们在驱动中定义的(当然,驱动中也不会定义设备的详细信息),但也不是在我们设备信息定义时的结构体。这就相当于武林绝学中只打通了任脉,而督脉还没打通,要想成为武林高手还差一步,本文就致力于打通我们设备驱动probe函数的任督二脉,做到正向逆
2014-09-30 14:59:13 2101
转载 嵌入式 linux中probe函数传递参数的寻找(下)
通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个连通之日,也是任督二脉打通之时。先从设备定义去查看,在mach-smdk6410.c中定义了硬件设备信息,从这作为突破口。/* for mx25lx*/static void cs_set_level(unsigned line_id, int
2014-09-30 14:58:51 905
转载 嵌入式 probe()函数是什么时候被调用,设备和驱动是怎么联系起来的
probe()函数是什么时候被调用,设备和驱动是怎么联系起来的?? platform_add_devices(ldd6410_devices, ARRAY_SIZE(ldd6410_devices)); //这是bsp中添加所有的设备--》 platform_device_register(devs[i]);//注册平台设备---》platform_device_add(pdev);将平
2014-09-30 14:54:17 1136
转载 嵌入式 uboot中ethernet网口实现分析
一、底层接口封装假如要为图中设备编写驱动,首先要做什么?我认为应该是对各个器件进行抽象,也就是把可能的各种操作封装成接口并把需要的数据封装成结构体。这样作有两个好处,一是可以不再考虑器件的实现细节,直接调用接口就可完成各种操作;而是通过对接口的测试,可以较早的完成对器件的验证。以上图为例,包含两个器件,MAC与PHY。PHY需要的接口也是读写寄存器的接口与数据寄存器基址。c
2014-09-29 15:10:19 2030
转载 服务器 介绍一个C++的ORM工具ODB
前段时间了解了下ORM(对象关系映射),然后就找了下C++的ORM框架,发现真的是很少,主要就下面几种名称开源License需要特定的框架支持支持Qt支持Boost支持MySQL支持PostgreSQL支持SQLite支持XML支持Oracle支持MSSQL Server支持ODBC
2014-09-28 10:23:47 2433
转载 嵌入式 解决编译warning:warning: ‘MeteringUnit::voltage_gain_’ will be initialized after [-Wreorder]
问题:环境:ubuntu 12.04,g++版本4.6.3,编译目标文件时出现warnings:[plain] view plaincopyprint?u1204@u1204-zhw:~/hwsvn/2sw/4prj_mips/UCP_rt5350/src/trunk$ make clean;make rm -f *.o local_c
2014-09-26 16:05:52 1353
转载 嵌入式 MP4文件格式详解结构概述
一、基本概念1、 文件,由许多Box和FullBox组成。2、 Box,每个Box由Header和Data组成。3、 FullBox,是Box的扩展,Box结构的基础上在Header中增加8bits version和24bits flags。4、 Header,包含了整个Box的长度size和类型type。当size==0时,代表这是文件中最后一个Box;当size==1时,意味着
2014-09-26 09:21:48 1099
转载 嵌入式 libevent功能使用简介
1. 介绍 libevent是一个用来开发可扩展的网络服务器的事件通知函数库。当一个文件描述符上的特定事件发生或是一个超时时间到达后,libevent API提供一种执行回调函数的机制。而且,libevent还支持基于信号或定期超时的回调功能。 libevent旨在替换在原有事件驱动网络服务器事件循环而设计的。应用程序仅仅需要调用event_dispatch(),然后动
2014-09-25 21:40:24 1535
原创 嵌入式 G711A编码音频转码为AAC过程代码示例
/*Author : kjTime : 2014-09-25Function :joseph aac, g711a changover aac*/#include #include #include #include #include #include #include #include #include #include
2014-09-25 20:33:02 5217 4
原创 嵌入式 不同平台编译faac出错"mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’"
编译FAAC-1.28时遇到错误:mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’解决方法:从123行开始修改此文件mpeg4ip.h,到129行结束。修改前:#ifdef __cplusplusextern "C" {#endifchar *strc
2014-09-24 21:47:38 3186 2
原创 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)
Uboot_Kernerl_Add_Watch_Dog:U-Boot 2010.06 (Nov 01 2013 - 15:28:44)DRAM: 128 MiBCheck spi flash controller v350... FoundSpi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00Spi(cs1): Block:64K
2014-09-24 20:01:15 8751
转载 嵌入式 linux设备和驱动加载的先后顺序
Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_inità do_basic_setup()àdo_initcalls()该函数中会将在_
2014-09-24 19:47:52 1191
转载 嵌入式 Linux内核中的printf实现
从main.c中的printf开始读这个函数。首先看printf函数的定义:1 static int printf(const char *fmt, ...)2 {3 va_list args;4 int i;5 6 va_start(ar
2014-09-23 17:44:50 1022
转载 嵌入式 中断服务子程序注意事情
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area (double radius) {
2014-09-23 17:16:45 2900
转载 嵌入式 linux(test命令)
每一种条件语句的基础都是判断什么是真什么是假。是否了解其工作原理将决定您编写的是质量一般的脚本还是您将引以为荣的脚本。Shell 脚本的能力时常被低估,但实际上其能力的发挥受制于脚本撰写者的能力。您了解得越多,您就越能像变戏法似地撰写一个文件来使任务自动化和简化您的管理工作。在 shell 脚本中进行的每一种操作(除最简单的命令编组之外)都需要检查条件。所有的 shell 脚本“逻
2014-09-22 20:55:15 837
原创 嵌入式 iptables静态编译与动态编译
iptables的移植 Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables)就要从两方面来着手:1)内核支持netfilter;2)用户层的iptables配置命令。1) 编译内核,支持netfilter 在
2014-09-22 20:32:58 5400 3
转载 嵌入式 iptables防火墙实际使用案例解析
一、代理服务器架设的位置实验环境如下:1)局域网网段:192.168.1.0/24,该网段内有2台服务器和1台客户端(1)WEB服务器:192.168.1.3/24(2)FTP服务器:192.168.1.2/24(3)客户端:192.168.1.5/242)局域网与外网之间是通过安装有CentOS的防火墙相连,防火墙有两块网卡(1)eth0:192.168.1.254/
2014-09-19 14:21:25 1281
转载 嵌入式 iptables防火墙选项参数介绍和配置实例
iptables的5个规则链:PREROUTINGFORWARDPOSTROUTINGINPUTOUTPUTiptables的3个规则表:5个规则链分别包含在3个规则表中filter:针对包过滤 INPUT、 FORWARD、 OUTPUTnat: 地址转换 PREROUTING、POSTROUTING 、OUTPUTmangle:
2014-09-19 14:19:56 1203
转载 嵌入式 iptables防火墙配置规则实例分析
我们来配置一个filter表的防火墙。 (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT)
2014-09-19 14:17:51 726
转载 嵌入式 iptables防火墙详细配置演示
iptables详细配置实例 我们来配置一个filter表的防火墙。(1)查看本机关于IPTABLES的设置情况[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot
2014-09-19 14:15:11 806
转载 嵌入式 iptables防火墙常用配置规则实例
iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习iptables的详细用法。1.删除已有规则在新设定iptables规则时,我们一般先确保旧规则被清除,用以下命令清除旧规则:iptables -F(or iptables --flu
2014-09-19 14:14:36 1154
转载 嵌入式 iptables设置图文详解
Netfilter包含有三种表,三种表下共包含有五种链,链下面包含各种规则。即表包含若干链,链包含若干规则。 (一)三种表为:filter nat mangle 1、filter:处理与本机有关的数据包,是默认表,包含有三种链:input output forward 2、nat表:与本机无关。主要处理源与目的地址IP和端口的转换。有三种链:prerouting po
2014-09-19 14:11:56 1254
tracepoint_lttng使用详解
2015-03-23
多路径multipath配置文档和相关概念
2015-01-07
ceph-fs-rpm-build
2014-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人