<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lvc851116的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lvc851116</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lvc851116]]></copyright><item><title><![CDATA[自旋锁与信号量]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/11163145</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/11163145</guid><author>lvc851116</author><pubDate>Thu, 05 Sep 2013 17:18:32 +0800</pubDate><description><![CDATA[本文转自http://group.ednchina.com/1036/18550.aspx

spinlock和semaphore的差别和应用
这两天经常有同事在问spinlock和semaphore的相关问题，什么时候该用spinlock？什么时候该用semaphore？什么时候该用spinlock_irq？什么时候该用spinlock_irqsave？的确，对于初涉内核开发的人员来说，s]]></description><category></category></item><item><title><![CDATA[S3C6410 MFC H264 编码流程分析]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/9980129</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/9980129</guid><author>lvc851116</author><pubDate>Thu, 15 Aug 2013 11:12:01 +0800</pubDate><description><![CDATA[转自：http://blog.sina.com.cn/s/blog_65f6a0520100rgg7.html

在代码分析开始前需要对一个概念进行解释，就是MFC。
Multi Format Codec的缩写，是ARM微处理器内部一种支持多种硬件编码方式的硬件电路，能够编码/解码MPEG-4/H.263/H.264（30fps）等多种格式的多媒体影像。
TOP6410开发板使用的是ARM]]></description><category></category></item><item><title><![CDATA[找工作系列之华为机试2013.7.3]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/9236993</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/9236993</guid><author>lvc851116</author><pubDate>Wed, 03 Jul 2013 19:58:17 +0800</pubDate><description><![CDATA[题目一：给一字符串，统计其出现过的字符，并输出。
例如：输入："abbccdeabf"，输出:"abcdef"
#include 
#include 
#include 

void stringFilter(const char* pInputStr , int inputLen,char* pOutputStr)
{
	int table[256] = {0};					char* tmp]]></description><category></category></item><item><title><![CDATA[使用libx264将I420编码为H.264]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8891881</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8891881</guid><author>lvc851116</author><pubDate>Mon, 06 May 2013 18:47:00 +0800</pubDate><description><![CDATA[libx264 
libx264是一个自由的H.264编码库，是x264项目的一部分，使用广泛，ffmpeg的H.264实现就是用的libx264。
代码
要把一个I420视频文件编码为H264格式。I420是YUV中planar格式的一种，一张I420图片中有三个plane，分别存放整张图片的Y、U、V分量;采样比例为4：2：0，12bpp，Y：U：V的分量长度是4：1：1。
头文件]]></description><category></category></item><item><title><![CDATA[x264编码学习]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8889525</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8889525</guid><author>lvc851116</author><pubDate>Mon, 06 May 2013 14:34:18 +0800</pubDate><description><![CDATA[定位到x264_encoder_encode这个函数，这个函数应该是H264编码最上层的函数，实现编码一帧视频。在进行下一步分析之前有必要了解，控制X264编码的全局性结构体x264_t，这个结构体控制着视频一帧一帧的编码，包括中间参考帧管理、码率控制、全局参数等一些重要参数和结构体。
下面是x264_t这个结构体的定义（这里仅对几个关键的结构和变量进行分析）：struct x264_t
{]]></description><category></category></item><item><title><![CDATA[mpeg压缩输入格式---打包模式和平面模式]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8835039</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8835039</guid><author>lvc851116</author><pubDate>Mon, 22 Apr 2013 16:08:27 +0800</pubDate><description><![CDATA[版本 v1.0,存在内存问题
在 void v4l2_process_image(struct buffer buf)中对 v4l2 采集来的一帧进行处理,存在 struct buffer bu
f 中
buffer 结构定义为:
struct buffer {
void *    start;
size_t   length;
};
buffer.start 为 YUV422 格]]></description><category></category></item><item><title><![CDATA[ubuntu10.04安装编译ffmpeg]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8814819</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8814819</guid><author>lvc851116</author><pubDate>Wed, 17 Apr 2013 16:54:39 +0800</pubDate><description><![CDATA[参考官方说明文档：https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuideLucid--(1)和网友博客基于v4l2的webcam应用, 本地预监(编译过程)--(2)，在ubuntu10.04上搭建ffmpeg开发环境并编译运行网友sunkwei的代码成功基于v4l2的webcam应用,
 本地预监--(3)。
   一.参照(1)]]></description><category></category></item><item><title><![CDATA[堆和栈的区别（转过无数次的文章）]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8551408</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8551408</guid><author>lvc851116</author><pubDate>Tue, 29 Jan 2013 10:10:48 +0800</pubDate><description><![CDATA[一、预备知识—程序的内存分配  
  一个由C/C++编译的程序占用的内存分为以下几个部分  
  1、栈区（stack）—   由编译器自动分配释放   ，存放函数的参数值，局部变量的值等。其  
  操作方式类似于数据结构中的栈。  
  2、堆区（heap）   —   一般由程序员分配释放，   若程序员不释放，程序结束时可能由OS回  
  收   。注意它与数据结构中的堆是两]]></description><category></category></item><item><title><![CDATA[QT按键过快时按键音延迟播放的问题解决]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8537452</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8537452</guid><author>lvc851116</author><pubDate>Thu, 24 Jan 2013 12:06:05 +0800</pubDate><description><![CDATA[QT按键增加按键音代码功能，代码如下：
void QKeyPushButton::mouseReleaseEvent(QMouseEvent *event)
{
    QPushButton::mouseReleaseEvent(event);
    mplay->execute(program,arguments); //此处调用"aplay click.wav"播放按键音文件
}]]></description><category></category></item><item><title><![CDATA[typedef int(init_fnc_t) (void) 和 typedef int(*init_fnc_t) (void);]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8504275</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8504275</guid><author>lvc851116</author><pubDate>Tue, 15 Jan 2013 09:53:29 +0800</pubDate><description><![CDATA[typedef int(init_fnc_t) (void);
这个就是一个取别名的过程。

我们通常情况下会如下使用 typedef ：
typedef int MyInt;
MyInt a;

这个时候我们的MyInt 就和int是一样的意思。

而对于函数的申明我们通常会这样申明：
int InitFunction() (void);
此时表示申明了一个函数名为Init]]></description><category></category></item><item><title><![CDATA[Linux后台运行进程]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8442320</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8442320</guid><author>lvc851116</author><pubDate>Thu, 27 Dec 2012 11:04:00 +0800</pubDate><description><![CDATA[转自：http://www.ningoo.net/html/2008/how_to_run_processes_on_background_in_linux.html
在Linux中，如果要让进程在后台运行，一般情况下，我们在命令后面加上&即可，实际上，这样是将命令放入到一个作业队列中了：
$ ./test.sh &
[1] 17208

$ jobs -l  
[1]+ 17208 Runn]]></description><category></category></item><item><title><![CDATA[Sitara升级U-Boot那些事(支持ubifs)]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8174566</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8174566</guid><author>lvc851116</author><pubDate>Mon, 12 Nov 2012 15:13:17 +0800</pubDate><description><![CDATA[转自http://bbs.21ic.com/icview-300872-1-1.html

基于Sitara的产品，大家都会用到比较大的Flash，不管你用没用，反正我用了。
文件系统做出来还是比较胖的。好多人习惯性的沿用了用惯了的JFFS2来生成要烧写的文件。这样的交给生产线时不可避免的可能出现如下问题：
1. JFFS2的image是与文件系统大小一比一的，32MB的文件系统就对应32]]></description><category></category></item><item><title><![CDATA[QProcess调用外部程序：QProcess::start与QProcess::execute]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8137202</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8137202</guid><author>lvc851116</author><pubDate>Thu, 01 Nov 2012 16:16:51 +0800</pubDate><description><![CDATA[QT提供了一个QProcess类用于启动一个外部程序并与之通信。QProcess::start()与QProcess::execute()都能完成启动外部程序的任务，二者有什么区别呢？区别在于start()是非阻塞的，而execute()是阻塞的。专业点讲，execute()=start()+waitforFinished()。下面是一个按键的槽函数，它响应按键的按下动作：
    QStrin]]></description><category></category></item><item><title><![CDATA[linux内核导出符号]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8123457</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8123457</guid><author>lvc851116</author><pubDate>Mon, 29 Oct 2012 11:34:01 +0800</pubDate><description><![CDATA[Linux 2.6系统的"/proc/kallsyms"文件对应着内核符号表，它记录了符号以及符号所在的内存地址。
模块可以使用如下宏导出符号到内核符号表：
EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名);     //只适用于包含GPL许可权的模块；
符号必须在模块文件的全局部分导出,不能在函数中导出,这是因为上述这两个宏将被扩展成一个特殊用途的声明]]></description><category></category></item><item><title><![CDATA[linux内核知识之工作队列(workqueue)]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8103628</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8103628</guid><author>lvc851116</author><pubDate>Tue, 23 Oct 2012 17:13:33 +0800</pubDate><description><![CDATA[工作队列(work queue)是Linux
 kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行，因此工作队列的优势就在于它允许重新调度甚至睡眠。
    数据结构：
struct work_struct {
	atomic_long_t data;
#define WORK_STRUCT_PENDING 0]]></description><category></category></item><item><title><![CDATA[alsa编程之播放"嘀嘀"音]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/8046808</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/8046808</guid><author>lvc851116</author><pubDate>Mon, 08 Oct 2012 09:09:09 +0800</pubDate><description><![CDATA[项目要求A8板子能够不间断的发出"嘀嘀"音，类似于万用表表针短接的情形。这样的话可以有两种方案：(1)录制一个较长时间的"嘀嘀"音音频文件，用mplayer播放；(2)用户空间编程直接向缓冲写入一3K Hz左右的的PCM数据，循环播放。在这里采用方案(2).下面是代码。
#include 
#include 
#include 

#define BUFF_SIZE 2048

int main]]></description><category></category></item><item><title><![CDATA[ALSA之snd_kcontrol探究]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/7961002</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/7961002</guid><author>lvc851116</author><pubDate>Sun, 09 Sep 2012 19:11:52 +0800</pubDate><description><![CDATA[转自http://blog.youkuaiyun.com/sepnic/article/details/6150723#comments
control控制接口


控制接口对于许多开关(switch)和调节器(slider)应用广泛，它能被用户空间存取，从而读写CODEC相关寄存器。control的主要用于mixer。它用snd_kcontrol_new结构体描述。



snd_kcont]]></description><category></category></item><item><title><![CDATA[【转】ALSA(lib和util)交叉编译与测试]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/7917636</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/7917636</guid><author>lvc851116</author><pubDate>Tue, 28 Aug 2012 20:25:15 +0800</pubDate><description><![CDATA[情况简介
ALSA 是目前 Linux 系统上大量采用的音频设备库，通过 Alsa 架构能分离驱动和应用的开发。 Alsa 为上层提供API 的同时，也为下层提供了接口，在内核配置的时候指定“支持 Alsa” 就能得到内核支持，具体位置为：
Menuconfig -> Device Drivers -> Sound card support -> Advanced Linux Sound Ar]]></description><category></category></item><item><title><![CDATA[简述amixer及其用法]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/7917513</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/7917513</guid><author>lvc851116</author><pubDate>Tue, 28 Aug 2012 19:40:46 +0800</pubDate><description><![CDATA[alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个，用于配置音频的各个参数。
alsamixer是基于文本下的图形界面的，可以通过键盘的上下键，左右键等，很方便地设置需要的音量，开关某个switch（开关）等等操作。
amixer，是alsamixer的文本模式,即命令行模式，需要用amixer命令的形式去配置你的声卡的各个选项。
对于amixer的使用，你首先需要搞]]></description><category></category></item><item><title><![CDATA[U-boot显示LOGO之LOGO篇]]></title><link>https://blog.youkuaiyun.com/lvc851116/article/details/7695156</link><guid>https://blog.youkuaiyun.com/lvc851116/article/details/7695156</guid><author>lvc851116</author><pubDate>Wed, 27 Jun 2012 10:36:23 +0800</pubDate><description><![CDATA[U-boot显示开机LOGO的功能实现后，我们不仅要问：LOGO文件有什么样的格式限制（如图片格式？size?）LOGO文件在程序中是如何解码如何调用的？带着这样的问题我们进入精彩的u-boot代码。
    我们将目光定位到 tools/bmp_logo.c文件，答案在此揭晓。在文件中main()函数中，我们浏览代码不难发现，这个程序的功能就是将u-boot系统某一目录下的特定bmp格式的图片]]></description><category></category></item></channel></rss>