解码视频流后调用SDL动态库渲染窗口,拖拽窗体改变窗口大小程序崩溃。网上找了很多方法,这里做一个汇总。
SDL版本:SDL-2.0.17
下载地址:Simple DirectMedia Layer - SDL source snapshotshttps://www.libsdl.org/git.php
下载后打开VisualC目录下的SDL.sln后编译即可。
网上收集的三个解决办法:
1、修改SDL_OnWindowResized:
如下:
修改SDL_OnWindowResized中的SDL_WINDOWEVENT_SIZE_CHANGED更改为SDL_WINDOWEVENT_RESIZED
然后重新编译,放入项目中。
重新播放视频拖拽窗口不再崩溃,但是拖拽后视频不能铺满窗口
2、屏蔽SDL_RendererEventWatch函数中QueueCmdSetViewport调用
如下:
屏蔽后拖拽不会崩溃,而且视频会铺满整个窗口,但是视频一直卡在最后一帧
3、屏蔽SetupWindowData函数中SetWindowLongPtr的调用
屏蔽后改变窗口大小不会崩溃,视频铺满整个窗口,视频不会卡帧,但是视频中的直边 有些扭曲