(转)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( (void ...
- 树莓派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轴负方向看时,可见顶点的坐标必须在这个正 ...
随机推荐
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...
- [hihoCoder] #1158 : 质数相关
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被称为质数相关,是指S中 ...
- Django修改用户名密码的方法
1.python manage.py shell 2.from django.contrib.auth.models import User 3.user=User.objects.get(usern ...
- Unity3d官方测试插件学习-单元测试,集成测试
2016/11/27更新:官方的测试工具有许多问题,我修改了一个版本 https://git.oschina.net/Hont/UnitTest_Modifyed 支持切场景,异常不失败等 其实Uni ...
- apache配置,禁止指定后缀访问
每天都有人来服务器上扫描点什么,想下载点数据库或者什么的 服务器是java的,没有asp或者mdb这样的访问 用一下配置,可以禁止asp或者mdb访问,也可以加上zip和rar禁止 <Direc ...
- Tomcat Jboss Glassfish 三种常见web容器比较
一.缘由: 新公司平台是纯Java架构,有用到Java Web(JSP).Java 业务(EJB).Nginx..Websphere MQ.Mysql这样.大家知道java是跑在容器里的, 这里的业务 ...
- VS15 Visual Assist X破解
Visual Assist X是一款非常好的Microsoft Visual Studio插件,支持C/C++,C#,ASP,Visual Basic,Java和HTML等语言,Visual Assi ...
- java web 自定义的权限框架
权限框架2部分 1.认证 (通常指登录) 2.授权 (指用户访问改页面是否有权限) 设计:
- java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec
今天迁移老项目到linux服务器,jdk8 ,tomcat8.5遇到这个问题. java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.J ...
- 在mac电脑上写入文件到NTFS格式的移动硬盘的解决办法
需求背景: 今天我在Mac电脑A上下载了11G的资料,想传给Mac电脑B,试用了AirPort.文件共享.远程操作等,传输速度都慢得要死,虽然是在同一个局域网下,两台电脑挨的非常的近,但是还是传得超级 ...