不太清楚用DirectDraw是否可以显示YUV的图像。420或者422的都可以接受,当然最好是420的了(项目需要)。还有,如果有播出一段视频,按我的理解,就是播出几幅连续的图像而已,好像DirectDraw提供了一些这样子的东东,可以解释一下吗?可否给出一个小例子来,或者写出一个小的流程说明。

解决方案 »

  1.   

    另外,还有几个相近的问题,下面是帖子的地址。如果高手们看到了,一并帮助我一下,每个帖子都是100分的哟!我以前常在WEB版出入,近段时间开始搞VC这个东东。如果大家有什么数据库啦、WEB啦什么方面的问题,欢迎交流,我的QQ=2073111。http://expert.csdn.net/Expert/topic/2015/2015387.xml?temp=.7940027
    http://expert.csdn.net/Expert/topic/2015/2015376.xml?temp=.4364435
    http://expert.csdn.net/Expert/topic/2015/2015343.xml?temp=.6192285
      

  2.   

    DirectDraw的SDK开发文档里有个FullDialog例子 提供了 CSurface等类 算是视频封装的很好的了 
    YUV图像不大清楚 如果不行可以转为bmp在显示
      

  3.   

    如何建立一个YUV的离屏表面?  
    ---------------------------------------------------------------  
     
    DDPIXELFORMAT  ddPixelFormat;  
    ddPixelFormat.dwSize  =  sizeof(DDPIXELFORMAT);  
    g_lpDDSPrimary->GetPixelFormat(&ddPixelFormat);  
    ddPixelFormat.dwFlags  =  DDPF_FOURCC;  
    ddPixelFormat.dwFourCC  =  mmioFOURCC('Y','U','Y','2');  
     
    ZeroMemory(&g_ddsd,  sizeof(DDSURFACEDESC2));  
    g_ddsd.dwSize  =  sizeof(DDSURFACEDESC2);  
    g_ddsd.dwFlags  =  DDSD_CAPS    ¦  DDSD_WIDTH    ¦  DDSD_HEIGHT    ¦  DSD_PIXELFORMAT;  
    g_ddsd.ddsCaps.dwCaps  =  DDSCAPS_OVERLAY    ¦  DDSCAPS_VIDEOMEMORY;  
    g_ddsd.dwWidth  =  g_iWidth;  
    g_ddsd.dwHeight  =  g_iHeight;  
    g_ddsd.ddpfPixelFormat  =  ddPixelFormat;  
    g_lpDD7->CreateSurface(&g_ddsd,  &g_lpDDSBack,  NULL);  
    从我的程序中拷出来的变量没有定义,不过应该看得懂。建的是YUY2的Overlay
      

  4.   

    YUY2是YUV422格式的,还是YUV420格式的呢?
      

  5.   

    YUV2是422的格式,但是它是packed formats,YUV分量是按以下格式存的
    Y0 U0 Y1 V0 Y2 U2 Y3 V2 Y4 U4 Y5 V4
    即YUV是交叉人大存储的
    而YUV420是planar formats,YUV分量是按以下格式存的
    Y0.....Yn
    U0.....Un
    V0.....Vn
    即YUV是单独一块存储的
      

  6.   

    YUV420就是用mmioFOURCC('I','4','2','0')表示的
    但是DIRECTDRAW好像会把数据搞乱,具体的我也不知道为什么。
      

  7.   

    Help me! Thanks YOURS Help!!