【转载】SDL2.0在mfc窗口中显示yuv的一种方法
DWORD ThreadFun()
{
//用mfc窗口句柄创建一个sdl window
SDL_Window * pWindow = SDL_CreateWindowFrom( (void *)( GetDlgItem(IDC_STATIC1)->GetSafeHwnd() ) );
SDL_Rect sdlRT;
sdlRT.h = 288;
sdlRT.w = 352;
sdlRT.x = 0;
sdlRT.y = 0;
SDL_Rect dstRT;
dstRT.h = 288;
dstRT.w = 352;
dstRT.x = 0;
dstRT.y = 0;
int iW = 352;
int iH = 288;
char szData[352*288*2] = {0};
char szPrint[256] = {0};
//计算yuv一行数据占的字节数
int iPitch = iW*SDL_BYTESPERPIXEL(SDL_PIXELFORMAT_YV12);
int iWidth = 0;
int iHeight = 0;
SDL_GetWindowSize( pWindow, &iWidth, &iHeight );
dstRT.h = iHeight;
dstRT.w = iWidth;
//获取当前可用画图驱动 window中有3个,第一个为d3d,第二个为opengl,第三个为software
int iii = SDL_GetNumRenderDrivers();
//创建渲染器,第二个参数为选用的画图驱动,0代表d3d
SDL_Renderer * pRender = SDL_CreateRenderer( pWindow, 0, SDL_RENDERER_ACCELERATED );
sprintf( szPrint, "%s", SDL_GetError());
SDL_RendererInfo info;
SDL_GetRendererInfo(pRender, &info);
SDL_GetRenderDriverInfo(0, &info); //d3d
SDL_GetRenderDriverInfo(1, &info); //opgl
SDL_GetRenderDriverInfo(2, &info); //software
char szInfo[256] = {0};
sprintf(szInfo, "%s", info.name);
sprintf( szPrint, "%s", SDL_GetError());
//创建纹理
SDL_Texture * pTexture = SDL_CreateTexture( pRender,SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, iW, iH );
FILE * pFile = fopen( "d:\\cap1.yuv", "rb" );
if ( pFile == NULL )
{
int u = 0;
}
//读yuv文件,该文件中存放的数据尺寸为 352*288的yv12数据
while ( fread( szData, 1, iW*iH*3/2, pFile ) != NULL )
{
int i = SDL_UpdateTexture( pTexture, &sdlRT, szData, iPitch );
SDL_RenderClear( pRender );
SDL_RenderCopy( pRender, pTexture, &sdlRT, &dstRT );
SDL_RenderPresent( pRender );
Sleep(40);
}
fclose(pFile);
if ( pTexture != NULL )
{
SDL_DestroyTexture( pTexture );
pTexture = NULL ;
}
if ( pRender != NULL )
{
SDL_DestroyRenderer( pRender );
pRender = NULL;
}
if ( NULL != pWindow )
{
SDL_DestroyWindow( pWindow );
pWindow = NULL;
}
}
注意在SDL_CreateWindowFrom中sdl将窗口的消息处理函数地址给改写成sdl的函数了(在sdl源文件中SetupWindowData()此函数内修改),
对SDL的使用还在摸索中,不能保证上述知识全部正确,如哪位仁兄发现问题,请留言更正,再次谢过了!
【转载】SDL2.0在mfc窗口中显示yuv的一种方法的更多相关文章
- (转)SDL2.0在mfc窗口中显示yuv的一种方法
DWORD ThreadFun() { //用mfc窗口句柄创建一个sdl window SDL_Window * pWindow = SDL_CreateWindowFrom( (voi ...
- 树莓派linux系统中显示隐藏文件的几种方法
一.如果直接使用可视化文件管理器 1.直接点击右键,直接选择“显示隐藏文件”选项. 2.快捷键 CTRL + H 二.在终端命令行模式下 可以使用ls命令的-a参数来显示隐藏的文件及文件夹. ls - ...
- windows下ruby中显示中文的3种方法
A: 1将x.rb编码为ascii格式 2 在x.rb开头加上 #code:gbk或者 #coding:gbk B: 1 将x.rb编码为utf-8格式 2 在x.rb开头加上 #code:utf-8 ...
- mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
1,mysql数据库导出模型到powerdesigner 2,CRL+Shift+X 3,复制以下内容,执行 '******************************************** ...
- MFC对话框中显示BMP,JPG图片
//************************************ // 方法说明: 显示JPG和GIF.BMP图片 // 参数说明: CDC * pDC 设 ...
- MFC对话框中显示背景图片
在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换, ...
- 转 在PowerDesigner的PDM图形窗口中显示数据列的中文注释
Name是名称(字段描述),Code是字段名称,Comment是注释名称,ER图中显示的是Name.一般设计时,Name跟comment都设计成描述, 而设计时候常把comment写成中文,name保 ...
- Frameset框架,在同一个浏览器窗口中显示不止一个页面
总结一下.通过使用Frameset框架,可以在同一个浏览器窗口中显示不止一个页面. 先举个例子: 1 <frameset rows="100,*" cols="*& ...
- OpenGL编程逐步深入(三)在窗口中显示一个三角形
这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来. 本节我们以下图所示正方形来讲解OpenGl中的坐标系统.当沿着Z轴负方向看时,可见顶点的坐标必须在这个正 ...
随机推荐
- oralce plsql案例练习
以下plsql程序用的scott用户的dept,emp表. 案例1 --查询80,81,82,87年员工入职人数 set serveroutput on declare cursor cemp is ...
- 05_Python Format Operation
Python格式化输出 print('name: %s,version: %s,code: %d' %('Python',3.6,3)) print('name: {name},version: {v ...
- c#实现自然排序效果,按1,2,11而不是1,11,12,区分字母文字和数字
排序有时候要考虑后缀.这样看起来比较自然. 参考了codeproject上一篇文章:http://www.codeproject.com/Articles/22978/Implementing-the ...
- iOS-隐藏Navigationbar【导航栏无缝圆滑的隐藏】
1.ViewController .m - (void)viewDidLoad { [super viewDidLoad]; self.title = @"隐藏导航栏"; UIBu ...
- 机器学习00:如何通过Python入门机器学习
我们都知道机器学习是一门综合性极强的研究课题,对数学知识要求很高.因此,对于非学术研究专业的程序员,如果希望能入门机器学习,最好的方向还是从实践触发. 我了解到Python的生态对入门机器学习很有帮助 ...
- 洛谷 [P1341]无序字母对
这道题第一眼以为是一道字符串的题,但细想一下是一道求欧拉路的图论题. 把每一对对应关系看成一条边,本题即求这张图上是否存在一个欧拉回路或欧拉路,并要求字典序最小的方案,那么我们在dfs的时候就要从该点 ...
- WPF 圆角输入框
今天打算来做一个圆角的输入框 默认输入框: 这个输入框不好看,并且在XP 跟 WIN 7 WIN10 效果 都不太一样 我们今天不用模板的方式,而是 最简单的方式 来实现 圆角 输入框: ----- ...
- python如何讲一个文件中的图片分到两个
最近在做一个图像分类的比赛,作为初次接触深度学习的菜鸟,上手了keras.说实话,除了keras教程,中文博客的技术支持太差了.正在头大的学习中...废话不多说,记录一下学习中的一些小细节.在遇到ge ...
- python实现HOG+SVM对CIFAR-10数据集分类(上)
本博客只用于学习,如果有错误的地方,恳请指正,如需转载请注明出处. 看机器学习也是有一段时间了,这两天终于勇敢地踏出了第一步,实现了HOG+SVM对图片分类,具体代码可以在github上下载,http ...
- LeetCode - 601. Human Traffic of Stadium
X city built a new stadium, each day many people visit it and the stats are saved as these columns: ...