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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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_)
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
|
||||
|
||||
@@ -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_)
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -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_)
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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_)
|
||||
@@ -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 |
@@ -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...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@@ -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"
|
||||
@@ -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_)
|
||||
@@ -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.
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user