-#ifndef PRECOMP_H_
-#define PRECOMP_H_
+#pragma once
+#define _FORCENAMELESSUNION
#define BUILDING_KS
#define _KSDDK_
#include <dshow.h>
#include <dvp.h>
#include <vptype.h>
#include <vpconfig.h>
-
#include <setupapi.h>
+#include <stdio.h>
+#include <vector>
+#include <assert.h>
+#include <ksmedia.h>
//#include <debug.h>
+
+interface DECLSPEC_UUID("877E4351-6FEA-11D0-B863-00AA00A216A1") IKsClock;
+
+#undef INTERFACE
+#define INTERFACE IKsClock
+
+DECLARE_INTERFACE_(IKsClock, IUnknown)
+{
+ STDMETHOD_(HANDLE, KsGetClockHandle)(
+ THIS
+ ) PURE;
+};
+
+
typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject);
typedef struct {
REFIID riid,
LPVOID * ppv);
-#endif
+/* input_pin.cpp */
+HRESULT
+WINAPI
+CInputPin_Constructor(
+ IBaseFilter * ParentFilter,
+ LPCWSTR PinName,
+ HANDLE hFilter,
+ ULONG PinId,
+ KSPIN_COMMUNICATION Communication,
+ REFIID riid,
+ LPVOID * ppv);
+
+/* output_pin.cpp */
+HRESULT
+WINAPI
+COutputPin_Constructor(
+ IBaseFilter * ParentFilter,
+ LPCWSTR PinName,
+ ULONG PinId,
+ REFIID riid,
+ LPVOID * ppv);
+
+/* enumpins.cpp */
+HRESULT
+WINAPI
+CEnumPins_fnConstructor(
+ std::vector<IPin*> Pins,
+ REFIID riid,
+ LPVOID * ppv);
+
+/* enum_mediatypes.cpp */
+HRESULT
+WINAPI
+CEnumMediaTypes_fnConstructor(
+ ULONG MediaTypeCount,
+ AM_MEDIA_TYPE * MediaTypes,
+ REFIID riid,
+ LPVOID * ppv);
+
+/* node.cpp */
+HRESULT
+WINAPI
+CKsNode_Constructor(
+ IUnknown * pUnkOuter,
+ HANDLE ParentHandle,
+ ULONG NodeId,
+ ACCESS_MASK DesiredAccess,
+ REFIID riid,
+ LPVOID * ppv);
+
+extern const GUID IID_IKsObject;
+extern const GUID IID_IKsPinEx;
+extern const GUID IID_IKsAggregateControl;
+extern const GUID IID_IKsPinPipe;
+extern const GUID IID_IKsPinFactory;