视频应用开发中常用的几个结构体

简介: 在视频应用的开发中,经常会使用到几个结构体,如MPEG2VIDEOINFO和VIDEOINFOHEADER2等,用来表示视频播放中所需要的一些参数。

在视频应用的开发中,经常会使用到几个结构体,如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结构体的作用相当容易理解,即包含了位图本身以及解码之后需要在显示设备上渲染的图像的特性,如图像大小、分辨率、位数等。


目录
相关文章
|
3天前
|
存储 编译器 数据库
《C 语言结构体:构建复杂数据模型的基石》
《C 语言结构体:构建复杂数据模型的基石》介绍了C语言中结构体的概念、定义和使用方法,以及如何利用结构体构建复杂的数据模型,是学习C语言和数据结构的重要参考资料。
|
5天前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
3月前
|
存储 算法 C++
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
32 4
|
4月前
|
存储 C#
揭秘C#.Net编程秘宝:结构体类型Struct,让你的数据结构秒变高效战斗机,编程界的新星就是你!
【8月更文挑战第4天】在C#编程中,结构体(`struct`)是一种整合多种数据类型的复合数据类型。与类不同,结构体是值类型,意味着数据被直接复制而非引用。这使其适合表示小型、固定的数据结构如点坐标。结构体默认私有成员且不可变,除非明确指定。通过`struct`关键字定义,可以包含字段、构造函数及方法。例如,定义一个表示二维点的结构体,并实现计算距离原点的方法。使用时如同普通类型,可通过实例化并调用其成员。设计时推荐保持结构体不可变以避免副作用,并注意装箱拆箱可能导致的性能影响。掌握结构体有助于构建高效的应用程序。
123 7
|
5月前
|
Cloud Native
云原生部署问题之什么是结构体,并给出一个结构体的定义和初始化示例
云原生部署问题之什么是结构体,并给出一个结构体的定义和初始化示例
51 10
|
7月前
|
存储 算法 C语言
结构体:编程之基石
结构体:编程之基石
|
7月前
|
存储 编译器 Linux
解析编程中不可或缺的基础:深入了解结构体类型
解析编程中不可或缺的基础:深入了解结构体类型
67 1
|
存储 传感器 算法
Linux驱动开发(I2C系统的重要结构体)
Linux驱动开发(I2C系统的重要结构体)
102 0
|
存储 C语言
C语言基础-结构体基础
C语言基础-结构体基础
74 0
结构体基础
结构体基础