mplayer中的fourcc

今天再看mplayer的代码时,其中有这么一段代码:
/*
** Translate a mplayer fourcc to a video4linux2 pixel format.
*/

static int fcc_mp2vl(int fcc)
{
    
switch (fcc) {
    
case IMGFMT_RGB8:    return V4L2_PIX_FMT_RGB332;
    
case IMGFMT_BGR15:    return V4L2_PIX_FMT_RGB555;
    
case IMGFMT_BGR16:    return V4L2_PIX_FMT_RGB565;
    
case IMGFMT_RGB24:    return V4L2_PIX_FMT_RGB24;
    
case IMGFMT_RGB32:    return V4L2_PIX_FMT_RGB32;
    
case IMGFMT_BGR24:    return V4L2_PIX_FMT_BGR24;
    
case IMGFMT_BGR32:    return V4L2_PIX_FMT_BGR32;
    
case IMGFMT_Y800:    return V4L2_PIX_FMT_GREY;
    
case IMGFMT_IF09:    return V4L2_PIX_FMT_YUV410;
    
case IMGFMT_I420:    return V4L2_PIX_FMT_YUV420;
    
case IMGFMT_YUY2:    return V4L2_PIX_FMT_YUYV;
    
case IMGFMT_YV12:    return V4L2_PIX_FMT_YVU420;
    
case IMGFMT_UYVY:   return V4L2_PIX_FMT_UYVY;
    }

    
return fcc;
}
这个函数的作用是将mplayer的fourcc格式转换成v4l2的象素格式,至于什么事fourcc,以前没有接触过,所以,到网上grep了一下,找到这篇文章:

http://htm.winsteps.net/program/6546.htm

其中说到:
FOURCC全称Four-Character Codes,是在编程中非常常用的东西,一般用作标示符。比如wav、avi等RIFF文件的标签头标示,Quake 3的模型文件.md3中也大量存在等于“IDP3”的FOURCC。它是一个32位的标示符,其实就是

typedef unsigned long FOURCC

用宏生成FOURCC

FOURCC是由四个字符拼接而成的。生成FOURCC的传统方法是:

// 来自mmsystem.h#define MAKEFOURCC(ch0, ch1, ch2, ch3)      ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |    ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))

这种方法很简单直观,而且以下代码:

switch (val){case MAKEFOURCC('f', 'm', 't', ' '): ... break;case MAKEFOURCC('d', 'a', 't', 'a'): ... break; ...}

能顺利通过编译,因为宏能在编译期生成常量,符合case的条件。
/*******************************/
FourCC

FourCC代表四字符代码(four character code),是一种独立标示视频数据流格式的四字符代码。视频播放软件通过查询FourCC代码并且寻找与FourCC代码相关联的视频解码器来播放特定的视频流。比如: DIV3 = DivX Low-Motion, DIV4 = DivX Fast-Motion, DIVX = DivX4.

http://bbs4.xilu.com/cgi-bin/bbs/view?forum=fbrmfbrm&message=1270
/*******************************/
先记录下来,等以后看代码多了,我想就能够理解这个东西到底使用来做什么得了。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值