home *** CD-ROM | disk | FTP | other *** search
- //----------------------------------------------------------------------------
- // File: Utils.h
- //
- // Desc: DirectShow sample code
- // External (global) utilities specific for VMRXcl app
- //
- // Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
- //----------------------------------------------------------------------------
- #include "project.h"
- #include "utils.h"
-
- //-----------------------------------------------------------------------------------------
- // Function: hresultNameLookup
- // Purpose: returns a string value for the given hresult
- // Arguments: HRESULT that needs verifying
- // Returns: string
- //-----------------------------------------------------------------------------------------*/
- const char * hresultNameLookup(HRESULT hres)
- {
- switch(hres)
- {
- case VFW_E_CANNOT_RENDER:
- return "VFW_E_CANNOT_RENDER";
- break;
- case VFW_E_INVALID_FILE_FORMAT:
- return "VFW_E_INVALID_FILE_FORMAT";
- break;
- case VFW_E_NOT_FOUND:
- return "VFW_E_NOT_FOUND";
- break;
- case VFW_E_NOT_IN_GRAPH:
- return "VFW_E_NOT_IN_GRAPH";
- break;
- case VFW_E_UNKNOWN_FILE_TYPE:
- return "VFW_E_UNKNOWN_FILE_TYPE";
- break;
- case VFW_E_UNSUPPORTED_STREAM:
- return "VFW_E_UNSUPPORTED_STREAM";
- break;
- case VFW_E_CANNOT_CONNECT:
- return "VFW_E_CANNOT_CONNECT";
- break;
- case VFW_E_CANNOT_LOAD_SOURCE_FILTER:
- return "VFW_E_CANNOT_LOAD_SOURCE_FILTER";
- break;
- case VFW_S_PARTIAL_RENDER:
- return "VFW_S_PARTIAL_RENDER";
- break;
- case VFW_S_VIDEO_NOT_RENDERED:
- return "VFW_S_VIDEO_NOT_RENDERED";
- break;
- case VFW_S_AUDIO_NOT_RENDERED:
- return "VFW_S_AUDIO_NOT_RENDERED";
- break;
- case VFW_S_DUPLICATE_NAME:
- return "VFW_S_DUPLICATE_NAME";
- break;
- case VFW_S_MEDIA_TYPE_IGNORED:
- return "VFW_S_MEDIA_TYPE_IGNORED";
- break;
- case E_INVALIDARG:
- return "E_INVALIDARG";
- break;
- case DDERR_INCOMPATIBLEPRIMARY:
- return "DDERR_INCOMPATIBLEPRIMARY";
- break;
- case DDERR_INVALIDCAPS:
- return "DDERR_INVALIDCAPS";
- break;
- case DDERR_INVALIDOBJECT :
- return "DDERR_INVALIDOBJECT";
- break;
- case DDERR_INVALIDPIXELFORMAT:
- return "DDERR_INVALIDPIXELFORMAT";
- break;
- case DDERR_NOALPHAHW :
- return "DDERR_NOALPHAHW";
- break;
- case DDERR_NOCOOPERATIVELEVELSET :
- return "DDERR_NOCOOPERATIVELEVELSET";
- break;
- case DDERR_NODIRECTDRAWHW :
- return "DDERR_NODIRECTDRAWHW";
- break;
- case DDERR_NOEMULATION :
- return "DDERR_NOEMULATION";
- break;
- case VFW_E_BUFFERS_OUTSTANDING:
- return "VFW_E_BUFFERS_OUTSTANDING";
- break;
- case DDERR_NOEXCLUSIVEMODE :
- return "DDERR_NOEXCLUSIVEMODE ";
- break;
- case DDERR_NOFLIPHW:
- return "DDERR_NOFLIPHW";
- break;
- case DDERR_NOMIPMAPHW:
- return "DDERR_NOMIPMAPHW";
- break;
- case DDERR_NOOVERLAYHW :
- return "DDERR_NOOVERLAYHW ";
- break;
- case E_OUTOFMEMORY:
- return "E_OUTOFMEMORY";
- break;
- case VFW_E_NO_DISPLAY_PALETTE:
- return "VFW_E_NO_DISPLAY_PALETTE";
- break;
- case VFW_E_NO_COLOR_KEY_FOUND:
- return "VFW_E_NO_COLOR_KEY_FOUND";
- break;
- case VFW_E_PALETTE_SET:
- return "VFW_E_PALETTE_SET";
- break;
- case DDERR_NOZBUFFERHW :
- return "DDERR_NOZBUFFERHW ";
- break;
- case DDERR_OUTOFVIDEOMEMORY :
- return "DDERR_OUTOFVIDEOMEMORY";
- break;
- case DDERR_PRIMARYSURFACEALREADYEXISTS:
- return "DDERR_PRIMARYSURFACEALREADYEXISTS ";
- break;
- case DDERR_UNSUPPORTEDMODE:
- return "DDERR_UNSUPPORTEDMODE";
- break;
- case VFW_E_NO_ADVISE_SET:
- return "VFW_E_NO_ADVISE_SET";
- break;
- case S_OK:
- return "S_OK";
- break;
- case S_FALSE:
- return "S_FALSE";
- break;
- case VFW_S_CONNECTIONS_DEFERRED:
- return "VFW_S_CONNECTIONS_DEFERRED";
- break;
- case 0x80040154:
- return "Class not registered";
- break;
- case E_FAIL:
- return "E_FAIL";
- break;
- case VFW_E_DVD_OPERATION_INHIBITED:
- return "VFW_E_DVD_OPERATION_INHIBITED";
- break;
- case VFW_E_DVD_INVALIDDOMAIN:
- return "VFW_E_DVD_INVALIDDOMAIN";
- break;
- case E_NOTIMPL:
- return "E_NOTIMPL";
- break;
- case VFW_E_WRONG_STATE:
- return "VFW_E_WRONG_STATE";
- break;
- case E_PROP_SET_UNSUPPORTED:
- return "E_PROP_SET_UNSUPPORTED";
- break;
- case VFW_E_NO_PALETTE_AVAILABLE:
- return "VFW_E_NO_PALETTE_AVAILABLE";
- break;
- case E_UNEXPECTED:
- return "E_UNEXPECTED";
- break;
- case VFW_E_DVD_NO_BUTTON:
- return "VFW_E_DVD_NO_BUTTON";
- break;
- case VFW_E_DVD_GRAPHNOTREADY:
- return "VFW_E_DVD_GRAPHNOTREADY";
- break;
- case VFW_E_NOT_OVERLAY_CONNECTION:
- return "VFW_E_NOT_OVERLAY_CONNECTION";
- break;
- case VFW_E_DVD_RENDERFAIL:
- return "VFW_E_DVD_RENDERFAIL";
- break;
- case VFW_E_NOT_CONNECTED:
- return "VFW_E_NOT_CONNECTED";
- break;
- case E_NOINTERFACE:
- return "E_NOINTERFACE";
- break;
- case VFW_E_NO_COLOR_KEY_SET :
- return "VFW_E_NO_COLOR_KEY_SET ";
- break;
- case VFW_E_NO_INTERFACE:
- return "VFW_E_NO_INTERFACE";
- break;
- case 0x8004020c:
- return "VFW_E_BUFFER_NOTSET";
- break;
- case 0x80040225:
- return "VFW_E_NOT_PAUSED";
- case 0x80070002:
- return "System cannot find the file specified";
- break;
- case 0x80070003:
- return "System cannot find the path specified";
- break;
- case VFW_E_DVD_DECNOTENOUGH:
- return "VFW_E_DVD_DECNOTENOUGH";
- break;
- case VFW_E_ADVISE_ALREADY_SET:
- return "VFW_E_ADVISE_ALREADY_SET";
- break;
- case VFW_E_DVD_CMD_CANCELLED:
- return "VFW_E_DVD_CMD_CANCELLED";
- break;
- case VFW_E_DVD_MENU_DOES_NOT_EXIST:
- return "VFW_E_DVD_MENU_DOES_NOT_EXIST";
- break;
- case VFW_E_DVD_WRONG_SPEED:
- return "VFW_E_DVD_WRONG_SPEED";
- break;
- case VFW_S_DVD_NON_ONE_SEQUENTIAL:
- return "VFW_S_DVD_NON_ONE_SEQUENTIAL";
- break;
- case E_POINTER:
- return "E_POINTER";
- break;
- case VFW_E_DVD_NOT_IN_KARAOKE_MODE:
- return "VFW_E_DVD_NOT_IN_KARAOKE_MODE";
- break;
- case VFW_E_DVD_INVALID_DISC:
- return "VFW_E_DVD_INVALID_DISC";
- break;
- case VFW_E_DVD_STREAM_DISABLED:
- return "VFW_E_DVD_STREAM_DISABLED";
- break;
- case VFW_E_NOT_STOPPED:
- return "VFW_E_NOT_STOPPED";
- break;
- default:
- return "Unrecognized";
- break;
- }
- }
-
-
- /*-----------------------------------------------------------------------------------------
- | Function: MySleep
- | Purpose: if the application is in automated mode, then sleep func is turned off
- | Arguments: checks m_bAutomatedStatus to see if the func is in automation
- | Returns: true if automated, false otherwist
- \-----------------------------------------------------------------------------------------*/
-
- bool MySleep(DWORD dwTime)
- {
- HANDLE hNeverHappensEvent;
- hNeverHappensEvent = CreateEvent(NULL, FALSE, FALSE, "EVENTTHATNEVERHAPPENS");
- WaitForSingleObject( hNeverHappensEvent, dwTime);
- return false;
-
- } // end of checkHResult method
-
-
- void ReportDDrawSurfDesc( DDSURFACEDESC2 ddsd)
- {
- char szFlags[4096];
- char szMsg[4096];
-
- OutputDebugString("*** Surface description ***\n");
-
- SurfaceDescHelper( ddsd.dwFlags, szFlags);
- OutputDebugString(szFlags);
-
- sprintf( szMsg, " dwWidth x dwHeight: %ld x %ld\n", ddsd.dwWidth, ddsd.dwHeight);
- OutputDebugString(szMsg);
-
- sprintf( szMsg, " lPitch: %ld\n", ddsd.lPitch);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwLinearSize)\n");
-
- sprintf( szMsg, " dwBackBufferCount: %ld\n", ddsd.dwBackBufferCount);
- OutputDebugString(szMsg);
-
- sprintf( szMsg, " dwMipMapCount: %ld\n", ddsd.dwMipMapCount);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwRefreshRate)");
-
- sprintf( szMsg, " dwAlphaBitDepth: %ld\n", (LONG)ddsd.dwAlphaBitDepth);
- OutputDebugString(szMsg);
-
- sprintf( szMsg, " lpSurface: %x\n", (LONG_PTR)(ddsd.lpSurface));
- OutputDebugString(szMsg);
-
- ReportPixelFormat( ddsd.ddpfPixelFormat );
- ReportDDSCAPS2( ddsd.ddsCaps );
-
- sprintf( szMsg, " dwTextureStage: %ld\n", ddsd.dwTextureStage);
- OutputDebugString(szMsg);
-
- OutputDebugString("***************************\n");
- }
-
- void ReportDDSCAPS2( DDSCAPS2 ddscaps )
- {
- char sz[4096];
-
- strcpy( sz, " DDSCAPS2::dwCaps: ");
- if( ddscaps.dwCaps & DDSCAPS_3DDEVICE ) strcat( sz, "DDSCAPS_3DDEVICE, ");
- if( ddscaps.dwCaps & DDSCAPS_ALLOCONLOAD ) strcat( sz, "DDSCAPS_ALLOCONLOAD, ");
- if( ddscaps.dwCaps & DDSCAPS_ALPHA ) strcat( sz, "DDSCAPS_ALPHA, ");
- if( ddscaps.dwCaps & DDSCAPS_BACKBUFFER ) strcat( sz, "DDSCAPS_BACKBUFFER, ");
- if( ddscaps.dwCaps & DDSCAPS_COMPLEX ) strcat( sz, "DDSCAPS_COMPLEX, ");
- if( ddscaps.dwCaps & DDSCAPS_FLIP ) strcat( sz, "DDSCAPS_FLIP, ");
- if( ddscaps.dwCaps & DDSCAPS_FRONTBUFFER ) strcat( sz, "DDSCAPS_FRONTBUFFER, ");
- if( ddscaps.dwCaps & DDSCAPS_HWCODEC ) strcat( sz, "DDSCAPS_HWCODEC, ");
- if( ddscaps.dwCaps & DDSCAPS_LIVEVIDEO ) strcat( sz, "DDSCAPS_LIVEVIDEO, ");
- if( ddscaps.dwCaps & DDSCAPS_LOCALVIDMEM ) strcat( sz, "DDSCAPS_LOCALVIDMEM, ");
- if( ddscaps.dwCaps & DDSCAPS_MIPMAP ) strcat( sz, "DDSCAPS_MIPMAP, ");
- if( ddscaps.dwCaps & DDSCAPS_MODEX ) strcat( sz, "DDSCAPS_MODEX, ");
- if( ddscaps.dwCaps & DDSCAPS_NONLOCALVIDMEM ) strcat( sz, "DDSCAPS_NONLOCALVIDMEM, ");
- if( ddscaps.dwCaps & DDSCAPS_OFFSCREENPLAIN ) strcat( sz, "DDSCAPS_OFFSCREENPLAIN, ");
- if( ddscaps.dwCaps & DDSCAPS_OPTIMIZED ) strcat( sz, "DDSCAPS_OPTIMIZED, ");
- if( ddscaps.dwCaps & DDSCAPS_OVERLAY ) strcat( sz, "DDSCAPS_OVERLAY, ");
- if( ddscaps.dwCaps & DDSCAPS_OWNDC ) strcat( sz, "DDSCAPS_OWNDC, ");
- if( ddscaps.dwCaps & DDSCAPS_PALETTE ) strcat( sz, "DDSCAPS_PALETTE, ");
- if( ddscaps.dwCaps & DDSCAPS_PRIMARYSURFACE ) strcat( sz, "DDSCAPS_PRIMARYSURFACE, ");
- if( ddscaps.dwCaps & DDSCAPS_STANDARDVGAMODE ) strcat( sz, "DDSCAPS_STANDARDVGAMODE, ");
- if( ddscaps.dwCaps & DDSCAPS_SYSTEMMEMORY ) strcat( sz, "DDSCAPS_SYSTEMMEMORY, ");
- if( ddscaps.dwCaps & DDSCAPS_TEXTURE ) strcat( sz, "DDSCAPS_TEXTURE, ");
- if( ddscaps.dwCaps & DDSCAPS_VIDEOMEMORY ) strcat( sz, "DDSCAPS_VIDEOMEMORY, ");
- if( ddscaps.dwCaps & DDSCAPS_VIDEOPORT ) strcat( sz, "DDSCAPS_VIDEOPORT, ");
- if( ddscaps.dwCaps & DDSCAPS_VISIBLE ) strcat( sz, "DDSCAPS_VISIBLE, ");
- if( ddscaps.dwCaps & DDSCAPS_WRITEONLY ) strcat( sz, "DDSCAPS_WRITEONLY, ");
- if( ddscaps.dwCaps & DDSCAPS_ZBUFFER ) strcat( sz, "DDSCAPS_ZBUFFER, ");
-
- strcat( sz, "\n");
- OutputDebugString(sz);
- strcpy( sz, " DDSCAPS2::dwCaps2: ");
-
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP ) strcat( sz, "DDSCAPS2_CUBEMAP, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) strcat( sz, "DDSCAPS2_CUBEMAP_POSITIVEX, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) strcat( sz, "DDSCAPS2_CUBEMAP_NEGATIVEX, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) strcat( sz, "DDSCAPS2_CUBEMAP_POSITIVEY, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) strcat( sz, "DDSCAPS2_CUBEMAP_NEGATIVEY, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) strcat( sz, "DDSCAPS2_CUBEMAP_POSITIVEZ, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) strcat( sz, "DDSCAPS2_CUBEMAP_NEGATIVEZ, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_CUBEMAP_ALLFACES ) strcat( sz, "DDSCAPS2_CUBEMAP_ALLFACES, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_D3DTEXTUREMANAGE ) strcat( sz, "DDSCAPS2_D3DTEXTUREMANAGE, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_DONOTPERSIST ) strcat( sz, "DDSCAPS2_DONOTPERSIST, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_HARDWAREDEINTERLACE ) strcat( sz, "DDSCAPS2_HARDWAREDEINTERLACE, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_HINTANTIALIASING ) strcat( sz, "DDSCAPS2_HINTANTIALIASING, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_HINTDYNAMIC ) strcat( sz, "DDSCAPS2_HINTDYNAMIC, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_HINTSTATIC ) strcat( sz, "DDSCAPS2_HINTSTATIC, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_MIPMAPSUBLEVEL ) strcat( sz, "DDSCAPS2_MIPMAPSUBLEVEL, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_OPAQUE ) strcat( sz, "DDSCAPS2_OPAQUE, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_STEREOSURFACELEFT ) strcat( sz, "DDSCAPS2_STEREOSURFACELEFT, ");
- if( ddscaps.dwCaps2 & DDSCAPS2_TEXTUREMANAGE ) strcat( sz, "DDSCAPS2_TEXTUREMANAGE, ");
-
- strcat( sz, "\n");
- OutputDebugString(sz);
- }
-
-
- void ReportPixelFormat( DDPIXELFORMAT ddpf)
- {
- char szFlags[4096];
- char szMsg[MAX_PATH];
-
- PixelFormatHelper( ddpf.dwFlags, szFlags);
-
- OutputDebugString(szFlags);
-
- sprintf( szMsg, " dwFourCC: %ld\n", ddpf.dwFourCC);
- OutputDebugString(szMsg);
-
- sprintf( szMsg, " dwRGBBitCount: %ld\n", ddpf.dwRGBBitCount);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwYUVBitCount, dwZBufferBitDepth, dwAlphaBitDepth, dwLuminanceBitCount, dwBumpBitCount)\n");
-
- sprintf( szMsg, " dwRBitMask: %ld\n", ddpf.dwRBitMask);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwYBitMask, dwStencilBitDepth, dwLuminanceBitMask, dwBumpDuBitMask)\n");
-
- sprintf( szMsg, " dwGBitMask: %ld\n", ddpf.dwGBitMask);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwUBitMask, dwZBitMask, dwBumpDvBitMask)\n");
-
- sprintf( szMsg, " dwBBitMask: %ld\n", ddpf.dwBBitMask);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwVBitMask, dwStencilBitMask, dwBumpLuminanceBitMask)\n");
-
- sprintf( szMsg, " dwRGBAlphaBitMask: %ld\n", ddpf.dwRGBAlphaBitMask);
- OutputDebugString(szMsg);
- OutputDebugString(" (dwYUVAlphaBitMask, dwLuminanceAlphaBitMask, dwRGBZBitMask, dwYUVZBitMask)\n");
- }
-
- void SurfaceDescHelper( DWORD dwFlags, char * pszFlags )
- {
- if( !pszFlags )
- {
- return;
- }
- strcpy( pszFlags, " dwFlags: ");
-
- if( dwFlags & DDSD_ALL )
- strcat( pszFlags, "DDSD_ALL\n");
-
- if( dwFlags & DDSD_ALPHABITDEPTH )
- strcat( pszFlags, "DDSD_ALPHABITDEPTH\n");
-
- if( dwFlags & DDSD_BACKBUFFERCOUNT )
- strcat( pszFlags, "DDSD_BACKBUFFERCOUNT\n");
-
- if( dwFlags & DDSD_CAPS )
- strcat( pszFlags, "DDSD_CAPS\n");
-
- if( dwFlags & DDSD_CKDESTBLT )
- strcat( pszFlags, "DDSD_CKDESTBLT\n");
-
- if( dwFlags & DDSD_CKDESTOVERLAY )
- strcat( pszFlags, "DDSD_CKDESTOVERLAY\n");
-
- if( dwFlags & DDSD_CKSRCBLT )
- strcat( pszFlags, "DDSD_CKSRCBLT\n");
-
- if( dwFlags & DDSD_CKSRCOVERLAY )
- strcat( pszFlags, "DDSD_CKSRCOVERLAY\n");
-
- if( dwFlags & DDSD_HEIGHT )
- strcat( pszFlags, "DDSD_HEIGHT\n");
-
- if( dwFlags & DDSD_LINEARSIZE )
- strcat( pszFlags, "DDSD_LINEARSIZE\n");
-
- if( dwFlags & DDSD_LPSURFACE )
- strcat( pszFlags, "DDSD_LPSURFACE\n");
-
- if( dwFlags & DDSD_MIPMAPCOUNT )
- strcat( pszFlags, "DDSD_MIPMAPCOUNT\n");
-
- if( dwFlags & DDSD_PITCH )
- strcat( pszFlags, "DDSD_PITCH\n");
-
- if( dwFlags & DDSD_PIXELFORMAT )
- strcat( pszFlags, "DDSD_PIXELFORMAT\n");
-
- if( dwFlags & DDSD_REFRESHRATE )
- strcat( pszFlags, "DDSD_REFRESHRATE\n");
-
- if( dwFlags & DDSD_TEXTURESTAGE )
- strcat( pszFlags, "DDSD_TEXTURESTAGE\n");
-
- if( dwFlags & DDSD_WIDTH )
- strcat( pszFlags, "DDSD_WIDTH\n");
-
- strcat(pszFlags, "\n");
- }
-
-
- void PixelFormatHelper( DWORD dwFlags, char * pszFlags)
- {
- if( !pszFlags )
- {
- return;
- }
-
- strcpy( pszFlags, " dwFlags: ");
-
- if( dwFlags & DDPF_ALPHA )
- strcat( pszFlags, "DDPF_ALPHA, ");
-
- if( dwFlags & DDPF_ALPHAPIXELS )
- strcat( pszFlags, "DDPF_ALPHAPIXELS, ");
-
- if( dwFlags & DDPF_ALPHAPREMULT )
- strcat( pszFlags, "DDPF_ALPHAPREMULT, ");
-
- if( dwFlags & DDPF_BUMPLUMINANCE )
- strcat( pszFlags, "DDPF_BUMPLUMINANCE, ");
-
- if( dwFlags & DDPF_BUMPDUDV )
- strcat( pszFlags, "DDPF_BUMPDUDV, ");
-
- if( dwFlags & DDPF_COMPRESSED )
- strcat( pszFlags, "DDPF_COMPRESSED, ");
-
- if( dwFlags & DDPF_FOURCC )
- strcat( pszFlags, "DDPF_FOURCC, ");
-
- if( dwFlags & DDPF_LUMINANCE )
- strcat( pszFlags, "DDPF_LUMINANCE, ");
-
- if( dwFlags & DDPF_PALETTEINDEXED1 )
- strcat( pszFlags, "DDPF_PALETTEINDEXED1, ");
-
- if( dwFlags & DDPF_PALETTEINDEXED2 )
- strcat( pszFlags, "DDPF_PALETTEINDEXED2, ");
-
- if( dwFlags & DDPF_PALETTEINDEXED4 )
- strcat( pszFlags, "DDPF_PALETTEINDEXED4, ");
-
- if( dwFlags & DDPF_PALETTEINDEXED8 )
- strcat( pszFlags, "DDPF_PALETTEINDEXED8, ");
-
- if( dwFlags & DDPF_PALETTEINDEXEDTO8 )
- strcat( pszFlags, "DDPF_PALETTEINDEXEDTO8, ");
-
- if( dwFlags & DDPF_RGB )
- strcat( pszFlags, "DDPF_RGB, ");
-
- if( dwFlags & DDPF_RGBTOYUV )
- strcat( pszFlags, "DDPF_RGBTOYUV, ");
-
- if( dwFlags & DDPF_STENCILBUFFER )
- strcat( pszFlags, "DDPF_STENCILBUFFER, ");
-
- if( dwFlags & DDPF_YUV )
- strcat( pszFlags, "DDPF_YUV, ");
-
- if( dwFlags & DDPF_ZBUFFER )
- strcat( pszFlags, "DDPF_ZBUFFER, ");
-
- if( dwFlags & DDPF_ZPIXELS )
- strcat( pszFlags, "DDPF_ZPIXELS, ");
-
- strcat( pszFlags, "\n");
- }
-
-
- /*****************************Private*Routine******************************\
- * VerifyVMR
- *
- \**************************************************************************/
- BOOL VerifyVMR(void)
- {
- HRESULT hres;
-
- CoInitialize(NULL);
-
- // Verify that the VMR exists on this system
- IBaseFilter* pBF = NULL;
- hres = CoCreateInstance(CLSID_VideoMixingRenderer,
- NULL,
- CLSCTX_INPROC,
- IID_IBaseFilter,
- (LPVOID *)&pBF);
- if(SUCCEEDED(hres))
- {
- pBF->Release();
- CoUninitialize();
- return TRUE;
- }
- else
- {
- MessageBox(hwndApp,
- TEXT("This application requires the Video Mixing Renderer, which is present\r\n")
- TEXT("only on Windows XP.\r\n\r\n")
- TEXT("The Video Mixing Renderer (VMR) is also not enabled when viewing a \r\n")
- TEXT("remote Windows XP machine through a Remote Desktop session.\r\n")
- TEXT("You can run VMR-enabled applications only on your local machine.")
- TEXT("\r\n\r\nThis sample will now exit."),
- TEXT("Video Mixing Renderer capabilities are required"), MB_OK);
-
- CoUninitialize();
- return FALSE;
- }
- }
-