225{
226 do
227 {
230 (!pOutputQueue->bBatchExact ||
231 list_count(&pOutputQueue->SampleList) >= pOutputQueue->lBatchSize ||
232 pOutputQueue->bSendAnyway
233 )
234 )
235 {
236 while (!
list_empty(&pOutputQueue->SampleList))
237 {
240 LONG nSamplesProcessed;
243
244
247 nSamples = 0;
249 {
252 ppSamples[nSamples++] = qev->
pSample;
253 else
254 break;
257 }
258
259 if (pOutputQueue->pInputPin->pin.pConnectedTo && pOutputQueue->pInputPin->pMemInputPin)
260 {
261 IMemInputPin_AddRef(pOutputQueue->pInputPin->pMemInputPin);
263 IMemInputPin_ReceiveMultiple(pOutputQueue->pInputPin->pMemInputPin, ppSamples, nSamples, &nSamplesProcessed);
265 IMemInputPin_Release(pOutputQueue->pInputPin->pMemInputPin);
266 }
267 for (
i = 0;
i < nSamples;
i++)
268 IMediaSample_Release(ppSamples[
i]);
270
271
273 {
276 {
278 IPin_ConnectedTo(&pOutputQueue->pInputPin->pin.IPin_iface, &ppin);
279 if (ppin)
280 {
281 IPin_EndOfStream(ppin);
282 IPin_Release(ppin);
283 }
284 }
286 break;
287 else
288 FIXME(
"Unhandled Event type %i\n",qev->
type);
291 }
292 }
293 pOutputQueue->bSendAnyway =
FALSE;
294 }
297 }
298 while (!pOutputQueue->bTerminate);
300}
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)