变量名 类 型 静态 数组 备 注 属性接口 媒体属性接口 属性数 长整数型 对象集 媒体设备对象集 对象数 长整数型 源接口 媒体源接口 源读取器 源读取器接口 类型接口 媒体类型接口 状态 长整数型 索引 长整数型 标志 长整数型 时间轴 长整数型 媒体样本 媒体样本接口 数据接口 媒体数据接口 图像数据指针 长整数型 图像数据长度 长整数型 图像数据当前长度 长整数型 设备名称 文本型 源类型 文本型 媒体类型 文本型 系统唯一标识 文本型 描述符接口 媒体描述符接口 流描述符数 长整数型 i 整数型 是否被选中 逻辑型 流描述符 流描述符接口 类型处理器接口 媒体类型处理器接口 媒体类型数 长整数型 j 整数型 获取类型接口 媒体类型接口 像素格式 文本型 宽 长整数型 高 长整数型 分子 长整数型 分母 长整数型
状态 =
初始化COM ( #初始化_公寓线程模型 ) 如果真 ( 状态 > 1
) 调试输出 ( “初始化 Media Foundation 失败!” ) 返回 ( -1
) 状态 = 创建媒体属性 ( 属性接口) 如果真 ( 状态 ≠ 0
) 释放COM ( ) 调试输出 ( “创建[IMFAttributes]管理和操作属性集合失败!” ) 返回 ( -1
) 状态 = 属性接口.设置视频捕获类型 ( ) 如果真 ( 状态 ≠ 0
) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “设置源类型为视频捕获类失败!” ) 返回 ( -1
) 状态 = 枚举设备源 ( 属性接口, 对象集, 对象数) 如果真 ( 状态 ≠ 0
或 对象数 = 0
) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “没有找到视频捕获设备!” ) 返回 ( -1
) 对象集.
获取设备名称 ( 0, 设备名称
) 对象集.
获取源类型 ( 0, 源类型
) 对象集.
获取媒体类型 ( 0, 媒体类型
) 对象集.
获取符号链接 ( 0, 系统唯一标识
) 调试输出 ( 设备名称, 源类型, 媒体类型, 系统唯一标识
) 状态 = 对象集.
激活对象 ( 0, 源接口
) 如果真 ( 状态 ≠ 0
) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “激活媒体源失败!” ) 返回 ( -1
) 源接口.
创建演示描述符 ( 描述符接口
) 描述符接口.
获取流描述符数 ( 流描述符数
) 计次循环首 ( 流描述符数, i
) 描述符接口.
获取流描述符 ( i - 1, 是否被选中, 流描述符
) 流描述符.
获取媒体类型处理器 ( 类型处理器接口
) 类型处理器接口.
获取媒体类型数量 ( 媒体类型数
) 计次循环首 ( 媒体类型数, j
) 类型处理器接口.
获取媒体类型 ( j - 1, 获取类型接口
) 获取类型接口.
获取子类型 ( 像素格式
) 获取尺寸属性 ( 获取类型接口, 宽, 高
) 获取帧率属性 ( 获取类型接口, 分子, 分母
) 调试输出 ( 像素格式, 宽, 高, 分子, 分母
) 获取类型接口.
释放 ( ) 计次循环尾 ( ) 类型处理器接口.
释放 ( ) 计次循环尾 ( ) 状态 =
创建源读取器 ( 源接口, 源读取器
) 如果真 ( 状态 ≠ 0
) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “创建源读取器失败!” ) 返回 ( -1
) 状态 = 创建媒体类型 ( 类型接口) 如果真 ( 状态 ≠ 0
) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “创建媒体类型对象失败!” ) 返回 ( -1
) 状态 = 类型接口.设置类型为视频 ( ) 如果真 ( 状态 ≠ 0
) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “设置主类型为视频失败!” ) 返回 ( -1
) 状态 = 类型接口.设置子类型为YUY2 ( ) 如果真 ( 状态 ≠ 0
) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “设置子类型失败(像素格式)!” ) 返回 ( -1
) 状态 = 设置比率属性 ( 类型接口, 480, 480) 如果真 ( 状态 ≠ 0
) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “设置尺寸属性失败!” ) 返回 ( -1
) 状态 = 设置帧率属性 ( 类型接口, 30, 1) 如果真 ( 状态 ≠ 0
) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “设置帧率属性失败!” ) 返回 ( -1
) 状态 = 源读取器.设置源读取器媒体类型 ( 类型接口) 如果真 ( 状态 ≠ 0
) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “应用媒体类型失败!” ) 返回 ( -1
) 类型接口.释放 ( ) 计次循环首 ( 100000,
) 状态 = 源读取器.
读取 ( -4, 0, 索引, 标志, 时间轴, 媒体样本
) 如果真 ( 状态 = 0
且 媒体样本.指针 ≠ 0
) 状态 = 媒体样本.
转换为连续缓冲区 ( 数据接口
) 如果真 ( 状态 = 0
) 数据接口.
锁定 ( 图像数据指针, 图像数据长度, 图像数据当前长度
) 调试输出 ( 图像数据指针, 图像数据长度, 图像数据当前长度
) 数据接口.
解锁 ( ) 数据接口.
释放 ( ) 媒体样本.
释放 ( ) 计次循环尾 ( ) 类型接口.
释放 ( ) 源读取器.
释放 ( ) 对象集.
释放 ( ) 属性接口.
释放 ( ) 释放COM ( ) 调试输出 ( “正常结束” , 对象数
) 返回 ( 0
)