LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2753|回复: 4

会sdl的来讨论:用SDL_DisplayYUVOverlay显示视频帧时如何在画面上显示字幕和右键菜

[复制链接]
发表于 2008-12-8 15:13:33 | 显示全部楼层 |阅读模式
我觉得显示字幕的话估计只能在显示每一个视频帧之前用SDL_BlitSurface之类的函数把字幕附加上去了,但是现在的问题是SDL_BlitSurface是用于SDL_Surface而不是SDL_Overlay?请问有什么好办法?

我还想实现的一个功能是在视频播放区域内右键点击鼠标的话会出来一个右键菜单,这个功能的实现方法我觉得应该是当显示右键菜单时候,视频区域被分割成5个区域,如图,A,B,C,D区域和菜单区域,然后只刷A,B,C,D区域,这样菜单就可以一直显示了,但是用SDL_DisplayYUVOverlay不支持。。。

这两个问题知道怎么搞定的请出来吼一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2008-12-10 16:05:17 | 显示全部楼层
我自己全部搞定啦,哈哈,爽!

有同样问题的可以回复向我请教
回复 支持 反对

使用道具 举报

发表于 2008-12-24 15:12:18 | 显示全部楼层
我来吼吼吧。

如果设备有叠加层的话,菜单可以画在叠加层上。

如果没有的话,SDL新建一个surface,假设叫video_surface,在其上创建yuv overlay; 另外再创建一个surface用于菜单,假设为menu_surface,在每一帧DisplayYuvOverlay之后,blit video_surface到主surface上,然后再blit menu_surface到主surface上,最后flip一下主surface,即达到楼主的效果, 每一帧后叠加是为了同步,这样不会闪烁。
创建surface时做些相关设置的话,还支持半透明。


如果菜单不是很复杂的话,菜单surface可以不创建,可以在bllit video surface到主surface之后,直接在主surface上画菜单,然后flip 主surface。
回复 支持 反对

使用道具 举报

发表于 2009-1-7 22:18:16 | 显示全部楼层

jetking 老大,我在做毕业设计时有个SDL问题想请教你,

如果看到请加下我打QQ,63975228,我时用GTK+SDL做打,在多路打时候会闪屏而且
带有绿色
回复 支持 反对

使用道具 举报

发表于 2009-1-9 11:46:35 | 显示全部楼层
闪是因为显卡驱动不支持硬件加速,而SDL打开了硬件加速,好像是SDL_YUV_HW什么的,改成SW就不闪了,但是cpu耗的厉害。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表