在vs2008下使用ffmpeg(4):结构体成员初始化
来源:互联网 发布:iapp锁机源码大全 编辑:程序博客网 时间:2024/06/06 09:37
快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ffmpeg-checkout-20081210
vs2008
Windows XP
欢迎转载,但请保留作者信息
在ffmpeg中,大量使用了c99中的结构体成员初始化方式,如libavcodec/imgconvert.c中的一个定义:
/* this table gives more information about formats */
static const PixFmtInfo pix_fmt_info[PIX_FMT_NB] = {
/* YUV formats */
[PIX_FMT_YUV420P] = {
.name = "yuv420p",
.nb_channels = 3,
.color_type = FF_COLOR_YUV,
.pixel_type = FF_PIXEL_PLANAR,
.depth = 8,
.x_chroma_shift = 1, .y_chroma_shift = 1,
},
[PIX_FMT_YUV422P] = {
.name = "yuv422p",
.nb_channels = 3,
.color_type = FF_COLOR_YUV,
.pixel_type = FF_PIXEL_PLANAR,
.depth = 8,
.x_chroma_shift = 1, .y_chroma_shift = 0,
},
………..
};
这一段代码在vs2008下编译将产生很多语法错误,首先在这个结构体数组中,它使用了[PIX_FMT_*]这样的方式指定序号,这样数组的成员可以不必要按照顺序排列,但是在vs2008下,必须调整数组成员的顺序,使之按递增的顺序排列。此外,vs2008也不支持.name = “”这样的定义,因此可以做出如下修改:
/* this table gives more information about formats */
static const PixFmtInfo pix_fmt_info[PIX_FMT_NB] = {
/* YUV formats */
/*[PIX_FMT_YUV420P] =*/ { // PIX_FMT_YUV420P = 0
/*.name = */"yuv420p",
/*.nb_channels = */3,
/*.color_type = */FF_COLOR_YUV,
/*.pixel_type = */FF_PIXEL_PLANAR,
/*.is_alpha = */0,
/*.x_chroma_shift = */1,
/*.y_chroma_shift = */1,
/*.depth = */8,
},
/*[PIX_FMT_YUYV422] =*/ { // PIX_FMT_YUYV422 = 1
/*.name = */"yuyv422",
/*.nb_channels = */1,
/*.color_type = */FF_COLOR_YUV,
/*.pixel_type = */FF_PIXEL_PACKED,
/*.is_alpha = */0,
/*.x_chroma_shift = */1,
/*.y_chroma_shift = */0,
/*.depth = */8,
},
/*[PIX_FMT_RGB24] =*/ { // PIX_FMT_RGB24 = 2
/*.name = */"rgb24",
/*.nb_channels = */3,
/*.color_type = */FF_COLOR_RGB,
/*.pixel_type = */FF_PIXEL_PACKED,
/*.is_alpha = */0,
/*.x_chroma_shift = */0,
/*.y_chroma_shift = */0,
/*.depth = */8,
},
………….
};
参考资料
在vs2008下使用ffmpeg(1):inttypes.h的问题(
在vs2008下使用ffmpeg(2):readtime的问题(
在vs2008下使用ffmpeg(3):结构体构建(
- 在vs2008下使用ffmpeg(4):结构体成员初始化
- 在vs2008下使用ffmpeg(3):结构体构建
- 在vs2008下使用ffmpeg(2):readtime的问题
- 在vs2008下使用ffmpeg(5):动态数组
- 结构体成员初始化
- 在vs2008下使用ffmpeg(1):inttypes.h的问题
- 在vs2008下使用ffmpeg(1):inttypes.h的问题
- 在 VS2008 下使用 WebService
- c语言结构体指针成员初始化
- linux 结构体部分成员初始化
- ffmpeg基础与编译_在VS2008下调试output_example.c(详细步骤)
- 在VS2008下调试ffmpeg output_example.c详细步骤
- 三角形类(在构造函数中使用参数初始化表对数据成员初始化)
- 在vs2008下使用cygwin(22):使用tls
- Qt下结构体中的成员使用问题
- 在C++结构体中使用静态数据成员(一)
- 在C++结构体中使用静态成员(二)
- 结构体成员和结构体指针初始化
- 在vs2008下使用ffmpeg(3):结构体构建
- Visual C++开发工具与调试技巧整理
- Visual Studio 2005/2008 打包方法示例
- 无题
- if 语句不使用代码块引起的问题
- 在vs2008下使用ffmpeg(4):结构体成员初始化
- 打印回型数组 回型矩阵 环形数组
- 内存问题
- WEB标准是什么
- 今天我们怎样学软件技术,怎样教软件课程?
- 电脑鬼才--CIH病毒制造者陈盈豪
- 积累宝石
- Linux双网卡路由器配置
- 无法找到 PInvoke DLL“sqlceme35.dll” (翻译)