annotate loader/dshow/outputpin.c @ 1230:41f9ef2451ae

Document a few possible compile errors on solaris when using non GNU tools.
author jkeil
date Tue, 26 Jun 2001 09:04:31 +0000
parents 269780d31b51
children da26060c81ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
1
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
2 #include <cstdio>
1063
269780d31b51 added missing 'using namespace std;' for gcc 3.0
arpi_esp
parents: 713
diff changeset
3 #include <cstring>
269780d31b51 added missing 'using namespace std;' for gcc 3.0
arpi_esp
parents: 713
diff changeset
4 //#include <string>
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
5
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
6 #include "outputpin.h"
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
7 #include "allocator.h"
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
8 #include "iunk.h"
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
9
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
10 #define E_NOTIMPL 0x80004001
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
11 /*
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
12 An object beyond interface IEnumMediaTypes.
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
13 Returned by COutputPin through call IPin::EnumMediaTypes().
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
14 */
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
15
1063
269780d31b51 added missing 'using namespace std;' for gcc 3.0
arpi_esp
parents: 713
diff changeset
16 using namespace std;
269780d31b51 added missing 'using namespace std;' for gcc 3.0
arpi_esp
parents: 713
diff changeset
17
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
18 class CEnumMediaTypes: public IEnumMediaTypes
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
19 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
20 AM_MEDIA_TYPE type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
21 static GUID interfaces[];
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
22 DECLARE_IUNKNOWN(CEnumMediaTypes)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
23 public:
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
24 CEnumMediaTypes(const AM_MEDIA_TYPE&);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
25 ~CEnumMediaTypes(){delete vt;}
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
26 static HRESULT STDCALL Next (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
27 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
28 /* [in] */ ULONG cMediaTypes,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
29 /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
30 /* [out] */ ULONG *pcFetched);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
31
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
32 static HRESULT STDCALL Skip (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
33 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
34 /* [in] */ ULONG cMediaTypes);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
35
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
36 static HRESULT STDCALL Reset (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
37 IEnumMediaTypes * This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
38
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
39 static HRESULT STDCALL Clone (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
40 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
41 /* [out] */ IEnumMediaTypes **ppEnum);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
42
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
43 };
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
44 GUID CEnumMediaTypes::interfaces[]=
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
45 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
46 IID_IUnknown,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
47 IID_IEnumMediaTypes,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
48 };
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
49 IMPLEMENT_IUNKNOWN(CEnumMediaTypes)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
50 CEnumMediaTypes::CEnumMediaTypes(const AM_MEDIA_TYPE& type)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
51 :refcount(1)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
52 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
53 this->type=type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
54 vt=new IEnumMediaTypes_vt;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
55 vt->QueryInterface = QueryInterface;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
56 vt->AddRef = AddRef;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
57 vt->Release = Release;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
58 vt->Next = Next;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
59 vt->Skip = Skip;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
60 vt->Reset = Reset;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
61 vt->Clone = Clone;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
62 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
63
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
64 HRESULT STDCALL CEnumMediaTypes::Next (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
65 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
66 /* [in] */ ULONG cMediaTypes,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
67 /* [size_is][out] */ AM_MEDIA_TYPE **ppMediaTypes,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
68 /* [out] */ ULONG *pcFetched)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
69 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
70 AM_MEDIA_TYPE& type=((CEnumMediaTypes*)This)->type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
71 Debug printf("CEnumMediaTypes::Next() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
72 if(!ppMediaTypes)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
73 if(!pcFetched && (cMediaTypes!=1))return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
74 if(cMediaTypes<=0)return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
75
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
76 if(pcFetched)*pcFetched=1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
77 ppMediaTypes[0]=(AM_MEDIA_TYPE *)CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
78 memcpy(*ppMediaTypes, &type, sizeof(AM_MEDIA_TYPE));
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
79 if(ppMediaTypes[0]->pbFormat)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
80 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
81 ppMediaTypes[0]->pbFormat=(char *)CoTaskMemAlloc(ppMediaTypes[0]->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
82 memcpy(ppMediaTypes[0]->pbFormat, type.pbFormat, ppMediaTypes[0]->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
83 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
84 if(cMediaTypes==1)return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
85 return 1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
86 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
87 /*
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
88 I expect that these methods are unused.
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
89 */
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
90 HRESULT STDCALL CEnumMediaTypes::Skip (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
91 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
92 /* [in] */ ULONG cMediaTypes)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
93 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
94 Debug printf("CEnumMediaTypes::Skip() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
95 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
96 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
97
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
98 HRESULT STDCALL CEnumMediaTypes::Reset (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
99 IEnumMediaTypes * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
100 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
101 Debug printf("CEnumMediaTypes::Reset() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
102 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
103 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
104
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
105 HRESULT STDCALL CEnumMediaTypes::Clone (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
106 IEnumMediaTypes * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
107 /* [out] */ IEnumMediaTypes **ppEnum)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
108 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
109 Debug printf("CEnumMediaTypes::Clone() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
110 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
111 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
112
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
113 /*
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
114 Implementation of output pin object.
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
115 */
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
116
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
117 // Constructor
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
118
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
119 COutputPin::COutputPin(const AM_MEDIA_TYPE& vh) :refcount(1), type(vh), remote(0), frame_pointer(0), frame_size_pointer(0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
120 {
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
121 IPin::vt = new IPin_vt;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
122 IPin::vt->QueryInterface = QueryInterface;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
123 IPin::vt->AddRef = AddRef;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
124 IPin::vt->Release = Release;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
125 IPin::vt->Connect = Connect;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
126 IPin::vt->ReceiveConnection = ReceiveConnection;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
127 IPin::vt->Disconnect=Disconnect;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
128 IPin::vt->ConnectedTo = ConnectedTo;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
129 IPin::vt->ConnectionMediaType = ConnectionMediaType;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
130 IPin::vt->QueryPinInfo = QueryPinInfo;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
131 IPin::vt->QueryDirection = QueryDirection;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
132 IPin::vt->QueryId = QueryId;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
133 IPin::vt->QueryAccept = QueryAccept;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
134 IPin::vt->EnumMediaTypes = EnumMediaTypes;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
135 IPin::vt->QueryInternalConnections = QueryInternalConnections;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
136 IPin::vt->EndOfStream = EndOfStream;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
137 IPin::vt->BeginFlush = BeginFlush;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
138 IPin::vt->EndFlush = EndFlush;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
139 IPin::vt->NewSegment = NewSegment;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
140
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
141 IMemInputPin::vt=new IMemInputPin_vt;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
142 IMemInputPin::vt->QueryInterface = M_QueryInterface;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
143 IMemInputPin::vt->AddRef = M_AddRef;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
144 IMemInputPin::vt->Release = M_Release;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
145 IMemInputPin::vt->GetAllocator = GetAllocator;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
146 IMemInputPin::vt->NotifyAllocator = NotifyAllocator;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
147 IMemInputPin::vt->GetAllocatorRequirements = GetAllocatorRequirements;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
148 IMemInputPin::vt->Receive = Receive;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
149 IMemInputPin::vt->ReceiveMultiple = ReceiveMultiple;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
150 IMemInputPin::vt->ReceiveCanBlock = ReceiveCanBlock;
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
151
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
152 pAllocator = 0;
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
153 frame_pointer = 0;
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
154 }
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
155
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
156 COutputPin::~COutputPin()
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
157 {
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
158 delete IPin::vt;
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
159 delete IMemInputPin::vt;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
160 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
161
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
162 // IPin->IUnknown methods
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
163
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
164 HRESULT STDCALL COutputPin::QueryInterface(IUnknown* This, GUID* iid, void** ppv)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
165 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
166 Debug printf("COutputPin::QueryInterface() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
167 if(!ppv)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
168 if(!memcmp(iid, &IID_IUnknown, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
169 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
170 *ppv=(void*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
171 This->vt->AddRef(This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
172 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
173 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
174 if(!memcmp(iid, &IID_IMemInputPin, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
175 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
176 *ppv=(void*)(This+1);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
177 This->vt->AddRef(This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
178 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
179 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
180
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
181 Debug printf("Unknown interface : %08x-%04x-%04x-%02x%02x-" \
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
182 "%02x%02x%02x%02x%02x%02x\n",
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
183 iid->f1, iid->f2, iid->f3,
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
184 (unsigned char)iid->f4[1], (unsigned char)iid->f4[0],
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
185 (unsigned char)iid->f4[2], (unsigned char)iid->f4[3],
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
186 (unsigned char)iid->f4[4], (unsigned char)iid->f4[5],
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
187 (unsigned char)iid->f4[6], (unsigned char)iid->f4[7]);
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
188 return 0x80004002;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
189 }
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
190
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
191 HRESULT STDCALL COutputPin::AddRef(IUnknown* This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
192 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
193 Debug printf("COutputPin::AddRef() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
194 ((COutputPin*)This)->refcount++;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
195 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
196 }
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
197
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
198 HRESULT STDCALL COutputPin::Release(IUnknown* This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
199 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
200 Debug printf("COutputPin::Release() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
201 if(--((COutputPin*)This)->refcount==0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
202 delete (COutputPin*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
203 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
204 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
205
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
206 // IPin methods
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
207
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
208 HRESULT STDCALL COutputPin::Connect (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
209 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
210 /* [in] */ IPin *pReceivePin,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
211 /* [in] */ /* const */ AM_MEDIA_TYPE *pmt)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
212 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
213 Debug printf("COutputPin::Connect() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
214 /*
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
215 *pmt=((COutputPin*)This)->type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
216 if(pmt->cbFormat>0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
217 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
218 pmt->pbFormat=CoTaskMemAlloc(pmt->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
219 memcpy(pmt->pbFormat, ((COutputPin*)This)->type.pbFormat, pmt->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
220 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
221 */
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
222 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
223 // if I put return 0; here, it crashes
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
224 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
225
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
226 HRESULT STDCALL COutputPin::ReceiveConnection (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
227 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
228 /* [in] */ IPin *pConnector,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
229 /* [in] */ const AM_MEDIA_TYPE *pmt)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
230 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
231 Debug printf("COutputPin::ReceiveConnection() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
232 ((COutputPin*)This)->remote=pConnector;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
233 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
234 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
235
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
236 HRESULT STDCALL COutputPin::Disconnect (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
237 IPin * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
238 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
239 Debug printf("COutputPin::Disconnect() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
240 return 1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
241 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
242
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
243
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
244 HRESULT STDCALL COutputPin::ConnectedTo (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
245 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
246 /* [out] */ IPin **pPin)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
247 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
248 Debug printf("COutputPin::ConnectedTo() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
249 if(!pPin)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
250 *pPin=((COutputPin*)This)->remote;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
251 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
252 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
253
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
254
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
255
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
256 HRESULT STDCALL COutputPin::ConnectionMediaType (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
257 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
258 /* [out] */ AM_MEDIA_TYPE *pmt)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
259 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
260 Debug printf("CInputPin::ConnectionMediaType() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
261 if(!pmt)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
262 *pmt=((COutputPin*)This)->type;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
263 if(pmt->cbFormat>0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
264 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
265 pmt->pbFormat=(char *)CoTaskMemAlloc(pmt->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
266 memcpy(pmt->pbFormat, ((COutputPin*)This)->type.pbFormat, pmt->cbFormat);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
267 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
268 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
269 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
270
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
271 HRESULT STDCALL COutputPin::QueryPinInfo (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
272 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
273 /* [out] */ PIN_INFO *pInfo)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
274 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
275 Debug printf("COutputPin::QueryPinInfo() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
276 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
277 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
278
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
279
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
280 HRESULT STDCALL COutputPin::QueryDirection (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
281 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
282 /* [out] */ PIN_DIRECTION *pPinDir)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
283 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
284 Debug printf("COutputPin::QueryDirection() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
285 if(!pPinDir)return -1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
286 *pPinDir=PINDIR_INPUT;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
287 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
288 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
289
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
290
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
291 HRESULT STDCALL COutputPin::QueryId (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
292 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
293 /* [out] */ LPWSTR *Id)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
294 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
295 Debug printf("COutputPin::QueryId() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
296 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
297 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
298
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
299 HRESULT STDCALL COutputPin::QueryAccept (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
300 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
301 /* [in] */ const AM_MEDIA_TYPE *pmt)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
302 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
303 Debug printf("COutputPin::QueryAccept() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
304 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
305 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
306
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
307
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
308 HRESULT STDCALL COutputPin::EnumMediaTypes (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
309 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
310 /* [out] */ IEnumMediaTypes **ppEnum)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
311 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
312 Debug printf("COutputPin::EnumMediaTypes() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
313 if(!ppEnum)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
314 *ppEnum=new CEnumMediaTypes(((COutputPin*)This)->type);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
315 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
316 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
317
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
318
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
319 HRESULT STDCALL COutputPin::QueryInternalConnections (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
320 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
321 /* [out] */ IPin **apPin,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
322 /* [out][in] */ ULONG *nPin)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
323 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
324 Debug printf("COutputPin::QueryInternalConnections() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
325 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
326 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
327
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
328 HRESULT STDCALL COutputPin::EndOfStream (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
329 IPin * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
330 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
331 Debug printf("COutputPin::EndOfStream() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
332 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
333 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
334
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
335
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
336 HRESULT STDCALL COutputPin::BeginFlush (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
337 IPin * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
338 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
339 Debug printf("COutputPin::BeginFlush() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
340 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
341 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
342
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
343
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
344 HRESULT STDCALL COutputPin::EndFlush (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
345 IPin * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
346 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
347 Debug printf("COutputPin::EndFlush() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
348 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
349 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
350
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
351 HRESULT STDCALL COutputPin::NewSegment (
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
352 IPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
353 /* [in] */ REFERENCE_TIME tStart,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
354 /* [in] */ REFERENCE_TIME tStop,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
355 /* [in] */ double dRate)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
356 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
357 Debug printf("COutputPin::NewSegment(%ld,%ld,%f) called\n",tStart,tStop,dRate);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
358 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
359 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
360
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
361
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
362
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
363
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
364
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
365
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
366
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
367
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
368
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
369
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
370
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
371
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
372
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
373
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
374
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
375
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
376
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
377
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
378 // IMemInputPin->IUnknown methods
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
379
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
380 HRESULT STDCALL COutputPin::M_QueryInterface(IUnknown* This, GUID* iid, void** ppv)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
381 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
382 Debug printf("COutputPin::QueryInterface() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
383 if(!ppv)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
384 if(!memcmp(iid, &IID_IUnknown, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
385 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
386 COutputPin* ptr=(COutputPin*)(This-1);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
387 *ppv=(void*)ptr;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
388 AddRef((IUnknown*)ptr);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
389 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
390 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
391 /* if(!memcmp(iid, &IID_IPin, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
392 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
393 COutputPin* ptr=(COutputPin*)(This-1);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
394 *ppv=(void*)ptr;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
395 AddRef((IUnknown*)ptr);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
396 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
397 }*/
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
398 if(!memcmp(iid, &IID_IMemInputPin, 16))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
399 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
400 *ppv=(void*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
401 This->vt->AddRef(This);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
402 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
403 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
404 Debug printf("Unknown interface : %08x-%04x-%04x-%02x%02x-" \
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
405 "%02x%02x%02x%02x%02x%02x\n",
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
406 iid->f1, iid->f2, iid->f3,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
407 (unsigned char)iid->f4[1], (unsigned char)iid->f4[0],
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
408 (unsigned char)iid->f4[2],(unsigned char)iid->f4[3],(unsigned char)iid->f4[4],
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
409 (unsigned char)iid->f4[5],(unsigned char)iid->f4[6],(unsigned char)iid->f4[7]);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
410 return 0x80004002;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
411 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
412 HRESULT STDCALL COutputPin::M_AddRef(IUnknown* This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
413 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
414 Debug printf("COutputPin::AddRef() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
415 ((COutputPin*)(This-1))->refcount++;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
416 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
417 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
418 HRESULT STDCALL COutputPin::M_Release(IUnknown* This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
419 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
420 Debug printf("COutputPin::Release() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
421 if(--((COutputPin*)(This-1))->refcount==0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
422 delete (COutputPin*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
423 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
424 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
425
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
426
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
427
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
428
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
429 // IMemInputPin methods
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
430
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
431 HRESULT STDCALL COutputPin::GetAllocator(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
432 IMemInputPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
433 /* [out] */ IMemAllocator **ppAllocator)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
434 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
435 Debug printf("COutputPin::GetAllocator(%x,%x) called\n",This->vt,ppAllocator);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
436 *ppAllocator=new MemAllocator;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
437 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
438 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
439
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
440 HRESULT STDCALL COutputPin::NotifyAllocator(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
441 IMemInputPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
442 /* [in] */ IMemAllocator *pAllocator,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
443 /* [in] */ int bReadOnly)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
444 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
445 Debug printf("COutputPin::NotifyAllocator() called\n");
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
446 COutputPin* pPin=(COutputPin*)This;
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
447 pPin->pAllocator=(MemAllocator*)pAllocator;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
448 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
449 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
450
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
451 HRESULT STDCALL COutputPin::GetAllocatorRequirements(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
452 IMemInputPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
453 /* [out] */ ALLOCATOR_PROPERTIES *pProps)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
454 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
455 Debug printf("COutputPin::GetAllocatorRequirements() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
456 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
457 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
458
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
459 HRESULT STDCALL COutputPin::Receive(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
460 IMemInputPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
461 /* [in] */ IMediaSample *pSample)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
462 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
463 Debug printf("COutputPin::Receive() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
464 COutputPin& me=*(COutputPin*)This;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
465 if(!pSample)return 0x80004003;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
466 char* pointer;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
467 if(pSample->vt->GetPointer(pSample, (BYTE **)&pointer))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
468 return -1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
469 int len=pSample->vt->GetActualDataLength(pSample);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
470 if(len==0)len=pSample->vt->GetSize(pSample);//for iv50
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
471 //if(me.frame_pointer)memcpy(me.frame_pointer, pointer, len);
713
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
472 if(me.frame_pointer)
9355b2ae634e avifile-0.6-CVS merge
arpi_esp
parents: 168
diff changeset
473 *me.frame_pointer=pointer;
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
474 if(me.frame_size_pointer)*me.frame_size_pointer=len;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
475 /*
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
476 FILE* file=fopen("./uncompr.bmp", "wb");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
477 char head[14]={0x42, 0x4D, 0x36, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00};
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
478 *(int*)(&head[2])=len+0x36;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
479 fwrite(head, 14, 1, file);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
480 fwrite(&((VIDEOINFOHEADER*)me.type.pbFormat)->bmiHeader, sizeof(BITMAPINFOHEADER), 1, file);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
481 fwrite(pointer, len, 1, file);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
482 fclose(file);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
483 */
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
484 // pSample->vt->Release((IUnknown*)pSample);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
485 return 0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
486 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
487
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
488 HRESULT STDCALL COutputPin::ReceiveMultiple(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
489 IMemInputPin * This,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
490 /* [size_is][in] */ IMediaSample **pSamples,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
491 /* [in] */ long nSamples,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
492 /* [out] */ long *nSamplesProcessed)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
493 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
494 Debug printf("COutputPin::ReceiveMultiple() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
495 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
496 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
497
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
498 HRESULT STDCALL COutputPin::ReceiveCanBlock(
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
499 IMemInputPin * This)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
500 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
501 Debug printf("COutputPin::ReceiveCanBlock() called\n");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
502 return E_NOTIMPL;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
503 }