开发微软媒体基础应用:网络拓扑与字节流实现
1. 构建进度条表面
构建进度条表面的函数步骤如下:
1. 从演示时钟计算进度标记图像的位置。
2. 在D3D9设备上开始绘制场景:
- 开始绘制将两个进度条纹理组合的精灵。
- 通过精灵接口在D3D9设备上绘制进度条本身。
- 在D3D9设备上的正确位置绘制进度条标记,以指示剪辑已播放的进度。
- 结束绘制将两个进度条纹理组合的精灵。
3. 结束在D3D9设备上绘制场景。
4. 将D3D9设备渲染的表面加载到最终将传递给混合器的表面中。
使用此混合器功能,可以实现相当复杂的用户界面。例如,通过控制整个图像的透明度,可以创建淡入和淡出效果;通过创建更复杂的位图和进行一些鼠标位置处理,还可以构建一个检测鼠标移动并允许动态突出显示活动按钮的用户界面。如果想支持更高级的混合器行为,还可以考虑实现自定义混合器插件并在运行时将其添加到EVR。
2. 网络播放器拓扑类型
播放器可以构建三种主要类型的拓扑:
| 拓扑类型 | 特点 |
| ---- | ---- |
| 仅渲染拓扑 | 不需要Tee过滤器和网络接收器,数据可从解码器直接流向音频和视频渲染器。 |
| 仅网络拓扑 | 为简化起见添加Tee过滤器,但仅将Tee过滤器连接到网络ASF接收器。 |
| 混合拓扑 | 将Tee MFT连接到网络接收器和渲染器接收器。 |
严格来说,在仅网络拓扑中,Tee MFT是冗余的,因为无需拆分数据流。不过,CTopoBuilder类使用这种拓扑结构来简化拓扑构建过程。需要注意的是,网