RIFF文件格式

1.简介
RIFF全称为资源互换文件格式(Resource Interchange File Format),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件格式,RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF文件存储的数据包括:
  • 音频视频交错格式数据(.AVI)
  • 波形格式文件(.WAV)
  • 位图格式数据(.BMP)
  • MIDI格式文件(.RMI)
  • 调色板格式(.PAL)
  • 多媒体电影(.RMN)
  • 动画光标(.ANI)
  • 其他RIFF文件(.BND)
2.CHUNK
chunk是组成RIFF文件的基本单元,结构如下:
struct chunk
{
u32 id; /*块标志*/
u32 size; /*块大小*/
u8 data[size]; /*块内容*/
  • id由4个ASCII字符组成,用以识别块中所包含的数据。如:'RIFF','LIST','fmt','data','WAV','AVI'等等 ,由于这种文件结构最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照little-endian字节顺序写入的。 
  • size(块大小)是存储在data域中数据的长度,id与size域的大小则不包括在该值内。 
  • dat(块内容)中所包含的数据是以字(WORD)为单位排列的,如果该数据结构长度是奇数,则在最后添加一个空(NULL)字节。 

其中有仅有两种块:'RIFF'和'LIST'块可以包含其他块,而其它块仅能含有数据。

struct chunk
{
u32id; /* 块标志 */
u32size; /* 块大小 */
/*此时的dat = type + restdat */
u32type ; /* 类型 */
u8restdat[size] /* dat中除type4个字节后剩余的数据*/
};

可以看出,'RIFF'和'LIST'也是chunk,只是它的dat由两部分组成:

  • type,由4个ASCII字符组成,代表RIFF文件的类型,如'WAV','AVI ';或者'LIST'块的类型,如avi文件中的列表'hdrl','movi'。

  • restdat,dat中除type4个字节后剩余的数据,包括块内容,包含若干chunk和'LIST'


转自:http://www.cppblog.com/ahyswang/archive/2012/05/24/175988.html




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值