directdraw显示yuv422(yuy2)】的更多相关文章

#include <mmsystem.h> void CshowpicDlg::OnBnClickedButton3() {  // TODO: 在此添加控件通知处理程序代码 height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0,720,576, SWP_NOMOVE | SWP_SHOWWINDOW);  UpdateWindow();  main_window_handle = m_screen…
原因是: DDrawSurface 丢失, DDraw表面在很多情况下都会丢失(如:启动其他全屏独占程序,屏保,或锁屏时), 表面丢失其实就是表面所使用的内存或显存被DirectDraw系统释放, 分配给其他程序. 如果表面丢失, 对此表面的操作都会返回 DDERR_SURFACELOST , 此时应该调用 IDirectDrawSurface 接口方法 Restore 来恢复表面(重新申请内存或显存). 伪代码如下: hr = m_lpDDSOffscreen->Lock(rcDest,&…
// TODO: 在此添加控件通知处理程序代码  height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0,720,576, SWP_NOMOVE | SWP_SHOWWINDOW);  UpdateWindow();  main_window_handle = m_screen.GetSafeHwnd(); if(DD_OK!=(DirectDrawCreateEx(NULL, (void **)&lpd…
// TODO: 在此添加控件通知处理程序代码  height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0,720,576, SWP_NOMOVE | SWP_SHOWWINDOW);  UpdateWindow();  main_window_handle = m_screen.GetSafeHwnd(); if(DD_OK!=(DirectDrawCreateEx(NULL, (void **)&lpd…
height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0,720,576, SWP_NOMOVE | SWP_SHOWWINDOW);  UpdateWindow();  main_window_handle = m_screen.GetSafeHwnd(); if(DD_OK!=(DirectDrawCreateEx(NULL, (void **)&lpdd7, IID_IDirectDraw7, NUL…
http://www.cnblogs.com/lidan/archive/2012/03/23/2413772.html http://www.yirendai.com/msd/…
1.如你所知,显示在屏幕上的图像仅仅只是是以某种格式存储在内存中的有色像素组成的矩阵.或是调色板化的或是RGB模式的.在不论什么一种情况下.要想做点什么你都必须知道如何绘制图到内存中,然而DirectDraw的设计者决定将显存的概念予以抽象,从而不管你的系统中的显卡有多么古怪,訪问视频表面的方法都是一样的.因此DirectDraw支持显示表面. 2.显示表面是能存储位图数据的矩形内存区域.有两种显示表面:主显示表面和从显示表面. I. 主显示表面直接相当于被显卡光栅画的实际显存,而不论什么时候都…
YUV422蓝屏显示输出功能辅助调试 YUV422有YUYV,YVYU,UYVY,VYUY四种,以下笔者就就以UYVY为例介绍一下数据构成.因为常常要跟视频输入打交道,所以YUV422这种常见的视频信号是常常碰到的.有时候我们调试一个模块输出YUV422,然后再显示出来.非常多时候,可能没法准确推断你那个模块是不是已经正常跑起来了,跑起来来的情况下,是不是真的有数据输出,有了数据输出后来的数据究竟对不正确. 带着这些疑问,当然有非常多对策,笔者就先把这个事情一分为二,以YUV422数据为界限分两…
最近在编写一个进行视频播放的ActiveX控件,工作已经接近尾声,现将其中显示YUV数据的使用DirectDraw的一些经验总结如下:(解码部分不是我编写的,我负责从网络接收数据,将数据传给解码器,并将解码得到的YUV数据进行显示,最初在显示部分我是先将YUV数据转换为RGB数据,再以位图的形式显示到屏幕上,但发现CPU占用率比较高,后来改用DirectDraw直接显示YUV数据) 1.在DirectDraw中创建YUV表面 与一般表面不同的是,创建YUV表面时需要指定象素格式,并指定YUV数据…
  来自:   #include "DDraw.h" class CDDraw { public: void CleanUp(); void DrawDIB(BITMAPINFOHEADER* pBI,char* pData,RECT*rt); BOOL Init(HWND hWnd,int nWidth,int nHeight); CDDraw(); virtual ~CDDraw(); private: HWND m_hDrawWnd; LPDIRECTDRAW lpDD; //…