Initial commit: ROW Client source code

Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -0,0 +1,257 @@
//------------------------------------------------------------------------------
// File: SampGrabCB.cpp
//
// Desc: DirectShow sample code - C++ console application demonstrating
// use of the IMediaDet interface to create a graph that contains a
// sample grabber filter. It shows how to use the sample grabber
// and a COM object callback to display information about media
// samples in a running video file.
//
// Copyright (c) 1998-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "stdafx.h"
// Function prototypes
//
int GrabSamples( char * pFilename );
#ifdef UNICODE
#error This sample will not compile UNICODE.
#endif
// This semi-COM object is a callback COM object for the sample grabber
//
class CFakeCallback : public ISampleGrabberCB
{
public:
STDMETHODIMP_(ULONG) AddRef() { return 2; }
STDMETHODIMP_(ULONG) Release() { return 1; }
STDMETHODIMP QueryInterface(REFIID riid, void ** ppv)
{
if (riid == IID_ISampleGrabberCB || riid == IID_IUnknown)
{
*ppv = (void *) static_cast<ISampleGrabberCB *>(this);
return NOERROR;
}
return E_NOINTERFACE;
}
STDMETHODIMP SampleCB( double SampleTime, IMediaSample * pSample )
{
static long counter = 0;
printf( "Sample received = %05ld Clock = %ld\r\n",
counter++, timeGetTime( ) );
return 0;
}
STDMETHODIMP BufferCB( double SampleTime, BYTE * pBuffer, long BufferLen )
{
return 0;
}
};
int main(int argc, char* argv[])
{
if( argc != 2 )
{
printf( "Usage: SampGrabCB <filename>\r\n\r\n" );
printf( "This application reads a media file and receives callbacks for every\r\n"
"media sample processed. You must provide a valid filename.\r\n");
return -1;
}
// Initialize COM
CoInitialize( NULL );
// Run the test on the filename specified on the command line
GrabSamples( argv[1] );
// COM cleanup
CoUninitialize( );
return 0;
}
int GrabSamples( char * pFilename )
{
USES_CONVERSION;
CFakeCallback pCallback;
HRESULT hr;
printf("Grabbing samples from %s.\r\n", pFilename);
// create a media detector
//
CComPtr< IMediaDet > pDet;
hr = CoCreateInstance( CLSID_MediaDet, NULL, CLSCTX_INPROC_SERVER,
IID_IMediaDet, (void**) &pDet );
if( FAILED( hr ) )
{
printf( "Failed in CoCreateInstance! hr=0x%x\r\n", hr );
return hr;
}
// set filename
//
hr = pDet->put_Filename( T2W( pFilename ) );
if( FAILED( hr ) )
{
printf( "couldn't load the file! hr=0x%x\r\n", hr );
return hr;
}
// look for a video stream
//
long Streams = 0;
hr = pDet->get_OutputStreams( &Streams );
if( FAILED( hr ) )
{
printf( "couldn't get the output streams! hr=0x%x\r\n", hr );
return hr;
}
BOOL bFoundVideo = FALSE;
for( int i = 0 ; i < Streams ; i++ )
{
BOOL bIsVideo = FALSE;
AM_MEDIA_TYPE Type;
memset( &Type, 0, sizeof( Type ) );
// Select a media stream
hr = pDet->put_CurrentStream( i );
if( FAILED( hr ) )
{
printf( "couldn't put stream %d hr=0x%x\r\n", i, hr );
return hr;
}
// Read the media type of the selected stream
hr = pDet->get_StreamMediaType( &Type );
if( FAILED( hr ) )
{
printf( "couldn't get stream media type for stream %d hr=0x%x\r\n",
i, hr );
return hr;
}
// Does this stream contain video?
if( Type.majortype == MEDIATYPE_Video )
bIsVideo = TRUE;
FreeMediaType( Type );
if( !bIsVideo )
continue;
// Found a video stream
bFoundVideo = TRUE;
break;
}
if( !bFoundVideo )
{
printf( "Couldn't find a video stream\r\n" );
return 0;
}
// this method will change the MediaDet to go into
// "sample grabbing mode" at time 0.
//
hr = pDet->EnterBitmapGrabMode( 0.0 );
if( FAILED( hr ) )
{
printf( "Failed in EnterBitmapGrabMode! hr=0x%x\r\n", hr );
return hr;
}
// ask for the sample grabber filter that we know lives inside the
// graph made by the MediaDet
//
CComPtr< ISampleGrabber > pGrabber;
hr = pDet->GetSampleGrabber( &pGrabber );
if( FAILED(hr) || !pGrabber)
{
printf( "couldn't find the sample grabber filter! hr=0x%x\r\n", hr );
return hr;
}
// set the callback (our COM object callback)
//
CComQIPtr< ISampleGrabberCB, &IID_ISampleGrabberCB > pCB( &pCallback );
CComQIPtr< IBaseFilter, &IID_IBaseFilter > pFilter( pGrabber );
hr = pGrabber->SetCallback( pCB, 0 );
hr = pGrabber->SetOneShot( FALSE ); // don't do one-shot mode
hr = pGrabber->SetBufferSamples( FALSE ); // don't buffer samples
// find the filter graph interface from the sample grabber filter
//
FILTER_INFO fi;
memset( &fi, 0, sizeof( fi ) );
hr = pFilter->QueryFilterInfo( &fi );
if( FAILED( hr ) )
{
printf( "Failed in QueryFilterInfo! hr=0x%x\r\n", hr );
return hr;
}
// Release the filter's graph reference
if( fi.pGraph )
fi.pGraph->Release( );
IFilterGraph * pGraph = fi.pGraph;
// The graph will have been paused by entering bitmap grab mode.
// We'll need to seek back to 0 to get it to deliver correctly.
//
CComQIPtr< IMediaSeeking, &IID_IMediaSeeking > pSeeking( pGraph );
REFERENCE_TIME Start = 0;
REFERENCE_TIME Duration = 0;
hr = pSeeking->GetDuration( &Duration );
if( FAILED( hr ) )
{
printf( "Failed in GetDuration! hr=0x%x\r\n", hr );
return hr;
}
hr = pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning,
&Duration, AM_SEEKING_AbsolutePositioning );
if( FAILED( hr ) )
{
printf( "Failed in SetPositions! hr=0x%x\r\n", hr );
return hr;
}
// run the graph
//
CComQIPtr< IMediaEvent, &IID_IMediaEvent > pEvent( pGraph );
CComQIPtr< IMediaControl, &IID_IMediaControl > pControl( pGraph );
hr = pControl->Run( );
if( FAILED( hr ) )
{
printf( "Failed to run the graph! hr=0x%x\r\n", hr );
return hr;
}
// wait
//
long EventCode = 0;
hr = pEvent->WaitForCompletion( INFINITE, &EventCode );
if( FAILED( hr ) )
{
printf( "Failed in WaitForCompletion! hr=0x%x\r\n", hr );
return hr;
}
printf("Sample grabbing complete.\r\n");
return 0;
}

View File

@@ -0,0 +1,117 @@
# Microsoft Developer Studio Project File - Name="SampGrabCB" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=SampGrabCB - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "SampGrabCB.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "SampGrabCB.mak" CFG="SampGrabCB - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "SampGrabCB - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "SampGrabCB - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "SampGrabCB - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RELEASE" /Yu"stdafx.h" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ..\..\BaseClasses\Release\strmbase.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcmt.lib" /stack:0x200000,0x200000
# SUBTRACT LINK32 /incremental:yes
!ELSEIF "$(CFG)" == "SampGrabCB - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "SampGrabCB___Win32_Debug"
# PROP BASE Intermediate_Dir "SampGrabCB___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /Yu"stdafx.h" /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ..\..\BaseClasses\debug\strmbasd.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /pdbtype:sept /stack:0x200000,0x200000
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "SampGrabCB - Win32 Release"
# Name "SampGrabCB - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\SampGrabCB.cpp
# End Source File
# Begin Source File
SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\StdAfx.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# Begin Source File
SOURCE=.\ReadMe.txt
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "SampGrabCB"=.\SampGrabCB.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,265 @@
# Microsoft Developer Studio Generated NMAKE File, Based on SampGrabCB.dsp
!IF "$(CFG)" == ""
CFG=SampGrabCB - Win32 Debug
!MESSAGE No configuration specified. Defaulting to SampGrabCB - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "SampGrabCB - Win32 Release" && "$(CFG)" != "SampGrabCB - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "SampGrabCB.mak" CFG="SampGrabCB - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "SampGrabCB - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "SampGrabCB - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "SampGrabCB - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\SampGrabCB.exe"
!ELSE
ALL : "BaseClasses - Win32 Release" "$(OUTDIR)\SampGrabCB.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"BaseClasses - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\SampGrabCB.obj"
-@erase "$(INTDIR)\SampGrabCB.pch"
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\SampGrabCB.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RELEASE" /Fp"$(INTDIR)\SampGrabCB.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\SampGrabCB.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\BaseClasses\Release\strmbase.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\SampGrabCB.pdb" /machine:I386 /nodefaultlib:"libcmt.lib" /out:"$(OUTDIR)\SampGrabCB.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\SampGrabCB.obj" \
"$(INTDIR)\StdAfx.obj" \
"..\..\BaseClasses\Release\STRMBASE.lib"
"$(OUTDIR)\SampGrabCB.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "SampGrabCB - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\SampGrabCB.exe"
!ELSE
ALL : "BaseClasses - Win32 Debug" "$(OUTDIR)\SampGrabCB.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"BaseClasses - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\SampGrabCB.obj"
-@erase "$(INTDIR)\SampGrabCB.pch"
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\SampGrabCB.exe"
-@erase "$(OUTDIR)\SampGrabCB.ilk"
-@erase "$(OUTDIR)\SampGrabCB.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\SampGrabCB.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\SampGrabCB.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\BaseClasses\debug\strmbasd.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\SampGrabCB.pdb" /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /out:"$(OUTDIR)\SampGrabCB.exe" /pdbtype:sept /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\SampGrabCB.obj" \
"$(INTDIR)\StdAfx.obj" \
"..\..\BaseClasses\debug\strmbasd.lib"
"$(OUTDIR)\SampGrabCB.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("SampGrabCB.dep")
!INCLUDE "SampGrabCB.dep"
!ELSE
!MESSAGE Warning: cannot find "SampGrabCB.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "SampGrabCB - Win32 Release" || "$(CFG)" == "SampGrabCB - Win32 Debug"
SOURCE=.\SampGrabCB.cpp
"$(INTDIR)\SampGrabCB.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\SampGrabCB.pch"
SOURCE=.\StdAfx.cpp
!IF "$(CFG)" == "SampGrabCB - Win32 Release"
CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RELEASE" /Fp"$(INTDIR)\SampGrabCB.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\SampGrabCB.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ELSEIF "$(CFG)" == "SampGrabCB - Win32 Debug"
CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\SampGrabCB.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\SampGrabCB.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ENDIF
!IF "$(CFG)" == "SampGrabCB - Win32 Release"
"BaseClasses - Win32 Release" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Release"
cd "..\Editing\SampGrabCB"
"BaseClasses - Win32 ReleaseCLEAN" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Release" RECURSE=1 CLEAN
cd "..\Editing\SampGrabCB"
!ELSEIF "$(CFG)" == "SampGrabCB - Win32 Debug"
"BaseClasses - Win32 Debug" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Debug"
cd "..\Editing\SampGrabCB"
"BaseClasses - Win32 DebugCLEAN" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Debug" RECURSE=1 CLEAN
cd "..\Editing\SampGrabCB"
!ENDIF
!ENDIF

View File

@@ -0,0 +1,6 @@
// stdafx.cpp : source file that includes just the standard includes
// SampGrabCB.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -0,0 +1,22 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__58396749_18C9_4174_9B5C_28454A396FA4__INCLUDED_)
#define AFX_STDAFX_H__58396749_18C9_4174_9B5C_28454A396FA4__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <stdio.h>
#include <windows.h>
#include <streams.h>
#include <qedit.h>
#include <atlbase.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__58396749_18C9_4174_9B5C_28454A396FA4__INCLUDED_)

View File

@@ -0,0 +1,26 @@
DirectShow Editing Sample - SampleGrabberCallback
-------------------------------------------------
This C++ console app demonstates the use of the IMediaDet interface
to create a graph that contains a sample grabber filter.
It shows how to use the sample grabber and a COM object callback
to display information about media samples in a running video file.
Usage: SampGrabCB <media filename>
Sample output:
Grabbing samples from c:\video\wink.mpg.
Sample received = 00000 Clock = 170787198
Sample received = 00001 Clock = 170787208
Sample received = 00002 Clock = 170787228
Sample received = 00003 Clock = 170787235
Sample received = 00004 Clock = 170787239
Sample received = 00005 Clock = 170787244
Sample received = 00006 Clock = 170787250
Sample received = 00007 Clock = 170787254
Sample received = 00008 Clock = 170787260
Sample received = 00009 Clock = 170787268
Sample received = 00010 Clock = 170787272
Sample grabbing complete.

View File

@@ -0,0 +1,33 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by StillCap.rc
//
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_STILLCAP_DIALOG 102
#define IDR_MAINFRAME 128
#define IDC_CAPDIR 1000
#define IDC_CAPOBJ 1001
#define IDC_SNAP 1002
#define IDC_PREVIEW 1003
#define IDC_STILL 1004
#define IDC_SNAPNAME 1005
#define IDC_CAPSTILLS 1006
#define IDC_CAPVID 1007
#define IDC_AUTOBUMP 1008
#define IDC_BUTTON_RESET 1009
#define IDC_PLAYSOUND 1010
#define IDC_STATUS 1011
#define IDC_BUTTON_VIEWSTILL 1012
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32772
#define _APS_NEXT_CONTROL_VALUE 1013
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// StillCap.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -0,0 +1,30 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__082C4D42_9834_4A47_AD6E_7C9BD8502B54__INCLUDED_)
#define AFX_STDAFX_H__082C4D42_9834_4A47_AD6E_7C9BD8502B54__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <atlbase.h>
#include <streams.h>
#include <qedit.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__082C4D42_9834_4A47_AD6E_7C9BD8502B54__INCLUDED_)

View File

@@ -0,0 +1,87 @@
//------------------------------------------------------------------------------
// File: StillCap.cpp
//
// Desc: DirectShow sample code - C++ application that uses the
// ISampleGrabber interface to capture still images to a .bmp
// file on disk from a live capture stream. It demonstrates
// how to get the bits back from it in real time via a callback.
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "stdafx.h"
#include "StillCap.h"
#include "StillCapDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStillCapApp
BEGIN_MESSAGE_MAP(CStillCapApp, CWinApp)
//{{AFX_MSG_MAP(CStillCapApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStillCapApp construction
CStillCapApp::CStillCapApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CStillCapApp object
CStillCapApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CStillCapApp initialization
BOOL CStillCapApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
// In MFC 5.0, Enable3dControls and Enable3dControlsStatic are obsolete because
// their functionality is incorporated into Microsoft's 32-bit operating systems.
#if (_MSC_VER <= 1200)
Enable3dControls(); // Call this when using MFC in a shared DLL
#endif
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CStillCapDlg dlg;
m_pMainWnd = &dlg;
int nResponse = (int) dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

View File

@@ -0,0 +1,146 @@
# Microsoft Developer Studio Project File - Name="StillCap" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=StillCap - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "StillCap.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "StillCap.mak" CFG="StillCap - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "StillCap - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "StillCap - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "StillCap - Win32 Release"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "RELEASE" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 ..\..\baseclasses\release\strmbase.lib winmm.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libcmt" /nodefaultlib:"olepro32" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "StillCap - Win32 Debug"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "DEBUG" /Yu"stdafx.h" /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ..\..\baseclasses\debug\strmbasd.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /stack:0x200000,0x200000
# SUBTRACT LINK32 /profile /nodefaultlib
!ENDIF
# Begin Target
# Name "StillCap - Win32 Release"
# Name "StillCap - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File
SOURCE=.\StillCap.cpp
# End Source File
# Begin Source File
SOURCE=.\StillCap.rc
# End Source File
# Begin Source File
SOURCE=.\StillCapDlg.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\Resource.h
# End Source File
# Begin Source File
SOURCE=.\StdAfx.h
# End Source File
# Begin Source File
SOURCE=.\StillCap.h
# End Source File
# Begin Source File
SOURCE=.\StillCapDlg.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\res\StillCap.ico
# End Source File
# Begin Source File
SOURCE=.\res\StillCap.rc2
# End Source File
# End Group
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "StillCap"=.\StillCap.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,55 @@
//------------------------------------------------------------------------------
// File: StillCap.h
//
// Desc: DirectShow sample code - header file for Still Cap application.
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#if !defined(AFX_STILLCAP_H__11EB4C7D_3284_45E8_A222_3E5EA81FC840__INCLUDED_)
#define AFX_STILLCAP_H__11EB4C7D_3284_45E8_A222_3E5EA81FC840__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CStillCapApp:
// See StillCap.cpp for the implementation of this class
//
class CStillCapApp : public CWinApp
{
public:
CStillCapApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CStillCapApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CStillCapApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STILLCAP_H__11EB4C7D_3284_45E8_A222_3E5EA81FC840__INCLUDED_)

View File

@@ -0,0 +1,290 @@
# Microsoft Developer Studio Generated NMAKE File, Based on StillCap.dsp
!IF "$(CFG)" == ""
CFG=StillCap - Win32 Debug
!MESSAGE No configuration specified. Defaulting to StillCap - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "StillCap - Win32 Release" && "$(CFG)" != "StillCap - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "StillCap.mak" CFG="StillCap - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "StillCap - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "StillCap - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "StillCap - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\StillCap.exe"
!ELSE
ALL : "BaseClasses - Win32 Release" "$(OUTDIR)\StillCap.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"BaseClasses - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\StillCap.obj"
-@erase "$(INTDIR)\StillCap.pch"
-@erase "$(INTDIR)\StillCap.res"
-@erase "$(INTDIR)\StillCapDlg.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\StillCap.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "RELEASE" /D "_AFXDLL" /Fp"$(INTDIR)\StillCap.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\StillCap.res" /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\StillCap.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\baseclasses\release\strmbase.lib winmm.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\StillCap.pdb" /machine:I386 /nodefaultlib:"libcmt" /nodefaultlib:"olepro32" /out:"$(OUTDIR)\StillCap.exe" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\StillCap.obj" \
"$(INTDIR)\StillCapDlg.obj" \
"$(INTDIR)\StillCap.res" \
"..\..\BaseClasses\Release\STRMBASE.lib"
"$(OUTDIR)\StillCap.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "StillCap - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
ALL : "$(OUTDIR)\StillCap.exe"
!ELSE
ALL : "BaseClasses - Win32 Debug" "$(OUTDIR)\StillCap.exe"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"BaseClasses - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\StillCap.obj"
-@erase "$(INTDIR)\StillCap.pch"
-@erase "$(INTDIR)\StillCap.res"
-@erase "$(INTDIR)\StillCapDlg.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\StillCap.exe"
-@erase "$(OUTDIR)\StillCap.ilk"
-@erase "$(OUTDIR)\StillCap.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\StillCap.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\StillCap.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\StillCap.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\baseclasses\debug\strmbasd.lib winmm.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\StillCap.pdb" /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /out:"$(OUTDIR)\StillCap.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\StillCap.obj" \
"$(INTDIR)\StillCapDlg.obj" \
"$(INTDIR)\StillCap.res" \
"..\..\BaseClasses\debug\strmbasd.lib"
"$(OUTDIR)\StillCap.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("StillCap.dep")
!INCLUDE "StillCap.dep"
!ELSE
!MESSAGE Warning: cannot find "StillCap.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "StillCap - Win32 Release" || "$(CFG)" == "StillCap - Win32 Debug"
SOURCE=.\StdAfx.cpp
!IF "$(CFG)" == "StillCap - Win32 Release"
CPP_SWITCHES=/nologo /MD /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "RELEASE" /D "_AFXDLL" /Fp"$(INTDIR)\StillCap.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\StillCap.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ELSEIF "$(CFG)" == "StillCap - Win32 Debug"
CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\StillCap.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\StillCap.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ENDIF
SOURCE=.\StillCap.cpp
"$(INTDIR)\StillCap.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\StillCap.pch"
SOURCE=.\StillCap.rc
"$(INTDIR)\StillCap.res" : $(SOURCE) "$(INTDIR)"
$(RSC) $(RSC_PROJ) $(SOURCE)
SOURCE=.\StillCapDlg.cpp
"$(INTDIR)\StillCapDlg.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\StillCap.pch"
!IF "$(CFG)" == "StillCap - Win32 Release"
"BaseClasses - Win32 Release" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Release"
cd "..\Editing\StillCap"
"BaseClasses - Win32 ReleaseCLEAN" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Release" RECURSE=1 CLEAN
cd "..\Editing\StillCap"
!ELSEIF "$(CFG)" == "StillCap - Win32 Debug"
"BaseClasses - Win32 Debug" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Debug"
cd "..\Editing\StillCap"
"BaseClasses - Win32 DebugCLEAN" :
cd "\ntdev\multimedia\DirectX\dxsdk\samples\multimedia\dshow\BaseClasses"
$(MAKE) /$(MAKEFLAGS) /F .\baseclasses.mak CFG="BaseClasses - Win32 Debug" RECURSE=1 CLEAN
cd "..\Editing\StillCap"
!ENDIF
!ENDIF

View File

@@ -0,0 +1,235 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\StillCap.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "res\\StillCap.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 73
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About SysEnum"
FONT 8, "MS Shell Dlg"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,21,20
LTEXT "StillCap Version 8.1",IDC_STATIC,40,10,119,8,SS_NOPREFIX
LTEXT "Copyright (c) 2000-2001 Microsoft Corporation",IDC_STATIC,40,
25,188,8
DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP
LTEXT "This sample demonstrates capturing still images and video from a video camera.",
IDC_STATIC,42,39,186,27
END
IDD_STILLCAP_DIALOG DIALOGEX 0, 0, 274, 236
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "StillCap+ Sample"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Sti&ll Capture (Bitmap)",IDC_CAPSTILLS,"Button",
BS_AUTORADIOBUTTON | WS_TABSTOP,145,19,103,11
CONTROL "&Video Capture",IDC_CAPVID,"Button",BS_AUTORADIOBUTTON,
145,32,83,11
LTEXT "(capture starts automatically)",IDC_STATIC,155,44,92,10
EDITTEXT IDC_CAPDIR,69,170,197,12,ES_AUTOHSCROLL
LTEXT "",IDC_SNAPNAME,69,186,120,12,SS_SUNKEN | WS_BORDER
CONTROL "&Increment filename after each capture?",IDC_AUTOBUMP,
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,
205,139,9
DEFPUSHBUTTON "&Snap Still",IDC_SNAP,202,208,65,17
CTEXT "Capture Device Selected:",IDC_STATIC,14,12,108,8
CTEXT "<None>",IDC_CAPOBJ,14,22,108,8
GROUPBOX "Capture Type",IDC_STATIC,139,7,118,50
CTEXT "Live Video Preview",IDC_STATIC,7,61,120,10
CONTROL "",IDC_PREVIEW,"Static",SS_BLACKRECT,7,73,120,90
CTEXT "Captured Video / Bitmap",IDC_STATIC,137,61,120,10
CONTROL "",IDC_STILL,"Static",SS_BLACKRECT,137,73,120,90
LTEXT "Capture Directory:",IDC_STATIC,7,172,59,8
LTEXT "Last Captured File:",IDC_STATIC,7,187,60,9
PUSHBUTTON "&Reset Counter",IDC_BUTTON_RESET,202,185,65,14
CONTROL "&Play sound after capturing still?",IDC_PLAYSOUND,
"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,
217,139,9
CTEXT "Status:",IDC_STATIC,14,35,108,8
CTEXT "<No capture hardware>",IDC_STATUS,14,45,108,8
GROUPBOX "",IDC_STATIC,7,7,120,50
PUSHBUTTON "&View Still",IDC_BUTTON_VIEWSTILL,148,208,50,17,
WS_DISABLED
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 8,1,0,0
PRODUCTVERSION 8,1,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "Comments", "DirectShow Sample\0"
VALUE "CompanyName", "Microsoft\0"
VALUE "FileDescription", "StillCap MFC Application\0"
VALUE "FileVersion", "8.10\0"
VALUE "InternalName", "StillCap\0"
VALUE "LegalCopyright", "Copyright (c) 2000-2001 Microsoft Corporation\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "StillCap.EXE\0"
VALUE "ProductName", "DirectX 8 SDK\0"
VALUE "ProductVersion", "8.1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 66
END
IDD_STILLCAP_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 267
TOPMARGIN, 7
BOTTOMMARGIN, 229
END
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUTBOX "&About StillCap..."
END
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\StillCap.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,99 @@
//------------------------------------------------------------------------------
// File: StillCapDlg.h
//
// Desc: DirectShow sample code - definition of callback and dialog
// classes for StillCap application.
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#if !defined(AFX_STILLCAPDLG_H__3067E9D2_B94C_4ED1_99AB_53034129A0DD__INCLUDED_)
#define AFX_STILLCAPDLG_H__3067E9D2_B94C_4ED1_99AB_53034129A0DD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CStillCapDlg dialog
class CSampleGrabberCB;
class CStillCapDlg : public CDialog
{
friend class CSampleGrabberCB;
protected:
// either the capture live graph, or the capture still graph
CComPtr< IGraphBuilder > m_pGraph;
// the playback graph when capturing video
CComPtr< IGraphBuilder > m_pPlayGraph;
// the sample grabber for grabbing stills
CComPtr< ISampleGrabber > m_pGrabber;
// if you're in still mode or capturing video mode
bool m_bCapStills;
// when in video mode, whether capturing or playing back
int m_nCapState;
// how many times you've captured
int m_nCapTimes;
void GetDefaultCapDevice( IBaseFilter ** ppCap );
HRESULT InitStillGraph( );
HRESULT InitCaptureGraph( TCHAR * pFilename );
HRESULT InitPlaybackGraph( TCHAR * pFilename );
void ClearGraphs( );
void UpdateStatus(TCHAR *szStatus);
void Error( TCHAR * pText );
// Construction
public:
CStillCapDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CStillCapDlg)
enum { IDD = IDD_STILLCAP_DIALOG };
CStatic m_StrStatus;
CStatic m_StillScreen;
CStatic m_PreviewScreen;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CStillCapDlg)
public:
virtual BOOL DestroyWindow();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CStillCapDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSnap();
afx_msg void OnCapstills();
afx_msg void OnCapvid();
afx_msg void OnButtonReset();
afx_msg void OnButtonViewstill();
afx_msg void OnClose();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STILLCAPDLG_H__3067E9D2_B94C_4ED1_99AB_53034129A0DD__INCLUDED_)

View File

@@ -0,0 +1,32 @@
DirectShow Editing Sample - Still Frame Capture
------------------------------------------------
This C++ app uses the ISampleGrabber interface to capture still images
to a .bmp file on disk from a live capture stream. It demonstrates
how to put the sample grabber into the graph, and how to get the
bits back from it in real time via the callback.
StillCap starts in preview mode, displaying input from the system's
default video capture device. Normally, this will be an attached video
camera, like a USB WebCam. When you click the "Snap Still" button,
a bitmap will be captured and written to disk at the location specified
in the Capture Directory field. If you enable the "Increment filename"
option, then a new file will be written each time with a new name.
Otherwise, the same filename will be used for each captured bitmap.
You may also capture video files to disk if you select Video Capture
on the Capture Type group box. Note that video capture will start
automatically when you select this option. Click "Start Playback"
to end the capture session. The recorded file will automatically
be played back to the screen.
NOTE: For simplicity, this sample uses RGB24 format for capturing data
and writing bitmaps. If your video driver is at 16-bit depth, you may
notice flicker when running this application. To resolve this problem,
set your display's bit depth to 24-bit or 32-bit with the Display Properties
control panel application.
NOTE: This application is designed for use with video cameras and does
not support TV tuners or devices which use the DirectShow Video Port.
If you need this functionality, you must use the ICaptureGraphBuilder2
interface to properly build the filter graph in InitStillGraph().

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,13 @@
//
// STILLCAP.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////

View File

@@ -0,0 +1,5 @@
// stdafx.cpp : source file that includes just the standard includes
// TestTldb.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -0,0 +1,18 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <windows.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)

View File

@@ -0,0 +1,12 @@
DirectShow Sample -- TimelineTest
---------------------------------
This sample application builds a timeline with a transition. It demonstrates
the following tasks in Microsoft DirectShow Editing Services:
- Creating a timeline.
- Adding tracks, sources, transitions, and effects to the timeline.
- Creating a SMPTE wipe transition.
- Creating an audio crossfade using the Volume Envelope effect.
- Setting properties on timeline objects.
- Modifying a timeline and rendering the filter graph again.

View File

@@ -0,0 +1,815 @@
//------------------------------------------------------------------------------
// File: TimelineTest.cpp
//
// Desc: DirectShow sample code - creates two video tracks, using a
// transition from the A track to the B track, and then back again.
// It demonstrates how to add a transition to the timeline using a
// CLSID.
//
// Copyright (c) 1998-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//----------------------------------------------------------------------------
// This example creates 2 (video) tracks with a transition from the A track to
// the B track and then from B back to A. It also crossfades two audio tracks
// from A to B. This sample also demonstrates how to add a transition by CLSID
// to the timeline and how to vary volume envelope properties by the
// property setter.
//
// Note: Error checking is handled mostly with ASSERTs in order to keep
// the sample as uncluttered as possible. In some cases where several
// related function calls are made together, the HRESULT value returned from
// the functions will be bitwise OR'ed with other HRESULT values. This value
// will eventually be tested for failure using the FAILED macro.
//----------------------------------------------------------------------------
#include "stdafx.h"
#include <streams.h>
#include <atlbase.h>
#include <qedit.h>
#include <dxutil.h>
#ifdef STRICT
#undef STRICT
#endif
#include <dxutil.cpp>
//
// Conditional compilation flags to enable/disable effects
//
//#define CUTS_ONLY
// define this to show an example of calling ConnectFrontEnd( )
// a second time on the render engine and having it rerender
// the graph
#define DO_RECONNECT
// define this to do an audio crossfade
#define DO_CROSSFADE
// define this to only render a portion of the full timeline
#define DO_RENDERRANGE
// define this to enable transitions
#define DO_TRANSITION
//
// Global data
//
// Use bitmaps and audio files known to install with the DirectX 8 SDK
WCHAR * wszVideo1Name = L"dx5_logo.bmp";
WCHAR * wszVideo2Name = L"env3.bmp";
WCHAR * wszAudio1Name = L"track2.mp3";
WCHAR * wszAudio2Name = L"track3.mp3";
WCHAR * wszTitle = L"Timeline Test Sample";
//
// Function prototypes
//
int TimelineTest( );
void Err(TCHAR *szErr);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// init the ole32 libraries
//
CoInitialize( NULL );
//
// NOTE: There is no user interaction with this sample.
// It will run to completion and exit.
//
TimelineTest();
CoUninitialize( );
return 0;
}
void Err(TCHAR *szErr)
{
MessageBox(NULL, szErr, TEXT("Error"), MB_ICONEXCLAMATION);
}
int TimelineTest( )
{
USES_CONVERSION;
HRESULT hr;
// use the ATL libraries to do automatic reference counting on pointers
//
CComPtr< IRenderEngine > pRenderEngine;
CComPtr< IGraphBuilder > pGraph;
CComPtr< IVideoWindow > pVidWindow;
CComPtr< IMediaEvent > pEvent;
CComPtr< IAMTimeline > pTimeline;
CComPtr< IAMTimelineObj > pVideoGroupObj;
CComPtr< IAMTimelineObj > pAudioGroupObj;
CComPtr< IMediaControl > pControl;
CComPtr< IMediaSeeking > pSeeking;
//--------------------------------------------
// make the timeline
//--------------------------------------------
hr = CoCreateInstance(
CLSID_AMTimeline,
NULL,
CLSCTX_INPROC_SERVER,
IID_IAMTimeline,
(void**) &pTimeline
);
if(FAILED( hr )) {
Err(_T("Could not create timeline"));
return hr;
}
//--------------------------------------------
// make the root group/composition
//--------------------------------------------
hr = pTimeline->CreateEmptyNode( &pVideoGroupObj, TIMELINE_MAJOR_TYPE_GROUP );
if(FAILED( hr ))
{
Err(_T("Could not create empty node"));
return hr;
}
CComQIPtr< IAMTimelineGroup, &IID_IAMTimelineGroup > pVideoGroup( pVideoGroupObj );
CMediaType VideoGroupType;
// all we set is the major type. The group will automatically use other defaults
VideoGroupType.SetType( &MEDIATYPE_Video );
hr = pVideoGroup->SetMediaType( &VideoGroupType );
if(FAILED( hr ))
{
Err(_T("Could not set media type"));
return hr;
}
//--------------------------------------------
// add the group to the timeline
//--------------------------------------------
hr = pTimeline->AddGroup( pVideoGroupObj );
if(FAILED( hr ))
{
Err(_T("Could not add video group"));
return hr;
}
//--------------------------------------------
// make a track
//--------------------------------------------
CComPtr< IAMTimelineObj > pTrack1Obj;
hr = pTimeline->CreateEmptyNode( &pTrack1Obj, TIMELINE_MAJOR_TYPE_TRACK );
if(FAILED( hr ))
{
Err(_T("Could not create empty track"));
return hr;
}
//--------------------------------------------
// tell the composition about the track
//--------------------------------------------
CComQIPtr< IAMTimelineComp, &IID_IAMTimelineComp > pRootComp( pVideoGroupObj );
hr = pRootComp->VTrackInsBefore( pTrack1Obj, -1 );
if(FAILED( hr ))
{
Err(_T("Could not insert track"));
return hr;
}
//--------------------------------------------
// create a source from 0 to 8 seconds
//--------------------------------------------
REFERENCE_TIME TLStart = 0 * UNITS;
REFERENCE_TIME TLStop = 8 * UNITS;
// you can set these if you want to other numbers, and the video will
// speed up or slow down if the duration isn't the same as the timeline's.
REFERENCE_TIME MediaStart = 0 * UNITS;
REFERENCE_TIME MediaStop = 8 * UNITS;
WCHAR pClipname[256];
TCHAR * tBasePath = (TCHAR *) DXUtil_GetDXSDKMediaPath( );
wcscpy( pClipname, T2W( tBasePath ) );
wcscat( pClipname, L"\\" );
wcscat( pClipname, wszVideo1Name );
// create the timeline source
//
CComPtr<IAMTimelineObj> pSource1Obj;
hr = pTimeline->CreateEmptyNode( &pSource1Obj, TIMELINE_MAJOR_TYPE_SOURCE );
if(FAILED( hr ))
{
Err(_T("Could not create the timeline source"));
return hr;
}
// set up source right
//
hr = pSource1Obj->SetStartStop( TLStart, TLStop );
CComQIPtr< IAMTimelineSrc, &IID_IAMTimelineSrc > pSource1Src( pSource1Obj );
hr |= pSource1Src->SetMediaTimes( MediaStart, MediaStop );
hr |= pSource1Src->SetMediaName( pClipname );
if(FAILED( hr ))
{
Err(_T("Could not configure media source"));
return E_FAIL;
}
//--------------------------------------------
// tell the track about the source
//--------------------------------------------
CComQIPtr< IAMTimelineTrack, &IID_IAMTimelineTrack > pTrack1( pTrack1Obj );
hr = pTrack1->SrcAdd( pSource1Obj );
if(FAILED( hr ))
{
Err(_T("Could not add source to track"));
return hr;
}
//--------------------------------------------
// make another track
//--------------------------------------------
CComPtr< IAMTimelineObj > pTrack2Obj;
hr = pTimeline->CreateEmptyNode( &pTrack2Obj, TIMELINE_MAJOR_TYPE_TRACK );
if(FAILED( hr ))
{
Err(_T("Could not create second track"));
return hr;
}
//--------------------------------------------
// tell the composition about the track
//--------------------------------------------
hr = pRootComp->VTrackInsBefore( pTrack2Obj, -1 );
if(FAILED( hr ))
{
Err(_T("Could not insert second track"));
return hr;
}
//--------------------------------------------
// create a source for the 2nd track
//--------------------------------------------
TLStart = 0 * UNITS;
TLStop = 8 * UNITS;
MediaStart = 0 * UNITS;
MediaStop = 8 * UNITS;
wcscpy( pClipname, T2W( tBasePath ) );
wcscat( pClipname, L"\\" );
wcscat( pClipname, wszVideo2Name );
// create the timeline source
//
CComPtr<IAMTimelineObj> pSource2Obj;
hr = pTimeline->CreateEmptyNode( &pSource2Obj, TIMELINE_MAJOR_TYPE_SOURCE );
if(FAILED( hr ))
{
Err(_T("Could not create the second timeline source"));
return hr;
}
// set up source right
//
hr = pSource2Obj->SetStartStop( TLStart, TLStop );
CComQIPtr< IAMTimelineSrc, &IID_IAMTimelineSrc > pSource2Src( pSource2Obj );
hr |= pSource2Src->SetMediaTimes( MediaStart, MediaStop );
hr |= pSource2Src->SetMediaName( pClipname );
if(FAILED( hr ))
{
Err(_T("Could not configure second media source"));
return E_FAIL;
}
//--------------------------------------------
// tell the track about the source
//--------------------------------------------
CComQIPtr< IAMTimelineTrack, &IID_IAMTimelineTrack > pTrack2( pTrack2Obj );
hr = pTrack2->SrcAdd( pSource2Obj );
if(FAILED( hr ))
{
Err(_T("Could not add second track"));
return hr;
}
CComQIPtr< IAMTimelineTransable, &IID_IAMTimelineTransable > pTransable( pTrack2 );
#ifdef DO_TRANSITION
//---------------------------------------------
// create an transition on the track from A 2 B
//---------------------------------------------
REFERENCE_TIME TransStart = 0 * UNITS;
REFERENCE_TIME TransStop = 4 * UNITS;
// create the timeline effect
//
CComPtr<IAMTimelineObj> pTrackTransObj;
hr = pTimeline->CreateEmptyNode(
&pTrackTransObj,
TIMELINE_MAJOR_TYPE_TRANSITION );
if(FAILED( hr ))
{
Err(_T("Could not create transition effect"));
return hr;
}
//--------------------------------------------
// set up filter right
//--------------------------------------------
// we set the CLSID of the DXT to use instead of a pointer to the
// actual object. We let the DXT have it's default properties.
//
hr = pTrackTransObj->SetSubObjectGUID( CLSID_DxtJpeg );
hr |= pTrackTransObj->SetStartStop( TransStart, TransStop );
CComQIPtr< IAMTimelineTrans, &IID_IAMTimelineTrans > pTrackTrans( pTrackTransObj );
hr |= pTransable->TransAdd( pTrackTransObj );
if(FAILED( hr ))
{
Err(_T("Could not configure transition object"));
return E_FAIL;
}
#ifdef CUTS_ONLY
//---------------------------------------------
// turn the transition into a cut by doing this
//---------------------------------------------
hr = pTrackTrans->SetCutsOnly( TRUE );
if(FAILED( hr ))
{
Err(_T("Could not SetCutsOnly to TRUE"));
return hr;
}
#endif // CUTS_ONLY
//---------------------------------------------
// create an transition on the track from B 2 A
//---------------------------------------------
TransStart = 4 * UNITS;
TransStop = 8 * UNITS;
// create the timeline effect
//
pTrackTransObj.Release( );
hr = pTimeline->CreateEmptyNode(
&pTrackTransObj,
TIMELINE_MAJOR_TYPE_TRANSITION );
ASSERT( !FAILED( hr ) );
// set up filter right
//
hr = pTrackTransObj->SetSubObjectGUID( CLSID_DxtJpeg );
hr |= pTrackTransObj->SetStartStop( TransStart, TransStop );
pTrackTrans = pTrackTransObj;
hr |= pTrackTrans->SetSwapInputs( TRUE );
hr |= pTransable->TransAdd( pTrackTransObj );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// set a property on the transition
//--------------------------------------------
CComPtr< IPropertySetter > pTransSetter;
pTransSetter.CoCreateInstance( CLSID_PropertySetter );
DEXTER_PARAM Param;
CComBSTR ParamName( "MaskNum" ); // the property name
Param.Name = ParamName;
Param.nValues = 1; // how many values we want to set
DEXTER_VALUE Value;
memset( &Value, 0, sizeof( Value ) );
VariantClear( &Value.v );
V_I4( &Value.v ) = 128; // mask number 128
V_VT( &Value.v ) = VT_I4; // integer
hr = pTransSetter->AddProp( Param, &Value );
hr |= pTrackTransObj->SetPropertySetter( pTransSetter );
ASSERT( !FAILED( hr ) );
// pTransSetter will be auto-freed by COM
#endif // DO_TRANSITION
#ifdef CUTS_ONLY
//---------------------------------------------
// turn the transition into a cut by doing this
//---------------------------------------------
hr = pTrackTrans->SetCutsOnly( TRUE );
ASSERT( !FAILED( hr ) );
#endif
//--------------------------------------------
// make the root audio group/composition
//--------------------------------------------
hr = pTimeline->CreateEmptyNode( &pAudioGroupObj, TIMELINE_MAJOR_TYPE_GROUP );
ASSERT( !FAILED( hr ) );
CComQIPtr< IAMTimelineGroup, &IID_IAMTimelineGroup > pAudioGroup( pAudioGroupObj );
CMediaType AudioGroupType;
// all we set is the major type. The group will automatically use other defaults
AudioGroupType.SetType( &MEDIATYPE_Audio );
hr = pAudioGroup->SetMediaType( &AudioGroupType );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// add the group to the timeline
//--------------------------------------------
hr = pTimeline->AddGroup( pAudioGroupObj );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// make a track
//--------------------------------------------
CComPtr< IAMTimelineObj > pTrack3Obj;
hr = pTimeline->CreateEmptyNode( &pTrack3Obj, TIMELINE_MAJOR_TYPE_TRACK );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// tell the composition about the track
//--------------------------------------------
CComQIPtr< IAMTimelineComp, &IID_IAMTimelineComp > pAudioComp( pAudioGroupObj );
hr = pAudioComp->VTrackInsBefore( pTrack3Obj, -1 );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// create a source
//--------------------------------------------
TLStart = 0 * UNITS;
TLStop = 6 * UNITS;
// you can set these if you want to other numbers, the video will speed up
// or slow down if the duration isn't the same at the timeline's.
MediaStart = 0 * UNITS;
MediaStop = 6 * UNITS;
wcscpy( pClipname, T2W( tBasePath ) );
wcscat( pClipname, L"\\" );
wcscat( pClipname, wszAudio1Name );
// create the timeline source
//
CComPtr<IAMTimelineObj> pSource3Obj;
hr = pTimeline->CreateEmptyNode( &pSource3Obj, TIMELINE_MAJOR_TYPE_SOURCE );
ASSERT( !FAILED( hr ) );
// set up source right
//
hr = pSource3Obj->SetStartStop( TLStart, TLStop );
CComQIPtr< IAMTimelineSrc, &IID_IAMTimelineSrc > pSource3Src( pSource3Obj );
hr |= pSource3Src->SetMediaTimes( MediaStart, MediaStop );
hr |= pSource3Src->SetMediaName( pClipname );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// tell the track about the source
//--------------------------------------------
CComQIPtr< IAMTimelineTrack, &IID_IAMTimelineTrack > pTrack3( pTrack3Obj );
hr = pTrack3->SrcAdd( pSource3Obj );
ASSERT( !FAILED( hr ) );
#ifdef DO_CROSSFADE
//--------------------------------------------
// put a volume effect on the source
//--------------------------------------------
TLStart = 4 * UNITS;
TLStop = 6 * UNITS;
CComPtr< IAMTimelineObj > pTrack3FxObj;
hr = pTimeline->CreateEmptyNode( &pTrack3FxObj, TIMELINE_MAJOR_TYPE_EFFECT );
ASSERT( !FAILED( hr ) );
// set up effect right
//
hr = pTrack3FxObj->SetStartStop( TLStart, TLStop );
hr |= pTrack3FxObj->SetSubObjectGUID( CLSID_AudMixer );
ASSERT( !FAILED( hr ) );
// add the effect
//
CComQIPtr< IAMTimelineEffectable , &IID_IAMTimelineEffectable > pTrack3Fable( pTrack3 );
hr = pTrack3Fable->EffectInsBefore( pTrack3FxObj, -1 );
ASSERT( !FAILED( hr ) );
//------------------------------------------------
// set the the volume envelope on the audio source
//------------------------------------------------
CComPtr< IPropertySetter > pVolSetter;
pVolSetter.CoCreateInstance( CLSID_PropertySetter );
CComBSTR VolParamName( "Vol" ); // the property name
Param.Name = VolParamName;
Param.nValues = 2; // how many values we want to set
DEXTER_VALUE AudioValue[2];
memset( &AudioValue[0], 0, sizeof( Value ) );
VariantClear( &AudioValue[0].v );
V_R8( &AudioValue[0].v ) = 1.0;
V_VT( &AudioValue[0].v ) = VT_R8;
AudioValue[0].rt = 0 * UNITS;
memset( &AudioValue[1], 0, sizeof( Value ) );
VariantClear( &AudioValue[1].v );
V_R8( &AudioValue[1].v ) = 0.0;
V_VT( &AudioValue[1].v ) = VT_R8;
AudioValue[1].rt = 2 * UNITS;
AudioValue[1].dwInterp = DEXTERF_INTERPOLATE;
hr = pVolSetter->AddProp( Param, AudioValue );
hr |= pTrack3FxObj->SetPropertySetter( pVolSetter );
ASSERT( !FAILED( hr ) );
pVolSetter.Release( );
#endif // DO_CROSSFADE
//--------------------------------------------
// make another track
//--------------------------------------------
CComPtr< IAMTimelineObj > pTrack4Obj;
hr = pTimeline->CreateEmptyNode( &pTrack4Obj, TIMELINE_MAJOR_TYPE_TRACK );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// tell the composition about the track
//--------------------------------------------
hr = pAudioComp->VTrackInsBefore( pTrack4Obj, -1 );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// create a source for the 2nd track
//--------------------------------------------
TLStart = 4 * UNITS;
TLStop = 8 * UNITS;
MediaStart = 0 * UNITS;
MediaStop = 4 * UNITS;
wcscpy( pClipname, T2W( tBasePath ) );
wcscat( pClipname, L"\\" );
wcscat( pClipname, wszAudio2Name );
// create the timeline source
//
CComPtr<IAMTimelineObj> pSource4Obj;
hr = pTimeline->CreateEmptyNode( &pSource4Obj, TIMELINE_MAJOR_TYPE_SOURCE );
ASSERT( !FAILED( hr ) );
// set up source right
//
hr = pSource4Obj->SetStartStop( TLStart, TLStop );
CComQIPtr< IAMTimelineSrc, &IID_IAMTimelineSrc > pSource4Src( pSource4Obj );
hr |= pSource4Src->SetMediaTimes( MediaStart, MediaStop );
hr |= pSource4Src->SetMediaName( pClipname );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// tell the track about the source
//--------------------------------------------
CComQIPtr< IAMTimelineTrack, &IID_IAMTimelineTrack > pTrack4( pTrack4Obj );
hr = pTrack4->SrcAdd( pSource4Obj );
ASSERT( !FAILED( hr ) );
#ifdef DO_CROSSFADE
//--------------------------------------------
// put a volume effect on the source
//--------------------------------------------
TLStart = 4 * UNITS;
TLStop = 6 * UNITS;
CComPtr< IAMTimelineObj > pTrack4FxObj;
hr = pTimeline->CreateEmptyNode( &pTrack4FxObj, TIMELINE_MAJOR_TYPE_EFFECT );
ASSERT( !FAILED( hr ) );
// set up effect riht
//
hr = pTrack4FxObj->SetStartStop( TLStart, TLStop );
hr |= pTrack4FxObj->SetSubObjectGUID( CLSID_AudMixer );
ASSERT( !FAILED( hr ) );
// add the effect
//
CComQIPtr< IAMTimelineEffectable , &IID_IAMTimelineEffectable > pTrack4Fable( pTrack4 );
hr = pTrack4Fable->EffectInsBefore( pTrack4FxObj, -1 );
ASSERT( !FAILED( hr ) );
//------------------------------------------------
// set the the volume envelope on the audio source
//------------------------------------------------
pVolSetter.CoCreateInstance( CLSID_PropertySetter );
memset( &AudioValue[0], 0, sizeof( Value ) );
VariantClear( &AudioValue[0].v );
V_R8( &AudioValue[0].v ) = 0.0;
V_VT( &AudioValue[0].v ) = VT_R8;
AudioValue[0].rt = 0 * UNITS;
memset( &AudioValue[1], 0, sizeof( Value ) );
VariantClear( &AudioValue[1].v );
V_R8( &AudioValue[1].v ) = 1.0;
V_VT( &AudioValue[1].v ) = VT_R8;
AudioValue[1].rt = 2 * UNITS;
AudioValue[1].dwInterp = DEXTERF_INTERPOLATE;
hr = pVolSetter->AddProp( Param, AudioValue );
hr |= pTrack4FxObj->SetPropertySetter( pVolSetter );
ASSERT( !FAILED( hr ) );
// pVolSetter will be auto-freed by COM
#endif // DO_CROSSFADE
//----------------------------------------------
// make sure files are in their correct location
//----------------------------------------------
hr = pTimeline->ValidateSourceNames(
SFN_VALIDATEF_CHECK | SFN_VALIDATEF_POPUP | SFN_VALIDATEF_REPLACE,
NULL,
0 );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// create the render engine
//--------------------------------------------
hr = CoCreateInstance(
CLSID_RenderEngine,
NULL,
CLSCTX_INPROC_SERVER,
IID_IRenderEngine,
(void**) &pRenderEngine );
ASSERT( !FAILED( hr ) );
// tell the render engine about the timeline it should look at
//
hr = pRenderEngine->SetTimelineObject( pTimeline );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// connect up the front end, then the back end
//--------------------------------------------
hr = pRenderEngine->ConnectFrontEnd( );
hr |= pRenderEngine->RenderOutputPins( );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// get a bunch of pointers, then run the graph
//--------------------------------------------
hr = pRenderEngine->GetFilterGraph( &pGraph );
hr |= pGraph->QueryInterface( IID_IMediaEvent, (void**) &pEvent );
hr |= pGraph->QueryInterface( IID_IMediaControl, (void**) &pControl );
hr |= pGraph->QueryInterface( IID_IMediaSeeking, (void**) &pSeeking );
hr |= pGraph->QueryInterface( IID_IVideoWindow, (void**) &pVidWindow );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// give the main window a meaningful title
//--------------------------------------------
BSTR bstrCaption;
WriteBSTR(&bstrCaption, wszTitle);
hr = pVidWindow->put_Caption(bstrCaption);
FreeBSTR(&bstrCaption);
//--------------------------------------------
// since no user interaction is allowed, remove
// system menu and maximize/minimize buttons
//--------------------------------------------
long lStyle=0;
hr = pVidWindow->get_WindowStyle(&lStyle);
lStyle &= ~(WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
hr = pVidWindow->put_WindowStyle(lStyle);
//--------------------------------------------
// run it
//--------------------------------------------
hr = pControl->Run( );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// wait for it
//--------------------------------------------
long EventCode = 0;
hr = pEvent->WaitForCompletion( -1, &EventCode );
ASSERT( !FAILED( hr ) );
REFERENCE_TIME Start = 0;
#ifdef DO_RENDERRANGE
// seek the timeline back to 0
//
hr = pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning );
ASSERT( !FAILED( hr ) );
hr = pRenderEngine->SetRenderRange2( 2.0, 6.0 );
ASSERT( !FAILED( hr ) );
//------------------------------------------------------
// connect up the front end, then the back end if needed
//------------------------------------------------------
hr = pRenderEngine->ConnectFrontEnd( );
ASSERT( !FAILED( hr ) );
if(hr == S_WARN_OUTPUTRESET) {
hr |= pRenderEngine->RenderOutputPins( );
}
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// run it
//--------------------------------------------
hr = pControl->Run( );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// wait for it
//--------------------------------------------
hr = pEvent->WaitForCompletion( -1, &EventCode );
ASSERT( !FAILED( hr ) );
#endif // DO_RENDERRANGE
#ifdef DO_RECONNECT
//---------------------------------------------
// make a change to the timeline, however small
//---------------------------------------------
CComPtr< IAMTimelineObj > pTransObj;
REFERENCE_TIME InOut = -1;
pTransable->GetNextTrans( &pTransObj, &InOut );
CComQIPtr< IAMTimelineTrans, &IID_IAMTimelineTrans > pTrans( pTransObj );
pTrans->SetCutsOnly( TRUE );
pTransObj.Release( );
pTrans.Release( );
hr = pTransable->GetNextTrans( &pTransObj, &InOut );
pTrans = pTransObj;
hr |= pTrans->SetCutsOnly( TRUE );
ASSERT( !FAILED( hr ) );
// seek the timeline back to 0
//
hr = pSeeking->SetPositions( &Start, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning );
ASSERT( !FAILED( hr ) );
//------------------------------------------------------
// connect up the front end, then the back end if needed
//------------------------------------------------------
hr = pRenderEngine->ConnectFrontEnd( );
if(hr == S_WARN_OUTPUTRESET) {
hr |= pRenderEngine->RenderOutputPins( );
}
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// run it
//--------------------------------------------
hr = pControl->Run( );
ASSERT( !FAILED( hr ) );
//--------------------------------------------
// wait for it
//--------------------------------------------
hr = pEvent->WaitForCompletion( -1, &EventCode );
ASSERT( !FAILED( hr ) );
#endif // DO_RECONNECT
return 0;
}

View File

@@ -0,0 +1,110 @@
# Microsoft Developer Studio Project File - Name="TimelineTest" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=TimelineTest - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "TimelineTest.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "TimelineTest.mak" CFG="TimelineTest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "TimelineTest - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "TimelineTest - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "TimelineTest - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MT /W3 /Gi /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Yu"stdafx.h" /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /win32
# SUBTRACT MTL /mktyplib203
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 ..\..\BaseClasses\Release\strmbase.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /stack:0x200000,0x200000 /subsystem:windows /pdb:none /machine:I386 /OPT:NOREF /OPT:ICF
# SUBTRACT LINK32 /nodefaultlib
!ELSEIF "$(CFG)" == "TimelineTest - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /Gi /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "DEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Yu"stdafx.h" /FD /GZ /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /win32
# SUBTRACT MTL /mktyplib203
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ..\..\BaseClasses\debug\strmbasd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib /nologo /stack:0x200000,0x200000 /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "TimelineTest - Win32 Release"
# Name "TimelineTest - Win32 Debug"
# Begin Source File
SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File
SOURCE=.\StdAfx.h
# End Source File
# Begin Source File
SOURCE=.\TimelineTest.cpp
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "TimelineTest"=.\TimelineTest.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,219 @@
# Microsoft Developer Studio Generated NMAKE File, Based on TimelineTest.dsp
!IF "$(CFG)" == ""
CFG=TimelineTest - Win32 Debug
!MESSAGE No configuration specified. Defaulting to TimelineTest - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "TimelineTest - Win32 Release" && "$(CFG)" != "TimelineTest - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "TimelineTest.mak" CFG="TimelineTest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "TimelineTest - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "TimelineTest - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "TimelineTest - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\TimelineTest.exe"
CLEAN :
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\TimelineTest.obj"
-@erase "$(INTDIR)\TimelineTest.pch"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\TimelineTest.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MT /W3 /Gi /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Fp"$(INTDIR)\TimelineTest.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /win32
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\TimelineTest.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\BaseClasses\Release\strmbase.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386 /nodefaultlib /out:"$(OUTDIR)\TimelineTest.exe" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\TimelineTest.obj"
"$(OUTDIR)\TimelineTest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "TimelineTest - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\TimelineTest.exe"
CLEAN :
-@erase "$(INTDIR)\StdAfx.obj"
-@erase "$(INTDIR)\TimelineTest.obj"
-@erase "$(INTDIR)\TimelineTest.pch"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\TimelineTest.exe"
-@erase "$(OUTDIR)\TimelineTest.ilk"
-@erase "$(OUTDIR)\TimelineTest.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MTd /W3 /Gm /Gi /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "DEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Fp"$(INTDIR)\TimelineTest.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /win32
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\TimelineTest.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\BaseClasses\debug\strmbasd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib msvcrtd.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\TimelineTest.pdb" /debug /machine:I386 /nodefaultlib /out:"$(OUTDIR)\TimelineTest.exe" /pdbtype:sept /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\TimelineTest.obj"
"$(OUTDIR)\TimelineTest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("TimelineTest.dep")
!INCLUDE "TimelineTest.dep"
!ELSE
!MESSAGE Warning: cannot find "TimelineTest.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "TimelineTest - Win32 Release" || "$(CFG)" == "TimelineTest - Win32 Debug"
SOURCE=.\StdAfx.cpp
!IF "$(CFG)" == "TimelineTest - Win32 Release"
CPP_SWITCHES=/nologo /MT /W3 /Gi /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Fp"$(INTDIR)\TimelineTest.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\TimelineTest.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ELSEIF "$(CFG)" == "TimelineTest - Win32 Debug"
CPP_SWITCHES=/nologo /MTd /W3 /Gm /Gi /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\common\include" /I "..\..\..\common\src" /I "..\..\..\..\..\include" /D "WIN32" /D "DEBUG" /D "_WINDOWS" /D "_MBCS" /D WINVER=0x400 /Fp"$(INTDIR)\TimelineTest.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\TimelineTest.pch" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ENDIF
SOURCE=.\TimelineTest.cpp
"$(INTDIR)\TimelineTest.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\TimelineTest.pch"
!ENDIF

View File

@@ -0,0 +1,70 @@
DirectShow Sample -- XTLTest
----------------------------
Description
Command-line tool for rendering and previewing video editing projects.
This tool renders Microsoft DirectShow Editing Services (DES) project files.
To enable ASF support in this application, link the project to a Microsoft
Windows Media Format (WMF) SDK certificate and define USE_WMF_CERT when you
compile the application. See the WMF SDK documentation for instructions
on obtaining a certificate.
Note: This application requires Internet Explorer 4.0 or later. If it is not
present, the application displays the following error message:
Unexpected error - DShow not installed correctly.
For more information, see IXml2Dex.
User's Guide
This sample application demonstrates the following tasks related to video editing:
- Previewing timelines and writing the rendered output to a file.
- Setting timeline options when rendering timelines.
Usage
xtltest.exe [switches] input.xtl
By default, the application previews the project. The following command-line
switches are supported.
/C No clock. Render the project as quickly as possible,
without synchronizing audio and video.
/D Load source files dynamically. For more information,
see IRenderEngine::SetDynamicReconnectLevel.
/[double-double] Set the rendering start and stop times.
For example, /[3-4] renders one second of the timeline,
starting 3 seconds into the project.
/G filename.grf Output a GraphEdit file in .grf format.
/N No rendering. The project is not previewed or rendered to
a file. This option is useful for validating the
input file, or with the /G switch.
/P [number] Choose an ASF compression profile. Available only if the
application is compiled with a WMF SDK certificate.
/P List available ASF profiles. Available only if the
application is compiled with a WMF SDK certificate.
/R Activate smart recompression. The application uses the
first clip in the timeline for the compression format.
Use the /W switch with this option.
For more information, see "About the Render Engines".
/W filename Render the timeline to a file. The file type is determined
by the file extension. The application supports
AVI and WAV files. If the application is compiled
with a WMF SDK certificate, it also supports ASF files.
This option suppresses preview.
/X filename.xtl Save the project as an XML file. The new file is
functionally identical to the input file, although
the XML tags may differ.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,104 @@
# Microsoft Developer Studio Project File - Name="xtltest" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=xtltest - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "xtltest.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "xtltest.mak" CFG="xtltest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "xtltest - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "xtltest - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "xtltest - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ..\..\baseclasses\release\strmbase.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib uuid.lib odbc32.lib odbccp32.lib quartz.lib /nologo /subsystem:console /machine:I386 /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "xtltest - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "xtltest___Win32_Debug"
# PROP BASE Intermediate_Dir "xtltest___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ..\..\baseclasses\debug\strmbasd.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib quartz.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /stack:0x200000,0x200000
!ENDIF
# Begin Target
# Name "xtltest - Win32 Release"
# Name "xtltest - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\xmltltst.cpp
# ADD CPP /I "..\..\..\..\include" /I "..\BaseClasses"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "xtltest"=.\xtltest.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,204 @@
# Microsoft Developer Studio Generated NMAKE File, Based on xtltest.dsp
!IF "$(CFG)" == ""
CFG=xtltest - Win32 Debug
!MESSAGE No configuration specified. Defaulting to xtltest - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "xtltest - Win32 Release" && "$(CFG)" != "xtltest - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "xtltest.mak" CFG="xtltest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "xtltest - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "xtltest - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "xtltest - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\xtltest.exe"
CLEAN :
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\xmltltst.obj"
-@erase "$(OUTDIR)\xtltest.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\xtltest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\xtltest.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\baseclasses\release\strmbase.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib uuid.lib odbc32.lib odbccp32.lib quartz.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\xtltest.pdb" /machine:I386 /out:"$(OUTDIR)\xtltest.exe" /OPT:NOREF /OPT:ICF /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\xmltltst.obj"
"$(OUTDIR)\xtltest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "xtltest - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\xtltest.exe"
CLEAN :
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(INTDIR)\xmltltst.obj"
-@erase "$(OUTDIR)\xtltest.exe"
-@erase "$(OUTDIR)\xtltest.ilk"
-@erase "$(OUTDIR)\xtltest.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\xtltest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\xtltest.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=..\..\baseclasses\debug\strmbasd.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib quartz.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\xtltest.pdb" /debug /machine:I386 /out:"$(OUTDIR)\xtltest.exe" /pdbtype:sept /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\xmltltst.obj"
"$(OUTDIR)\xtltest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("xtltest.dep")
!INCLUDE "xtltest.dep"
!ELSE
!MESSAGE Warning: cannot find "xtltest.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "xtltest - Win32 Release" || "$(CFG)" == "xtltest - Win32 Debug"
SOURCE=.\xmltltst.cpp
!IF "$(CFG)" == "xtltest - Win32 Release"
CPP_SWITCHES=/nologo /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\BaseClasses" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\xtltest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
"$(INTDIR)\xmltltst.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ELSEIF "$(CFG)" == "xtltest - Win32 Debug"
CPP_SWITCHES=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /I "..\BaseClasses" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /Fp"$(INTDIR)\xtltest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
"$(INTDIR)\xmltltst.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) @<<
$(CPP_SWITCHES) $(SOURCE)
<<
!ENDIF
!ENDIF