view loader/dshow/inputpin.h @ 391:15fb291915fa

- changed -bpp again: if vo driver obeys depth value set by user, then the codec should do the same ...
author acki2
date Fri, 13 Apr 2001 17:50:13 +0000
parents bdc4a8fc04d8
children da26060c81ef
line wrap: on
line source

#ifndef INPUTPIN_H
#define INPUTPIN_H
#include "interfaces.h"
#include "guids.h"
#include "iunk.h"

class CBaseFilter2;
class CBaseFilter: public IBaseFilter
{
    IPin* pin;
    IPin* unused_pin;
    static GUID interfaces[];
    DECLARE_IUNKNOWN(CBaseFilter)
public:
    CBaseFilter(const AM_MEDIA_TYPE& vhdr, CBaseFilter2* parent);
    ~CBaseFilter(){delete vt;pin->vt->Release((IUnknown*)pin);unused_pin->vt->Release((IUnknown*)unused_pin);}
    
    IPin* GetPin() {return pin;}
    IPin* GetUnusedPin() {return unused_pin;}
//    static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
//    static long STDCALL AddRef(IUnknown* This);
//    static long STDCALL Release(IUnknown* This);

    static long STDCALL GetClassID ( 
        IBaseFilter * This,
        /* [out] */ CLSID *pClassID);
    
    static long STDCALL Stop ( 
        IBaseFilter * This);
    
    static long STDCALL Pause ( 
        IBaseFilter * This);
    
    static long STDCALL Run ( 
        IBaseFilter * This,
        REFERENCE_TIME tStart);
    
    static long STDCALL GetState ( 
        IBaseFilter * This,
        /* [in] */ unsigned long dwMilliSecsTimeout,
//        /* [out] */ FILTER_STATE *State);
    	void* State);
    
    static long STDCALL SetSyncSource ( 
        IBaseFilter * This,
        /* [in] */ IReferenceClock *pClock);
    
    static long STDCALL GetSyncSource ( 
        IBaseFilter * This,
        /* [out] */ IReferenceClock **pClock);
    
    static long STDCALL EnumPins ( 
        IBaseFilter * This,
        /* [out] */ IEnumPins **ppEnum);
    
    static long STDCALL FindPin ( 
        IBaseFilter * This,
        /* [string][in] */ const unsigned short* Id,
        /* [out] */ IPin **ppPin);
    
    static long STDCALL QueryFilterInfo ( 
        IBaseFilter * This,
//        /* [out] */ FILTER_INFO *pInfo);
	void* pInfo);
    
    static long STDCALL JoinFilterGraph ( 
        IBaseFilter * This,
        /* [in] */ IFilterGraph *pGraph,
        /* [string][in] */ const unsigned short* pName);
    
    static long STDCALL QueryVendorInfo ( 
        IBaseFilter * This,
        /* [string][out] */ unsigned short* *pVendorInfo);
};
class CInputPin: public IPin
{
    AM_MEDIA_TYPE type;
    CBaseFilter* parent;
    static GUID interfaces[];
    DECLARE_IUNKNOWN(CInputPin)
public:
    CInputPin(CBaseFilter* parent, const AM_MEDIA_TYPE& vhdr);
    ~CInputPin(){delete vt;}
//    IPin* GetPin();

//    static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
//    static long STDCALL AddRef(IUnknown* This);
//    static long STDCALL Release(IUnknown* This);

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

class CBaseFilter2: public IBaseFilter
{
    IPin* pin;
    static GUID interfaces[];
    DECLARE_IUNKNOWN(CBaseFilter2)
public:
    CBaseFilter2();
    ~CBaseFilter2(){delete vt;pin->vt->Release((IUnknown*)pin);}
    IPin* GetPin() {return pin;}
    
//    static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
//    static long STDCALL AddRef(IUnknown* This);
//    static long STDCALL Release(IUnknown* This);
    static long STDCALL GetClassID ( 
        IBaseFilter * This,
        /* [out] */ CLSID *pClassID);
    
    static long STDCALL Stop ( 
        IBaseFilter * This);
    
    static long STDCALL Pause ( 
        IBaseFilter * This);
    
    static long STDCALL Run ( 
        IBaseFilter * This,
        REFERENCE_TIME tStart);
    
    static long STDCALL GetState ( 
        IBaseFilter * This,
        /* [in] */ unsigned long dwMilliSecsTimeout,
//        /* [out] */ FILTER_STATE *State);
    	void* State);
    
    static long STDCALL SetSyncSource ( 
        IBaseFilter * This,
        /* [in] */ IReferenceClock *pClock);
    
    static long STDCALL GetSyncSource ( 
        IBaseFilter * This,
        /* [out] */ IReferenceClock **pClock);
    
    static long STDCALL EnumPins ( 
        IBaseFilter * This,
        /* [out] */ IEnumPins **ppEnum);
    
    static long STDCALL FindPin ( 
        IBaseFilter * This,
        /* [string][in] */ const unsigned short* Id,
        /* [out] */ IPin **ppPin);
    
    static long STDCALL QueryFilterInfo ( 
        IBaseFilter * This,
//        /* [out] */ FILTER_INFO *pInfo);
	void* pInfo);
    
    static long STDCALL JoinFilterGraph ( 
        IBaseFilter * This,
        /* [in] */ IFilterGraph *pGraph,
        /* [string][in] */ const unsigned short* pName);
    
    static long STDCALL QueryVendorInfo ( 
        IBaseFilter * This,
        /* [string][out] */ unsigned short* *pVendorInfo);
};

class CRemotePin: public IPin
{
    CBaseFilter* parent;
    IPin* remote_pin;
    static GUID interfaces[];
    DECLARE_IUNKNOWN(CRemotePin)
public:
    CRemotePin(CBaseFilter* pt, IPin* rpin);
    ~CRemotePin(){delete vt;}

//    static long STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
//    static long STDCALL AddRef(IUnknown* This);
//    static long STDCALL Release(IUnknown* This);
    
    static long STDCALL ConnectedTo ( 
        IPin * This,
        /* [out] */ IPin **pPin);

    static long STDCALL QueryDirection (
        IPin * This,
        /* [out] */ PIN_DIRECTION *pPinDir);

    static long STDCALL ConnectionMediaType ( 
        IPin * This,
        /* [out] */ AM_MEDIA_TYPE *pmt);
    
    static long STDCALL QueryPinInfo ( 
        IPin * This,
        /* [out] */ PIN_INFO *pInfo);
    
};


class CRemotePin2: public IPin
{
    CBaseFilter2* parent;
    static GUID interfaces[];
    DECLARE_IUNKNOWN(CRemotePin2)
public:
    CRemotePin2(CBaseFilter2* parent);
    ~CRemotePin2(){delete vt;}
    
    static long STDCALL QueryPinInfo ( 
        IPin * This,
        /* [out] */ PIN_INFO *pInfo);
};


#endif