diff -rubN /c/DX90SDK-orig/Include/strmif.h ./Include/strmif.h --- /c/DX90SDK-orig/Include/strmif.h Mon Aug 18 21:22:54 2003 +++ ./Include/strmif.h Wed Jul 21 21:45:28 2004 @@ -5604,7 +5604,7 @@ { DWORD dwVersion; DWORD dwMerit; - /* [switch_type][switch_is] */ union + /* [switch_type][switch_is] */ struct { /* [case()] */ struct { @@ -28732,8 +28732,8 @@ typedef struct tagVMRGUID { - GUID *pGUID; - GUID GUID; + ::GUID *pGUID; + ::GUID GUID; } VMRGUID; typedef struct tagVMRMONITORINFO diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/Makefile ./Samples/C++/DirectShow/BaseClasses/Makefile --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/Makefile Thu Jan 1 10:00:00 1970 +++ ./Samples/C++/DirectShow/BaseClasses/Makefile Wed Jul 21 21:19:30 2004 @@ -0,0 +1,25 @@ +SRC=amextra.cpp amfilter.cpp amvideo.cpp combase.cpp cprop.cpp ctlutil.cpp ddmm.cpp dllentry.cpp dllsetup.cpp mtype.cpp outputq.cpp pstream.cpp pullpin.cpp refclock.cpp renbase.cpp schedule.cpp seekpt.cpp source.cpp strmctl.cpp sysclock.cpp transfrm.cpp transip.cpp videoctl.cpp vtrans.cpp winctrl.cpp winutil.cpp wxdebug.cpp wxlist.cpp wxutil.cpp + +DXTREE=../../../.. +DXBASECLASSES=$(DXTREE)/Samples/C++/DirectShow/BaseClasses +OBJ=$(SRC:.cpp=.o) +LIB=strmbase.lib + +CXX=g++ +CXXFLAGS=-O2 -fno-for-scope -mthreads + +all: $(LIB) + +$(LIB): $(OBJ) + $(AR) $(ARFLAGS) $@ $^ + +.cpp.o: + $(CXX) $(CXXFLAGS) \ + -DRELEASE \ + -I$(DXTREE)/Include \ + -I$(DXBASECLASSES) \ + -include $(DXTREE)/mingw_dshow_port.h \ + -c $(CXXFLAGS) $< -o $@ + +clean: + rm $(OBJ) diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/amfilter.cpp ./Samples/C++/DirectShow/BaseClasses/amfilter.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/amfilter.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/amfilter.cpp Sun Jul 25 13:06:01 2004 @@ -1363,7 +1363,7 @@ /* Make sure the destructor doesn't free these */ cmt.pbFormat = NULL; - cmt.cbFormat = NULL; + cmt.cbFormat = 0; cmt.pUnk = NULL; diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ctlutil.cpp ./Samples/C++/DirectShow/BaseClasses/ctlutil.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ctlutil.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/ctlutil.cpp Sun Jul 25 13:03:03 2004 @@ -709,7 +709,7 @@ HRESULT CPosPassThru::GetSeekingLongLong -( HRESULT (__stdcall IMediaSeeking::*pMethod)( LONGLONG * ) +( HRESULT ( GETSEEKINGLONGLONG_CALL IMediaSeeking::*pMethod)( LONGLONG * ) , LONGLONG * pll ) { diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ctlutil.h ./Samples/C++/DirectShow/BaseClasses/ctlutil.h --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ctlutil.h Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/ctlutil.h Sun Jul 25 13:02:59 2004 @@ -275,7 +275,7 @@ // Prevent bugs from constructing from LONG (which gets // converted to double and then multiplied by 10000000 COARefTime(LONG); - operator=(LONG); + COARefTime& operator=(LONG); }; @@ -355,7 +355,12 @@ STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward); private: - HRESULT GetSeekingLongLong( HRESULT (__stdcall IMediaSeeking::*pMethod)( LONGLONG * ), +#if !defined(__GNUC__) +#define GETSEEKINGLONGLONG_CALL __stdcall +#else +#define GETSEEKINGLONGLONG_CALL +#endif + HRESULT GetSeekingLongLong( HRESULT ( GETSEEKINGLONGLONG_CALL IMediaSeeking::*pMethod)( LONGLONG * ), LONGLONG * pll ); }; diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ddmm.cpp ./Samples/C++/DirectShow/BaseClasses/ddmm.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/ddmm.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/ddmm.cpp Wed Jul 21 21:19:30 2004 @@ -17,8 +17,8 @@ */ typedef struct { LPSTR szDevice; - GUID* lpGUID; - GUID GUID; + ::GUID* lpGUID; + ::GUID GUID; BOOL fFound; } FindDeviceData; diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/mtype.cpp ./Samples/C++/DirectShow/BaseClasses/mtype.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/mtype.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/mtype.cpp Wed Jul 21 21:19:30 2004 @@ -13,7 +13,6 @@ // in the streams IDL file, but also has (non-virtual) functions #include -#include CMediaType::~CMediaType(){ FreeMediaType(*this); diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/refclock.h ./Samples/C++/DirectShow/BaseClasses/refclock.h --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/refclock.h Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/refclock.h Sun Jul 25 12:36:21 2004 @@ -14,7 +14,11 @@ const UINT RESOLUTION = 1; /* High resolution timer */ const INT ADVISE_CACHE = 4; /* Default cache size */ +#if !defined(__GNUC__) const LONGLONG MAX_TIME = 0x7FFFFFFFFFFFFFFF; /* Maximum LONGLONG value */ +#else +const LONGLONG MAX_TIME = 0x7FFFFFFFFFFFFFFFLL; /* Maximum LONGLONG value */ +#endif inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME& RT) { diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/wxdebug.cpp ./Samples/C++/DirectShow/BaseClasses/wxdebug.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/wxdebug.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/wxdebug.cpp Wed Jul 21 21:19:30 2004 @@ -564,7 +564,7 @@ { // re-read the registry every second. We cannot use RegNotify() to // notice registry changes because it's not available on win9x. - static g_dwLastRefresh = 0; + static DWORD g_dwLastRefresh = 0; DWORD dwTime = timeGetTime(); if(dwTime - g_dwLastRefresh > 1000) { g_dwLastRefresh = dwTime; @@ -1143,7 +1143,33 @@ hr = pUnk->QueryInterface(IID_IPin, (void **)&pp); if(SUCCEEDED(hr)) { - CDisp::CDisp(pp); +/* --- copy from CDisp::CDisp(IPin*) --- */ + PIN_INFO pi; + TCHAR str[MAX_PIN_NAME]; + CLSID clsid; + + if (pp) { + pp->QueryPinInfo(&pi); + pi.pFilter->GetClassID(&clsid); + QueryPinInfoReleaseFilter(pi); + #ifndef UNICODE + WideCharToMultiByte(GetACP(), 0, pi.achName, lstrlenW(pi.achName) + 1, + str, MAX_PIN_NAME, NULL, NULL); + #else + lstrcpy(str, pi.achName); + #endif + } else { + lstrcpy(str, TEXT("NULL IPin")); + } + + m_pString = (PTCHAR) new TCHAR[lstrlen(str)+64]; + if (!m_pString) { + pp->Release(); + return; + } + + wsprintf(m_pString, TEXT("%hs(%s)"), GuidNames[clsid], str); +/* --- copy from CDisp::CDisp(IPin*) --- */ pp->Release(); return; } diff -rubN /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/wxutil.cpp ./Samples/C++/DirectShow/BaseClasses/wxutil.cpp --- /c/DX90SDK-orig/Samples/C++/DirectShow/BaseClasses/wxutil.cpp Mon Aug 18 16:03:32 2003 +++ ./Samples/C++/DirectShow/BaseClasses/wxutil.cpp Sun Jul 25 12:56:29 2004 @@ -742,8 +742,13 @@ /* This will catch c == 0 and overflow */ if (uc <= p[1].QuadPart) { +#if !defined(__GNUC__) return bSign ? (LONGLONG)0x8000000000000000 : (LONGLONG)0x7FFFFFFFFFFFFFFF; +#else + return bSign ? (LONGLONG)0x8000000000000000LL : + (LONGLONG)0x7FFFFFFFFFFFFFFFLL; +#endif } DWORDLONG ullResult; @@ -903,8 +908,13 @@ /* This will catch c == 0 and overflow */ if (uc <= p1) { +#if !defined(__GNUC__) return bSign ? (LONGLONG)0x8000000000000000 : (LONGLONG)0x7FFFFFFFFFFFFFFF; +#else + return bSign ? (LONGLONG)0x8000000000000000LL : + (LONGLONG)0x7FFFFFFFFFFFFFFFLL; +#endif } /* Do the division */ diff -rubN /c/DX90SDK-orig/mingw_dshow_port.h ./mingw_dshow_port.h --- /c/DX90SDK-orig/mingw_dshow_port.h Thu Jan 1 10:00:00 1970 +++ ./mingw_dshow_port.h Wed Jul 21 21:19:30 2004 @@ -0,0 +1,12 @@ +#include +#include +#include +#include + +#define _WINGDI_ 1 +#define AM_NOVTABLE +#define _OBJBASE_H_ +#undef _X86_ +#define _I64_MAX LONG_LONG_MAX +#define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) \ + EXTERN_C static const IID itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8} }