SkeyePlayer播放器以其低延时播放RTSP、RTMP等流而闻名,而低延时播放除了低延时的拉流库以及高编解码效率外,视频图像的高速渲染也尤为重要;
本篇以及系列文章主要讲解SkeyePlayer播放器的渲染引擎D3DRender,该渲染引擎支持基于GDI和D3D两种渲染方式,GDI方式也是我们熟知的windows图像绘制接口,普遍应用于win32以及MFC界面编程,以及图形元素的绘制;但是由于使用纯软的windows系统api接口进行绘制,其效率通常比较低,而D3D可以启用硬件加速,所以,通常其效率会比较高,下面我们将详细讲解D3DRende视频图像渲染流程。
1. D3DRender初始化
D3DRender库分别为GDI和D3D两种渲染模式提供不同API接口进行渲染初始化,调用如下代码段实现其初始化:
//创建D3dRender
if (pThread->renderFormat == GDI_FORMAT_RGB24)
{
if (NULL == pThread->d3dHandle) RGB_InitDraw(&pThread->d3dHandle);
}
else if ( (NULL == pThread->d3dHandle) && ((unsigned int)time(NULL)-deviceLostTime >= 2) )
{
D3D_FONT font;
memset(&font, 0x00, sizeof(D3D_FONT));
font.bold = 0x00;
wcscpy(font.name, TEXT("Arial Black"));
font.size = (int)(fl