summaryrefslogtreecommitdiffstats
path: root/loader/dshow/outputpin.h
blob: f1cc36ee5ed9ca3efcb4eb21db8c91008f92f4c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*	"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"

class COutputPin: public IPin, public IMemInputPin
{
    int refcount;
    AM_MEDIA_TYPE type;
    IPin* remote;
    char** frame_pointer;
    long* frame_size_pointer;
public:
    COutputPin(const AM_MEDIA_TYPE& vhdr);
    ~COutputPin(){delete IPin::vt; delete IMemInputPin::vt;}
    void SetFramePointer(char** z){frame_pointer=z;}
    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