菜de园子
我的园子,我做主!
摘要: 接触多媒体也有段日子了,觉得有几个概念比较重要,比如采样频率,量化进度,比特率(码流率),可能最初接触的时候还会弄混其中的含义。 1采样频率 每秒要从信号中提取的样本数,一般我们在多媒体文件中可以从格式里得到采样频率,单位为Hz,很熟悉的音频MP3大部分的采样频率为44100Hz。 2量化精度 采样后,要对数据进行量化,每个样本的位数,从单位看很清楚 bit per sample 即 bps,... 阅读全文
posted @ 2011-01-24 14:15 candycaicai 阅读(403) 评论(0) 推荐(0) 编辑
摘要: ogg格式的解析,了解后就可以对ogg格式做demux了,再次声明ogg是一种容器··· 阅读全文
posted @ 2011-01-24 13:49 candycaicai 阅读(5272) 评论(0) 推荐(0) 编辑
摘要: 做音频视频处理的过程中,经常看到文档中写着LITTLE ENDIAN或者BIG ENDIAN unsigned integer的文字,其实就是告诉我们用大端或者小端方式处理字节数,例如文件的某一处的16进制数为FF 10 00 00,如果按照 大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE 10 ,它表示的一个数就是0xFE10。换句话说:内存的低地址存放着数据高位; 小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起 阅读全文
posted @ 2010-12-21 17:28 candycaicai 阅读(4766) 评论(0) 推荐(1) 编辑
摘要: 3、变比特率MP3总时长求解 之前我们所讨论的都是对于一个固定比特率(CBR)的MP3进行求总时长,由于固定比特率的特殊性,很容易第一帧的帧头就能知道整个MP3的信息,但是对于变比特率(VBR)的MP3,比特率和帧长都不是固定的,所以我们就不能用之前的公式来计算总时长。 其实在第一帧的帧头后面还存着VBR的一些信息,里面存着文件长度,总帧数等信息,从而使我们很快算出变比特率的总时长,方法如下: 1... 阅读全文
posted @ 2010-11-26 18:12 candycaicai 阅读(2372) 评论(0) 推荐(0) 编辑
摘要: 前几天病了,就没来博客园,之前的MP3的时长计算问题还没写完呢,其实这块的代码早完成了,现在在做优化,效率太重要了,你如果在pc上编程序,可能你随便申请内存,随便加个超大空间的数组,或者失误的忘记free,或者忘记delete了什么,或者忘记把不需要的指针指向空,或者连dc都忘了release,可能pc都能混着过去,很久才能发现,但是在基于嵌入式设备开发,时刻提醒自己,mallco之后要free,new完了,用了之后要delete,不需要的指针要指向空,要不就成野指针了,不要忘记releasedc。等等。。。要不就出现严重后果,不过这样也锻炼一个程序员写出最优化和最好的代码。  现在的问题就是 阅读全文
posted @ 2010-11-25 23:20 candycaicai 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 今天在申请内存空间的时候发现结构体的大小并不是结构体内成员大小的相加,我觉得很奇怪,就在搜了一下资料,发现原来如此: 结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间,需要注意的是结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。 这就涉及到一个定义:偏移量,偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小。举个例子:typedef struct{ int count; int num; char s; }INFO; 第一个成员的偏移量是0,第二个成员的偏移 阅读全文
posted @ 2010-11-15 16:17 candycaicai 阅读(1292) 评论(3) 推荐(0) 编辑
摘要: 接着上一次的往下写2、Mp3的帧详解   每一帧其实包括 帧头,附加信息,主数据,其实我们只要找到帧头,帧头中所包含的数据就能让我们掌控这一帧的信息,帧头固定4个字节(32bit),格式如下   AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM  下面是就是每个位置代表的含义: 标识长度含义示例A11用于同步帧,找到此帧头(所有位均置 1)11111111111B2音频版本... 阅读全文
posted @ 2010-11-12 17:58 candycaicai 阅读(2849) 评论(0) 推荐(0) 编辑
摘要: 研究了MP3格式后,把自己的积累分享给大家! 阅读全文
posted @ 2010-11-09 11:33 candycaicai 阅读(3211) 评论(0) 推荐(0) 编辑
摘要: 使用malloc函数与relloc函数要注意的·· 阅读全文
posted @ 2010-11-02 14:41 candycaicai 阅读(2432) 评论(0) 推荐(0) 编辑
摘要: unsigned long int  unsigned long int在C语言中是无符号长整形变量,是整形变量的一种。 unsigned long int 与unsigned long是等价的,即定义的时候int可以不写。  C语言字节数为4,与long型数据一样。   unsigned long int的取值范围: 0~4294967295 即 0~(2的32次方-1)   unsigned 是无符号  long是长  int是整型数据  unsigned long int 就是无符号长整型数据unsigned  整型的每一种都有无符号(unsigned)和有符号(signed)两种 阅读全文
posted @ 2010-10-27 18:03 candycaicai 阅读(26770) 评论(1) 推荐(0) 编辑