在视频应用的开发中,经常会使用到几个结构体,如MPEG2VIDEOINFO和VIDEOINFOHEADER2等,用来表示视频播放中所需要的一些参数。定义分别如下:
1、MPEG2VIDEOINFO:
typedef struct tagMPEG2VIDEOINFO { VIDEOINFOHEADER2 hdr;<span style="white-space:pre"> </span>//兼容VIDEOINFOHEADER2类型 DWORD dwStartTimeCode;<span style="white-space:pre"> </span> DWORD cbSequenceHeader;<span style="white-space:pre"> </span>//dwSequenceHeader的长度(字节为单位) DWORD dwProfile;<span style="white-space:pre"> </span>//标记MPEG2 profile的索引 DWORD dwLevel;<span style="white-space:pre"> //标记MPEG2 </span>level<span style="white-space:pre">的索引</span> DWORD dwFlags;<span style="white-space:pre"> </span>//配置信息 DWORD dwSequenceHeader[1];<span style="white-space:pre"> </span>//序列头数据 } MPEG2VIDEOINFO;该结构体用于描述一个MPEG2格式的视频流对象。
2、VIDEOINFOHEADER2:
typedef struct tagVIDEOINFOHEADER2 { RECT rcSource;<span style="white-space:pre"> </span>//该成员和下一个成员分别表示原显示区域和目标显示区域,可用于目标视频区的拉伸或裁减 RECT rcTarget; DWORD dwBitRate;<span style="white-space:pre"> </span>//当前视频的码率 DWORD dwBitErrorRate;<span style="white-space:pre"> </span>//当前视频的误码率 REFERENCE_TIME AvgTimePerFrame;<span style="white-space:pre"> </span>//以毫秒表示当前平均播放一帧的时间 DWORD dwInterlaceFlags;<span style="white-space:pre"> </span>//标识当前视频是否为隔行视频 DWORD dwCopyProtectFlags;<span style="white-space:pre"> </span>//限制拷贝标识 DWORD dwPictAspectRatioX;<span style="white-space:pre"> </span>//该成员和下一个成员分别表示视频纵横比的x和y分量,以inch为单位 DWORD dwPictAspectRatioY; DWORD dwReserved1; DWORD dwReserved2; BITMAPINFOHEADER bmiHeader;<span style="white-space:pre"> </span>//位图结构 } VIDEOINFOHEADER2;
该结构体记录了视频中的位图、扫描方式、纵横比等信息。
3、BITMAPINFOHEADER:typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER;BITMAPINFOHEADER结构体的作用相当容易理解,即包含了位图本身以及解码之后需要在显示设备上渲染的图像的特性,如图像大小、分辨率、位数等。