232{
234 {
236 };
238 {
239 {
241 .lpMediaType = video_renderer_inputs,
243 },
244 };
245 static const REGFILTER2 video_renderer_default_reg =
246 {
248 .dwMerit = MERIT_PREFERRED + 1,
250 .rgPins2 = video_renderer_pins,
251 };
253 {
255 .dwMerit = MERIT_PREFERRED,
257 .rgPins2 = video_renderer_pins,
258 };
259
261 {
263 };
265 {
266 {
268 .lpMediaType = vmr9_filter_inputs,
270 },
271 };
273 {
277 .rgPins2 = vmr9_filter_pins,
278 };
279
280 static const REGPINTYPES avi_decompressor_inputs[] =
281 {
283 };
284 static const REGPINTYPES avi_decompressor_outputs[] =
285 {
287 };
289 {
290 {
292 .lpMediaType = avi_decompressor_inputs,
293 },
294 {
295 .nMediaTypes =
ARRAY_SIZE(avi_decompressor_outputs),
296 .lpMediaType = avi_decompressor_outputs,
298 },
299 };
300 static const REGFILTER2 avi_decompressor_reg =
301 {
303 .dwMerit = MERIT_NORMAL - 16,
305 .rgPins2 = avi_decompressor_pins,
306 };
307
309 {
311 };
313 {
314 {
316 .lpMediaType = async_reader_outputs,
318 },
319 };
321 {
323 .dwMerit = MERIT_UNLIKELY,
325 .rgPins2 = async_reader_pins,
326 };
327
329 {
331 };
333 {
335 };
337 {
338 {
340 .lpMediaType = acm_wrapper_inputs,
341 },
342 {
343 .nMediaTypes =
ARRAY_SIZE(acm_wrapper_outputs),
344 .lpMediaType = acm_wrapper_outputs,
346 },
347 };
349 {
351 .dwMerit = MERIT_NORMAL - 16,
353 .rgPins2 = acm_wrapper_pins,
354 };
355
357 {
358 {&MEDIATYPE_Stream, &MEDIASUBTYPE_MPEG1Audio},
359 {&MEDIATYPE_Stream, &MEDIASUBTYPE_MPEG1Video},
360 {&MEDIATYPE_Stream, &MEDIASUBTYPE_MPEG1System},
361 {&MEDIATYPE_Stream, &MEDIASUBTYPE_MPEG1VideoCD},
362 };
363 static const REGPINTYPES mpeg_splitter_audio_outputs[] =
364 {
365 {&MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1Packet},
366 {&MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1AudioPayload},
367 };
368 static const REGPINTYPES mpeg_splitter_video_outputs[] =
369 {
370 {&MEDIATYPE_Video, &MEDIASUBTYPE_MPEG1Packet},
371 {&MEDIATYPE_Video, &MEDIASUBTYPE_MPEG1Payload},
372 };
374 {
375 {
377 .lpMediaType = mpeg_splitter_inputs,
378 },
379 {
381 .nMediaTypes =
ARRAY_SIZE(mpeg_splitter_audio_outputs),
382 .lpMediaType = mpeg_splitter_audio_outputs,
383 },
384 {
386 .nMediaTypes =
ARRAY_SIZE(mpeg_splitter_video_outputs),
387 .lpMediaType = mpeg_splitter_video_outputs,
388 },
389 };
391 {
393 .dwMerit = MERIT_NORMAL,
395 .rgPins2 = mpeg_splitter_pins,
396 };
397
399 {
400 {&MEDIATYPE_Stream, &MEDIASUBTYPE_Avi},
401 };
403 {
405 };
407 {
408 {
410 .lpMediaType = avi_splitter_inputs,
411 },
412 {
414 .nMediaTypes =
ARRAY_SIZE(avi_splitter_outputs),
415 .lpMediaType = avi_splitter_outputs,
416 },
417 };
419 {
421 .dwMerit = MERIT_NORMAL,
423 .rgPins2 = avi_splitter_pins,
424 };
425
427 {
428 {&MEDIATYPE_Stream, &MEDIASUBTYPE_WAVE},
429 {&MEDIATYPE_Stream, &MEDIASUBTYPE_AU},
430 {&MEDIATYPE_Stream, &MEDIASUBTYPE_AIFF},
431 };
433 {
435 };
437 {
438 {
440 .lpMediaType = wave_parser_inputs,
441 },
442 {
444 .nMediaTypes =
ARRAY_SIZE(wave_parser_outputs),
445 .lpMediaType = wave_parser_outputs,
446 },
447 };
449 {
451 .dwMerit = MERIT_UNLIKELY,
453 .rgPins2 = wave_parser_pins,
454 };
455
456 static const REGPINTYPES mpeg_audio_codec_inputs[] =
457 {
458 {&MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1Packet},
459 {&MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1Payload},
460 {&MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1AudioPayload},
461 };
462 static const REGPINTYPES mpeg_audio_codec_outputs[] =
463 {
464 {&MEDIATYPE_Audio, &MEDIASUBTYPE_PCM},
465 };
467 {
468 {
470 .lpMediaType = mpeg_audio_codec_inputs,
471 },
472 {
474 .nMediaTypes =
ARRAY_SIZE(mpeg_audio_codec_outputs),
475 .lpMediaType = mpeg_audio_codec_outputs,
476 },
477 };
478 static const REGFILTER2 mpeg_audio_codec_reg =
479 {
481 .dwMerit = 0x03680001,
483 .rgPins2 = mpeg_audio_codec_pins,
484 };
485
486 static const REGPINTYPES mpeg_video_codec_inputs[] =
487 {
488 {&MEDIATYPE_Video, &MEDIASUBTYPE_MPEG1Packet},
489 {&MEDIATYPE_Video, &MEDIASUBTYPE_MPEG1Payload},
490 };
491 static const REGPINTYPES mpeg_video_codec_outputs[] =
492 {
494 };
496 {
497 {
499 .lpMediaType = mpeg_video_codec_inputs,
500 },
501 {
503 .nMediaTypes =
ARRAY_SIZE(mpeg_video_codec_outputs),
504 .lpMediaType = mpeg_video_codec_outputs,
505 },
506 };
507 static const REGFILTER2 mpeg_video_codec_reg =
508 {
510 .dwMerit = 0x40000001,
512 .rgPins2 = mpeg_video_codec_pins,
513 };
514
517
519
522
524 &IID_IFilterMapper2, (void **)&mapper)))
526
527 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_VideoRenderer,
L"Video Renderer",
NULL,
528 &CLSID_LegacyAmFilterCategory,
NULL, &video_renderer_reg)))
529 goto done;
530 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_VideoRendererDefault,
L"Video Renderer",
NULL,
531 &CLSID_LegacyAmFilterCategory,
NULL, &video_renderer_default_reg)))
532 goto done;
533 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_VideoMixingRenderer9,
L"Video Mixing Renderer 9",
NULL,
534 &CLSID_LegacyAmFilterCategory,
NULL, &vmr9_filter_reg)))
535 goto done;
536 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_AVIDec,
L"AVI Decompressor",
NULL,
537 &CLSID_LegacyAmFilterCategory,
NULL, &avi_decompressor_reg)))
538 goto done;
539 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_AsyncReader,
L"File Source (Async.)",
NULL,
540 &CLSID_LegacyAmFilterCategory,
NULL, &async_reader_reg)))
541 goto done;
542 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_ACMWrapper,
L"ACM Wrapper",
NULL,
543 &CLSID_LegacyAmFilterCategory,
NULL, &acm_wrapper_reg)))
544 goto done;
545 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_AviSplitter,
L"AVI Splitter",
NULL,
547 goto done;
548 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_MPEG1Splitter,
L"MPEG-I Stream Splitter",
NULL,
550 goto done;
551 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_WAVEParser,
L"Wave Parser",
NULL,
553 goto done;
554 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_CMpegAudioCodec,
L"MPEG Audio Decoder",
NULL,
555 NULL,
NULL, &mpeg_audio_codec_reg)))
556 goto done;
557 if (
FAILED(
hr = IFilterMapper2_RegisterFilter(mapper, &CLSID_CMpegVideoCodec,
L"MPEG Video Decoder",
NULL,
558 NULL,
NULL, &mpeg_video_codec_reg)))
559 goto done;
560
561done:
562 IFilterMapper2_Release(mapper);
564}
HRESULT WINAPI QUARTZ_DllRegisterServer(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)