darling-cocotron/AppKit/Win32.subproj/NSSound_DirectShow.h
2020-05-12 17:04:15 -04:00

90 lines
3.1 KiB
Objective-C

#import <AppKit/NSSound.h>
#include <mmsystem.h>
#include <windows.h>
#define IBaseFilter void
#define LPDDPIXELFORMAT int
#include <control.h>
#include <oaidl.h>
#include <strmif.h>
DECLARE_ENUMERATOR_(IEnumFilters, IBaseFilter *);
#define INTERFACE IPin
DECLARE_INTERFACE_(IPin, IUnknown) {
STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID *) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
STDMETHOD(Connect)(THIS_ IPin *, const AM_MEDIA_TYPE *) PURE;
STDMETHOD(ReceiveConnection)(THIS_ IPin *, const AM_MEDIA_TYPE *) PURE;
STDMETHOD(Disconnect)(THIS) PURE;
STDMETHOD(ConnectedTo)(THIS_ IPin **) PURE;
STDMETHOD(ConnectionMediaType)(THIS_ AM_MEDIA_TYPE *) PURE;
STDMETHOD(QueryPinInfo)(THIS_ PIN_INFO *) PURE;
STDMETHOD(QueryDirection)(THIS_ PIN_DIRECTION *) PURE;
};
#undef INTERFACE
#define INTERFACE IGraphBuilder
DECLARE_INTERFACE_(IGraphBuilder, IUnknown) {
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID *) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
// IFilterGraph
STDMETHOD(AddFilter)(THIS_ IBaseFilter *, LPCWSTR) PURE;
STDMETHOD(RemoveFilter)(THIS_ IBaseFilter *) PURE;
STDMETHOD(EnumFilters)(THIS_ IEnumFilters **) PURE;
STDMETHOD(FindFilterByName)(THIS_ LPCWSTR, IBaseFilter **) PURE;
STDMETHOD(ConnectDirect)(THIS_ IPin *, IPin *, const AM_MEDIA_TYPE *) PURE;
STDMETHOD(Reconnect)(THIS_ IPin *) PURE;
STDMETHOD(Disconnect)(THIS_ IPin *) PURE;
STDMETHOD(SetDefaultSyncSource)(THIS) PURE;
STDMETHOD(Connect)(THIS_ IPin *, IPin *) PURE;
STDMETHOD(Render)(THIS_ IPin *) PURE;
STDMETHOD(RenderFile)(THIS_ LPCWSTR, LPCWSTR) PURE;
STDMETHOD(AddSourceFilter)(THIS_ LPCWSTR, LPCWSTR, IBaseFilter **) PURE;
STDMETHOD(SetLogFile)(THIS_ DWORD_PTR) PURE;
STDMETHOD(Abort)(THIS) PURE;
STDMETHOD(ShouldOperationContinue)(THIS) PURE;
};
#undef INTERFACE
typedef long OAFilterState;
#define INTERFACE IMediaControl
DECLARE_INTERFACE_(IMediaControl, IDispatch) {
STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID *) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
STDMETHOD(GetTypeInfoCount)(THIS_ UINT *) PURE;
STDMETHOD(GetTypeInfo)(THIS_ UINT, LCID, LPTYPEINFO *) PURE;
STDMETHOD(GetIDsOfNames)
(THIS_ REFIID, LPOLESTR *, UINT, LCID, DISPID *) PURE;
STDMETHOD(Invoke)
(THIS_ DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *,
UINT *) PURE;
STDMETHOD(Run)(THIS) PURE;
STDMETHOD(Pause)(THIS) PURE;
STDMETHOD(Stop)(THIS) PURE;
STDMETHOD(GetState)(THIS_ LONG, OAFilterState *) PURE;
STDMETHOD(RenderFile)(THIS_ BSTR) PURE;
STDMETHOD(AddSourceFilter)(THIS_ BSTR, IDispatch **) PURE;
STDMETHOD(get_FilterCollection)(THIS_ IDispatch **) PURE;
STDMETHOD(get_RegFilterCollection)(THIS_ IDispatch **) PURE;
STDMETHOD(StopWhenReady)(THIS) PURE;
};
#undef INTERFACE
@interface NSSound_DirectShow : NSSound {
NSString *_path;
struct IGraphBuilder *_graphBuilder;
struct IMediaControl *_mediaControl;
}
@end