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

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

/*	"output pin" - the one that connects to output of filter.     */

#ifndef OUTPUTPIN_H
#define OUTPUTPIN_H
#include "interfaces.h"
#include "guids.h"
#include "default.h"
#include "allocator.h"
class COutputPin: public IPin, public IMemInputPin
{
    int refcount;
    AM_MEDIA_TYPE type;
    IPin* remote;
    char** frame_pointer;
    long* frame_size_pointer;
    MemAllocator* pAllocator;
public:
    COutputPin(const AM_MEDIA_TYPE& vhdr);
    ~COutputPin();
    void SetFramePointer(char** z){frame_pointer=z;}
    void SetPointer2(char* p) { if(pAllocator) pAllocator->SetPointer(p); }
    void SetFrameSizePointer(long* z){frame_size_pointer=z;}
    void SetNewFormat(const AM_MEDIA_TYPE& a){type=a;}
    static HRESULT STDCALL QueryInterface(IUnknown* This, GUID* iid, void** ppv);
    static HRESULT STDCALL AddRef(IUnknown* This);
    static HRESULT STDCALL Release(IUnknown* This);

    static HRESULT STDCALL M_QueryInterface(IUnknown* This, GUID* iid, void** ppv);
    static HRESULT STDCALL M_AddRef(IUnknown* This);
    static HRESULT STDCALL M_Release(IUnknown* This);

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





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