天行健,君子以自强不息!
发布时间:2012-12-23 21:03:18
用互斥量实现的线程安全循环队列。只是一个示例实现,不大能用于实际编程。因为当真正多线程时,会因为资源竞争而等待,导致队列的效率极低。更有效的方式是使用信号量。更多的不说了,直接看代码吧。cir_queue.h/* * \File * cir_queue.h * \Brief * circular queue */#ifndef __CIR_QUEUE_H__#define __CIR_QUEUE_H__#define QUE_SIZE 8typedef int DataType;typedef struct cir_queue_t{&n......【阅读全文】
发布时间:2012-12-21 14:50:01
正常人听觉的频率范围大约在20Hz~20kHz之间。采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质。对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。通常是按1024个采样点一帧分析:1. AAC一个AAC原始帧包含某段时间内1024个采样点相关数据。用1024主要是因为AAC是用的1024点......【阅读全文】
发布时间:2012-12-21 11:08:18
很简单的一个FIFO应用示例,两个进程间,使用FIFO进行通信.闲言少述,直接上文:my $cmd_ff = "./ffmpeg -i ....";my $uuid = `uuidgen`; // 生成不重名FIFO的名称chomp $uuid;system("mkfifo $uuid"); // 创建FIFOmy $pid_ffmpeg = fork; // 创建进程if (0 == $pid_ffmpeg){&......【阅读全文】
发布时间:2012-12-18 10:22:41
一、简介共享内存为在多个进程之间共享和传递数据提供了一种有效的方式。但它本身并未提供同步机制。在实际编程中,可以使用 信号量, 传递消息(使用管道或IPC消息), 生成信号, 条件变量,等方法来提供读写之间的有效的同步机制。本例程序使用信号量进行同步,主要是因为它方便,使用广泛,且独立于进程。本例程序实现了,生产者进程: 每次读取YUV输入文件的一帧, 然后将其写到共享内存中。消费者进程: 每次从共享内存中读到一帧, 处理后, 将其写到输出文件。两个进程间使用信号量来保证同步处理每一帧。......【阅读全文】
发布时间:2012-12-11 21:07:00
一、线程同步线程同步的两种基本方法:A. 信号量 它的作用如同看守一段代码的看门人。 控制一组相同对象的访问时, 比如从5条可用的电话线中分配一条给某个线程的情况, 就更适合计算信号量。 最简单的信号量--二进制信号量,它只有0和1两种取值; 更通用的信号量--计数信号量,它有更大的取值范围。B. 互斥量 它的作用如同保护代码段的一个互斥设备。 如果想控制任一时刻只能有一个线程可......【阅读全文】