使用SDL2播放视频,窗口无法移动,处于繁忙状态的解决办法
2017-09-26 13:36
495 查看
无论播放视频是在主线程做,还是子线程做都会有这个问题。
解决这个问题的办法在于将每播放一帧后Sleep(40)的机制,
(假设25f/s),改为通过SDL的event机制,每隔40ms,
push一个event从而通知线程绘图。
下面是伪代码:
#define SDL_START_VIDEO_DECANDSHOW (SDL_USEREVENT+1)
sdl_thread()
{
SDL_Event event;
event.type = SDL_START_VIDEO_DECANDSHOW;
SDL_PushEvent(&event);
}
decoderthread()
{
SDL_Event sdlevent;
while(1)
{
SDL_WaitEvent(&sdlevent);
//check event type
//decode and show
}
}
备注:关闭播放窗口会触发SDL_QUIT event。
解决这个问题的办法在于将每播放一帧后Sleep(40)的机制,
(假设25f/s),改为通过SDL的event机制,每隔40ms,
push一个event从而通知线程绘图。
下面是伪代码:
#define SDL_START_VIDEO_DECANDSHOW (SDL_USEREVENT+1)
sdl_thread()
{
SDL_Event event;
event.type = SDL_START_VIDEO_DECANDSHOW;
SDL_PushEvent(&event);
}
decoderthread()
{
SDL_Event sdlevent;
while(1)
{
SDL_WaitEvent(&sdlevent);
//check event type
//decode and show
}
}
备注:关闭播放窗口会触发SDL_QUIT event。
相关文章推荐
- Android 使用Webview无法播放视频问题的解决办法
- 关于VideoView无法监听视频播放时缓冲或者卡顿状态的解决办法
- 关于VideoView无法监听视频播放时缓冲或者卡顿状态的解决办法
- 使用MPMediaPlayerController播放视频提示[NSURL initFileURLWithPath:]: nil string parameter错误的解决办法
- Microsoft Office Word 2007 切换窗口后鼠标无法使用问题的解决办法
- win2003 server + iis6.0 无法播放flv视频解决办法
- ubuntu 使用移动硬盘出现无法挂载(解决办法)
- 在VS2005中报"无法添加数据库连接 该项目不适于在指定状态下使用"的解决办法
- chrome浏览器 Adobe Flash 版本太旧 无法播放视频解决办法
- Android Webview无法播放美拍网或者优酷网视频,其他视频没问题解决办法。(网页可能暂时无法打开或已永久移至新地址)
- Microsoft Office Word 2007 切换窗口后鼠标无法使用问题的解决办法
- Android使用的webcview中带有音乐播放控件,在关闭或分享时处于界面不可见状态下,声音仍在播放的问题解决
- MFC中CEdit控件使用SetSel无法取消全选状态解决办法
- Oracle断网安装后,联网状态下却无法使用问题解决办法
- 使用格式工厂转换的MP4视频不能在网页上播放的解决办法
- [转载] Office2007切换窗口后鼠标无法使用问题的解决办法
- 解决WP7手机使用蓝牙耳机播放视频时无法启动A2DP(没有声音)
- Office Word 2007切换窗口后鼠标无法使用问题的解决办法
- win7系统评分出现“无法度量视频播放性能”弹窗的解决办法介绍
- WebView无法播放视频的解决办法