DirectDraw:天啊,我这样子做到底错在哪里?
用DDRAW实现视频文件的播放,要求在同一界面上可以同时播放多个视频文件。视频文件的格式是YUV的,但是我可以把它转换成RGB的。
我是这样子做的:
1 创建DDRAW
2 创建主平面,其大小为界面上的某个子窗口(视频显示区,4个或多个视频全部显示在这里,可平均分割;以下以4个为例)
3 创建一个离屏表面(称为视频表面),其大小为一个视频窗口的大小(即四分之一的显示区)
4 创建一个离屏表面(称为帧表面),其大小为一帧图像的大小(即从文件解码出来的大小)
5 OK,开始主循环
6 读文件,解码一帧图像到内存
7 使用LOCK方法,锁定帧表面,将此内存中的数据用MEMCPY函数复制到帧表面
8 得到帧表面的DC与视频表面的DC,用 StretchBlt函数将数据从帧表面拉伸到视频表面,实现缩放
9 使用BLT方法,将准备好数据的视频表面BLT到主平面的适当位置
10 这时候应该显示出来了吧,可是没有
11 开始一下循环
12 对于要显示多个视频的问题,我想如果上面的流程通过了的话,就可以通过第9步改变不同的位置实现同时显示。可能通过线程实现同时读取不同的文件。将第7步到9步做成一个函数。
高手们指点一下:为什么我的流程不可以工作?
如果有高手愿意帮助我完成此项工作,我愿意出RMB报答,我的邮箱:Payment.wu@Tom.com
在线等待。
问题点数:200、回复次数:8Top
1 楼wpmsoft(红旗下的蛋)回复于 2003-12-01 14:03:56 得分 0
没有人可能回答吗?
不会吧,CSDN上有N多DD的高手呀!自已顶一下吧。Top
2 楼alfwolf(木马煞)回复于 2003-12-01 14:10:38 得分 200
在Dx8和Dx9的SDK中都有原封不动的多视频输出的示例代码
为什么不参考一下呢?Top
3 楼wpmsoft(红旗下的蛋)回复于 2003-12-01 14:16:14 得分 0
DX8的SDK中没有多视频的DDRAW的示例代码呀!可以告诉我吗?我没有找到。Top
4 楼alfwolf(木马煞)回复于 2003-12-01 15:00:43 得分 0
你的信箱呢?我发给你代码
但是在DX9的directshow中,DX8中确实没有
建议下一个DX9的SDK看看,在DirectShow中,名称是PIP和PIP9Top
5 楼wpmsoft(红旗下的蛋)回复于 2003-12-01 19:44:30 得分 0
来人呀,救命!Top
6 楼wpmsoft(红旗下的蛋)回复于 2003-12-02 10:25:15 得分 0
还是没有人来帮助我一下吗?Top
7 楼wpmsoft(红旗下的蛋)回复于 2003-12-16 12:02:36 得分 0
我自己搞定了,还是谢谢各位的帮助--虽然并没有直接帮上忙。Top
8 楼zhucde(【風間苍月】★<==>★【虚拟闲人】)回复于 2003-12-16 12:05:10 得分 0
暂时不要结帖,
自己贴出代码,
如果可以的话就把专家分给你自己,
如果问题一般,
就将该帖转到非技术类.Top




