301{
312
314
318 {
321 return;
322 }
323
325 readbytes = 12;
329 {
330 skip(
"%s is not an avi riff file, not doing the avi splitter test\n",
333 return;
334 }
335
336 hr = IUnknown_QueryInterface(
pAviSplitter, &IID_IFileSourceFilter,
337 (void **)&pfile);
339 "Avi splitter returns unexpected error: %08x\n",
hr);
340 if (pfile)
341 IFileSourceFilter_Release(pfile);
343
346 ok(
hr ==
S_OK,
"Could not create asynchronous reader: %08x\n",
hr);
348 goto fail;
349
350 hr = IBaseFilter_QueryInterface(preader, &IID_IFileSourceFilter,
351 (void**)&pfile);
352 ok(
hr ==
S_OK,
"Could not get IFileSourceFilter: %08x\n",
hr);
354 goto fail;
355
357 (void**)&pavi);
358 ok(
hr ==
S_OK,
"Could not get base filter: %08x\n",
hr);
360 goto fail;
361
364 {
365 trace(
"Could not load file: %08x\n",
hr);
366 goto fail;
367 }
368
369 hr = IBaseFilter_EnumPins(preader, &enumpins);
372 goto fail;
373
374 hr = IEnumPins_Next(enumpins, 1, &filepin,
NULL);
377 goto fail;
378
379 IEnumPins_Release(enumpins);
381
382 hr = IBaseFilter_EnumPins(pavi, &enumpins);
385 goto fail;
386
387 hr = IEnumPins_Next(enumpins, 1, &avipin,
NULL);
390 goto fail;
391
392 hr = IPin_Connect(filepin, avipin,
NULL);
393 ok(
hr ==
S_OK,
"Could not connect: %08x\n",
hr);
395 goto fail;
396
397 IPin_Release(avipin);
399
400 IEnumPins_Reset(enumpins);
401
402
403
404
405
406 while (IEnumPins_Next(enumpins, 1, &avipin,
NULL) ==
S_OK)
407 {
408 IPin_QueryDirection(avipin, &
dir);
410 {
411
415
419 {
420 win_skip(
"Null renderer not registered, skipping\n");
421 break;
422 }
423 ok(
hr ==
S_OK,
"Could not create null renderer: %08x\n",
hr);
424
425 hr = IBaseFilter_EnumPins(pnull, &nullenum);
426 ok(
hr ==
S_OK,
"Failed to enum pins, hr %#x.\n",
hr);
427 hr = IEnumPins_Next(nullenum, 1, &nullpin,
NULL);
428 ok(
hr ==
S_OK,
"Failed to get next pin, hr %#x.\n",
hr);
429 IEnumPins_Release(nullenum);
430 IPin_QueryDirection(nullpin, &
dir);
431
432 hr = IPin_Connect(avipin, nullpin,
NULL);
433 ok(
hr ==
S_OK,
"Failed to connect output pin: %08x\n",
hr);
434 IPin_Release(nullpin);
436 {
437 IBaseFilter_Release(pnull);
438 break;
439 }
440 IBaseFilter_Run(pnull, 0);
441 }
442
443 IPin_Release(avipin);
445 }
446
447 if (avipin)
448 IPin_Release(avipin);
450
452 goto fail2;
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468 IBaseFilter_Run(preader, 0);
469 IBaseFilter_Run(pavi, 0);
471
472 IBaseFilter_Pause(pavi);
473 IBaseFilter_Pause(preader);
474 IBaseFilter_Stop(pavi);
475 IBaseFilter_Stop(preader);
478
479fail2:
480 IEnumPins_Reset(enumpins);
481 while (IEnumPins_Next(enumpins, 1, &avipin,
NULL) ==
S_OK)
482 {
484
485 IPin_QueryDirection(avipin, &
dir);
486 IPin_ConnectedTo(avipin, &to);
487 if (to)
488 {
489 IPin_Release(to);
490
492 {
494
495 hr = IPin_QueryPinInfo(to, &
info);
496 ok(
hr ==
S_OK,
"Failed to query pin info, hr %#x.\n",
hr);
497
498
499
500
501 IBaseFilter_Stop(
info.pFilter);
502 IPin_Disconnect(to);
503 IPin_Disconnect(avipin);
504 IBaseFilter_Release(
info.pFilter);
505 IBaseFilter_Release(
info.pFilter);
506 }
507 else
508 {
509 IPin_Disconnect(to);
510 IPin_Disconnect(avipin);
511 }
512 }
513 IPin_Release(avipin);
515 }
516
517fail:
519 skip(
"Prerequisites not matched, skipping remainder of test\n");
520 if (enumpins)
521 IEnumPins_Release(enumpins);
522
523 if (avipin)
524 IPin_Release(avipin);
525 if (filepin)
526 {
528
529 IPin_ConnectedTo(filepin, &to);
530 if (to)
531 {
532 IPin_Disconnect(filepin);
533 IPin_Disconnect(to);
534 }
535 IPin_Release(filepin);
536 }
537
538 if (preader)
539 IBaseFilter_Release(preader);
540 if (pavi)
541 IBaseFilter_Release(pavi);
542 if (pfile)
543 IFileSourceFilter_Release(pfile);
544
546}
int strcmp(const char *String1, const char *String2)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
static WCHAR * load_resource(const WCHAR *name)
static const WCHAR avifile[]
enum _PinDirection PIN_DIRECTION
#define ReadFile(a, b, c, d, e)
#define REGDB_E_CLASSNOTREG