来源:http://blog.youkuaiyun.com/lezhiyong
在视频监控、视频会议、远程教育等多路视频应用软件中经常看到如下的视频布局,这些布局可以根据用户需要自由调整.
这些布局看起来变化多端,在程序中如何实现呢,首先需要从这些多样的布局中找到共同点,我们在这些布局中叠加上一个棋盘格,形成下图:
可以看到,这些布局都是通过先将面板切割成基本单元的视频棋盘格,再将棋盘格做圈选,形成各种风格的多路视频布局。
如果用程序来表达,需要一个结构体来描述视频布局(VIDEO_LAYOUT)和一个结构体来描述视频窗口(VIDEO_WINDOW)。
VIDEO_LAYOUT:描述视频面板切割成棋盘格的方式以及包含的所有VIDEO_WINDOW元素。
typedef struct _ VIDEO_LAYOUT{ BYTE xDiv; // 切割成的棋盘格(列)数 BYTE yDiv; //切割成的棋盘格(行)数 int iWindowNum; // 视频窗口的个数,即pVideoWindow元素的个数
|