view loader/dshow/interfaces.h @ 713:9355b2ae634e

avifile-0.6-CVS merge
author arpi_esp
date Sun, 06 May 2001 21:43:45 +0000
parents a1fe76547e8f
children da26060c81ef
line wrap: on
line source

/*

    Definition of important DirectShow interfaces.
    Created using freely-available DirectX 8.0 SDK
    ( http://msdn.microsoft.com )

*/
#ifndef INTERFACES_H
#define INTERFACES_H

#include "guids.h"
#include "default.h"
#include <com.h>
#ifndef STDCALL
#define STDCALL __attribute__((__stdcall__))	
#endif

typedef GUID& REFIID;
typedef GUID CLSID;
typedef GUID IID;

/*    Sh*t. MSVC++ and g++ use different methods of storing vtables.    */

struct IBaseFilter;
struct IReferenceClock;
struct IEnumPins;
struct IEnumMediaTypes;
struct IPin;
struct IFilterGraph;
struct IMemInputPin;
struct IMemAllocator;
struct IMediaSample;

enum PIN_DIRECTION;

class IClassFactory2
{
public:
    virtual long STDCALL QueryInterface(GUID* iid, void** ppv) =0;
    virtual long STDCALL AddRef() =0;
    virtual long STDCALL Release() =0;
    virtual long STDCALL CreateInstance(IUnknown* pUnkOuter, GUID* riid, void** ppvObject) =0;
};

struct IBaseFilter_vt: IUnknown_vt
{
    HRESULT STDCALL ( *GetClassID )( 
        IBaseFilter * This,
        /* [out] */ CLSID *pClassID);
    
    HRESULT STDCALL ( *Stop )( 
        IBaseFilter * This);
    
    HRESULT STDCALL ( *Pause )( 
        IBaseFilter * This);
    
    HRESULT STDCALL ( *Run )( 
        IBaseFilter * This,
        REFERENCE_TIME tStart);
    
    HRESULT STDCALL ( *GetState )( 
        IBaseFilter * This,
        /* [in] */ unsigned long dwMilliSecsTimeout,
//        /* [out] */ FILTER_STATE *State);
    	void* State);
    
    HRESULT STDCALL ( *SetSyncSource )( 
        IBaseFilter * This,
        /* [in] */ IReferenceClock *pClock);
    
    HRESULT STDCALL ( *GetSyncSource )( 
        IBaseFilter * This,
        /* [out] */ IReferenceClock **pClock);
    
    HRESULT STDCALL ( *EnumPins )( 
        IBaseFilter * This,
        /* [out] */ IEnumPins **ppEnum);
    
    HRESULT STDCALL ( *FindPin )( 
        IBaseFilter * This,
        /* [string][in] */ const unsigned short* Id,
        /* [out] */ IPin **ppPin);
    
    HRESULT STDCALL ( *QueryFilterInfo )( 
        IBaseFilter * This,
//        /* [out] */ FILTER_INFO *pInfo);
	void* pInfo);
    
    HRESULT STDCALL ( *JoinFilterGraph )( 
        IBaseFilter * This,
        /* [in] */ IFilterGraph *pGraph,
        /* [string][in] */ const unsigned short* pName);
    
    HRESULT STDCALL ( *QueryVendorInfo )( 
        IBaseFilter * This,
        /* [string][out] */ unsigned short* *pVendorInfo);
    
};

struct IBaseFilter
{
    struct IBaseFilter_vt *vt;
};

struct IEnumPins_vt: IUnknown_vt
{
    HRESULT STDCALL ( *Next )( 
        IEnumPins * This,
        /* [in] */ unsigned long cPins,
        /* [size_is][out] */ IPin **ppPins,
        /* [out] */ unsigned long *pcFetched);
    
    HRESULT STDCALL ( *Skip )( 
        IEnumPins * This,
        /* [in] */ unsigned long cPins);
    
    HRESULT STDCALL ( *Reset )( 
        IEnumPins * This);
    
    HRESULT STDCALL ( *Clone )( 
        IEnumPins * This,
        /* [out] */ IEnumPins **ppEnum);
        
};

struct IEnumPins
{
     struct IEnumPins_vt *vt;
};


struct IPin_vt: IUnknown_vt
{
        HRESULT STDCALL ( *Connect )( 
            IPin * This,
            /* [in] */ IPin *pReceivePin,
            /* [in] */ /*const*/ AM_MEDIA_TYPE *pmt);
        
        HRESULT STDCALL ( *ReceiveConnection )( 
            IPin * This,
            /* [in] */ IPin *pConnector,
            /* [in] */ const AM_MEDIA_TYPE *pmt);
        
        HRESULT STDCALL ( *Disconnect )( 
            IPin * This);
        
        HRESULT STDCALL ( *ConnectedTo )( 
            IPin * This,
            /* [out] */ IPin **pPin);
        
        HRESULT STDCALL ( *ConnectionMediaType )( 
            IPin * This,
            /* [out] */ AM_MEDIA_TYPE *pmt);
        
        HRESULT STDCALL ( *QueryPinInfo )( 
            IPin * This,
            /* [out] */ PIN_INFO *pInfo);
        
        HRESULT STDCALL ( *QueryDirection )( 
            IPin * This,
            /* [out] */ PIN_DIRECTION *pPinDir);
        
        HRESULT STDCALL ( *QueryId )( 
            IPin * This,
            /* [out] */ unsigned short* *Id);
        
        HRESULT STDCALL ( *QueryAccept )( 
            IPin * This,
            /* [in] */ const AM_MEDIA_TYPE *pmt);
        
        HRESULT STDCALL ( *EnumMediaTypes )( 
            IPin * This,
            /* [out] */ IEnumMediaTypes **ppEnum);
        
        HRESULT STDCALL ( *QueryInternalConnections )( 
            IPin * This,
            /* [out] */ IPin **apPin,
            /* [out][in] */ unsigned long *nPin);
        
        HRESULT STDCALL ( *EndOfStream )( 
            IPin * This);
        
        HRESULT STDCALL ( *BeginFlush )( 
            IPin * This);
        
        HRESULT STDCALL ( *EndFlush )( 
            IPin * This);
        
        HRESULT STDCALL ( *NewSegment )( 
            IPin * This,
            /* [in] */ REFERENCE_TIME tStart,
            /* [in] */ REFERENCE_TIME tStop,
            /* [in] */ double dRate);
        
};

struct IPin
{
    IPin_vt *vt;
};

struct IEnumMediaTypes_vt: IUnknown_vt
{
        HRESULT STDCALL ( *Next )( 
            IEnumMediaTypes * This,
            /* [in] */ unsigned long cMediaTypes,
            /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes,
            /* [out] */ unsigned long *pcFetched);
        
        HRESULT STDCALL ( *Skip )( 
            IEnumMediaTypes * This,
            /* [in] */ unsigned long cMediaTypes);
        
        HRESULT STDCALL ( *Reset )( 
            IEnumMediaTypes * This);
        
        HRESULT STDCALL ( *Clone )( 
            IEnumMediaTypes * This,
            /* [out] */ IEnumMediaTypes **ppEnum);
};

struct IEnumMediaTypes
{
    IEnumMediaTypes_vt *vt;
};

    
struct IMemInputPin_vt: IUnknown_vt
{
    HRESULT STDCALL ( *GetAllocator )( 
        IMemInputPin * This,
        /* [out] */ IMemAllocator **ppAllocator);
    
    HRESULT STDCALL ( *NotifyAllocator )( 
        IMemInputPin * This,
        /* [in] */ IMemAllocator *pAllocator,
        /* [in] */ int bReadOnly);
    
    HRESULT STDCALL ( *GetAllocatorRequirements )( 
            IMemInputPin * This,
        /* [out] */ ALLOCATOR_PROPERTIES *pProps);
    
    HRESULT STDCALL ( *Receive )( 
        IMemInputPin * This,
        /* [in] */ IMediaSample *pSample);
    
    HRESULT STDCALL ( *ReceiveMultiple )( 
        IMemInputPin * This,
        /* [size_is][in] */ IMediaSample **pSamples,
        /* [in] */ long nSamples,
        /* [out] */ long *nSamplesProcessed);
    
    HRESULT STDCALL ( *ReceiveCanBlock )( 
        IMemInputPin * This);
};

struct IMemInputPin
{
    IMemInputPin_vt *vt;
};

    

struct IMemAllocator_vt: IUnknown_vt
{
    HRESULT STDCALL ( *SetProperties )( 
        IMemAllocator * This,
        /* [in] */ ALLOCATOR_PROPERTIES *pRequest,
        /* [out] */ ALLOCATOR_PROPERTIES *pActual);
    
    HRESULT STDCALL ( *GetProperties )( 
        IMemAllocator * This,
        /* [out] */ ALLOCATOR_PROPERTIES *pProps);
    
    HRESULT STDCALL ( *Commit )( 
        IMemAllocator * This);
    
    HRESULT STDCALL ( *Decommit )( 
        IMemAllocator * This);
    
    HRESULT STDCALL ( *GetBuffer )( 
        IMemAllocator * This,
        /* [out] */ IMediaSample **ppBuffer,
        /* [in] */ REFERENCE_TIME *pStartTime,
        /* [in] */ REFERENCE_TIME *pEndTime,
        /* [in] */ unsigned long dwFlags);
    
        HRESULT STDCALL ( *ReleaseBuffer )( 
        IMemAllocator * This,
        /* [in] */ IMediaSample *pBuffer);
};

struct IMemAllocator
{
    IMemAllocator_vt *vt;
};

struct IMediaSample_vt: IUnknown_vt
{
    HRESULT STDCALL ( *GetPointer )( 
        IMediaSample * This,
        /* [out] */ unsigned char **ppBuffer);
    
    long STDCALL ( *GetSize )( 
        IMediaSample * This);
    
    HRESULT STDCALL ( *GetTime )( 
        IMediaSample * This,
        /* [out] */ REFERENCE_TIME *pTimeStart,
        /* [out] */ REFERENCE_TIME *pTimeEnd);
    
    HRESULT STDCALL ( *SetTime )( 
        IMediaSample * This,
        /* [in] */ REFERENCE_TIME *pTimeStart,
        /* [in] */ REFERENCE_TIME *pTimeEnd);
    
    HRESULT STDCALL ( *IsSyncPoint )( 
        IMediaSample * This);
    
    HRESULT STDCALL ( *SetSyncPoint )( 
        IMediaSample * This,
        long bIsSyncPoint);
    
    HRESULT STDCALL ( *IsPreroll )( 
        IMediaSample * This);
    
    HRESULT STDCALL ( *SetPreroll )( 
        IMediaSample * This,
        long bIsPreroll);
    
    long STDCALL ( *GetActualDataLength )( 
        IMediaSample * This);
    
    HRESULT STDCALL ( *SetActualDataLength )( 
        IMediaSample * This,
        long __MIDL_0010);
    
    HRESULT STDCALL ( *GetMediaType )( 
        IMediaSample * This,
        AM_MEDIA_TYPE **ppMediaType);
    
    HRESULT STDCALL ( *SetMediaType )( 
        IMediaSample * This,
        AM_MEDIA_TYPE *pMediaType);
    
    HRESULT STDCALL ( *IsDiscontinuity )( 
        IMediaSample * This);
    
    HRESULT STDCALL ( *SetDiscontinuity )( 
        IMediaSample * This,
        long bDiscontinuity);
    
    HRESULT STDCALL ( *GetMediaTime )( 
        IMediaSample * This,
        /* [out] */ long long *pTimeStart,
        /* [out] */ long long *pTimeEnd);
    
    HRESULT STDCALL ( *SetMediaTime )( 
        IMediaSample * This,
        /* [in] */ long long *pTimeStart,
        /* [in] */ long long *pTimeEnd);
};

struct IMediaSample
{
    struct IMediaSample_vt *vt;
};

struct IHidden;    
struct IHidden_vt: IUnknown_vt
{
    HRESULT STDCALL ( *GetSmth )(IHidden * This,
 int* pv);
    HRESULT STDCALL ( *SetSmth )(IHidden * This,
 int v1, int v2);
    HRESULT STDCALL ( *GetSmth2 )(IHidden * This,
 int* pv);
    HRESULT STDCALL ( *SetSmth2 )(IHidden * This,
 int v1, int v2);
    HRESULT STDCALL ( *GetSmth3 )(IHidden * This,
 int* pv);
    HRESULT STDCALL ( *SetSmth3 )(IHidden * This,
 int v1, int v2);
    HRESULT STDCALL ( *GetSmth4 )(IHidden * This,
 int* pv);
    HRESULT STDCALL ( *SetSmth4 )(IHidden * This,
 int v1, int v2);
    HRESULT STDCALL ( *GetSmth5 )(IHidden * This,
 int* pv);
    HRESULT STDCALL ( *SetSmth5 )(IHidden * This,
 int v1, int v2);
    HRESULT STDCALL ( *GetSmth6 )(IHidden * This,
 int* pv);
};
    
struct IHidden
{
    struct IHidden_vt *vt;
};

struct IHidden2;
struct IHidden2_vt: IUnknown_vt
{
    HRESULT STDCALL (*unk1) ();
    HRESULT STDCALL (*unk2) ();
    HRESULT STDCALL (*unk3) ();
    HRESULT STDCALL (*DecodeGet) (IHidden2* This, int* region);
    HRESULT STDCALL (*unk5) ();
    HRESULT STDCALL (*DecodeSet) (IHidden2* This, int* region);
    HRESULT STDCALL (*unk7) ();
    HRESULT STDCALL (*unk8) ();
};
struct IHidden2
{
    struct IHidden2_vt *vt;
};
#endif