How to enumerate DirectShow filters on your system

Browse source

Download devenum.exe

Last time I showed how to enumerate Media Foundation transforms.  This time, DirectShow filters.  Source and binaries attached.

There’s a bit of a gotcha to get this to build. It relies on qedit.h which last shipped in the Windows Vista SDK. I don’t know why it was removed from later SDKs. You can download it here: https://www.microsoft.com/en-us/download/confirmation.aspx?id=14477

The installer needs an old version of .NET which might not be enabled on your machine. If not, you will be prompted to enable it.

All you need is the header file, so you can uncheck everything else:

vista-sdk-setup

Once installed, the header will be in C:\Program Files\Microsoft SDKs\Windows\v6.0\Include

You may be tempted to dig up an old version of the DirectX SDK for dxtrans.h but it turns out the part of DirectShow that needs this isn’t necessary, so with some strategically placed forward declarations and a #pragma we can avoid it (see devenum.cpp)

In pseudocode:

GUID directshow_categories[] = { ... }; // static list
ICreateDevEnum = CoCreate(...);
for (each category in directshow_categories) {
    display the category name and GUID

    IEnumMoniker = ICreateDevEnum::CreateClassEnumerator(category);

    for (each IMoniker that IEnumMoniker finds) {
        IBindCtx = CreateBindCtx(...);
        IPropertyBag = IMoniker::BindToStorage(IBindCtx);

        pull the friendly name from the IPropertyBag and display it
    }
}

Output of the tool on my system:

>devenum.exe
-- Audio Capture Sources ({33D9A762-90C8-11D0-BD43-00A0C911CE86}) --
    Front Microphone (High Definiti
    Line In (High Definition Audio 
    Rear Microphone (High Definitio

-- Audio Compressors ({33D9A761-90C8-11D0-BD43-00A0C911CE86}) --
    WM Speech Encoder DMO
    WMAudio Encoder DMO
    IMA ADPCM
    PCM
    Microsoft ADPCM
    GSM 6.10
    CCITT A-Law
    CCITT u-Law
    MPEG Layer-3

-- Audio Renderers ({E0F158E1-CB04-11D0-BD4E-00A0C911CE86}) --
    Speakers (High Definition Audio
    Default DirectSound Device
    Default WaveOut Device
    DirectSound: Speakers (High Definition Audio Device)

-- Device Control Filters ({CC7BFB46-F175-11D1-A392-00E0291F3959}) --

-- DirectShow Filters ({083863F1-70DE-11D0-BD40-00A0C911CE86}) --
    WMAudio Decoder DMO
    WMAPro over S/PDIF DMO
    WMSpeech Decoder DMO
    MP3 Decoder DMO
    Mpeg4s Decoder DMO
    WMV Screen decoder DMO
    WMVideo Decoder DMO
    Mpeg43 Decoder DMO
    Mpeg4 Decoder DMO
    DV Muxer
    Color Space Converter
    WM ASF Reader
    AVI Splitter
    VGA 16 Color Ditherer
    SBE2MediaTypeProfile
    Microsoft DTV-DVD Video Decoder
    AC3 Parser Filter
    StreamBufferSink
    Microsoft TV Captions Decoder
    MJPEG Decompressor
    CBVA DMO wrapper filter
    MPEG-I Stream Splitter
    SAMI (CC) Parser
    VBI Codec
    MPEG-2 Splitter
    Closed Captions Analysis Filter
    SBE2FileScan
    Microsoft MPEG-2 Video Encoder
    Internal Script Command Renderer
    MPEG Audio Decoder
    DV Splitter
    Video Mixing Renderer 9
    Microsoft MPEG-2 Encoder
    ACM Wrapper
    Video Renderer
    MPEG-2 Video Stream Analyzer
    Line 21 Decoder
    Video Port Manager
    Video Renderer
    VPS Decoder
    WM ASF Writer
    VBI Surface Allocator
    File writer
    iTV Data Sink
    iTV Data Capture filter
    DVD Navigator
    Microsoft TV Subtitles Decoder
    Overlay Mixer2
    AVI Draw
    RDP DShow Redirection Filter
    Microsoft MPEG-2 Audio Encoder
    WST Pager
    MPEG-2 Demultiplexer
    DV Video Decoder
    SampleGrabber
    Null Renderer
    MPEG-2 Sections and Tables
    Microsoft AC3 Encoder
    StreamBufferSource
    Smart Tee
    Overlay Mixer
    AVI Decompressor
    NetBridge
    AVI/WAV File Source
    Wave Parser
    MIDI Parser
    Multi-file Parser
    File stream renderer
    Microsoft DTV-DVD Audio Decoder
    StreamBufferSink2
    AVI Mux
    Line 21 Decoder 2
    File Source (Async.)
    File Source (URL)
    Media Center Extender Encryption Filter
    AudioRecorder WAV Dest
    AudioRecorder Wave Form
    SoundRecorder Null Renderer
    Infinite Pin Tee Filter
    Enhanced Video Renderer
    BDA MPEG2 Transport Information Filter
    MPEG Video Decoder

-- External Renderers ({CC7BFB41-F175-11D1-A392-00E0291F3959}) --

-- Midi Renderers ({4EFE2452-168A-11D1-BC76-00C04FB9453B}) --
    Default MidiOut Device
    Microsoft GS Wavetable Synth

-- Video Capture Sources ({860BB310-5D01-11D0-BD3B-00A0C911CE86}) --

-- Video Compressors ({33D9A760-90C8-11D0-BD43-00A0C911CE86}) --
    WMVideo8 Encoder DMO
    WMVideo9 Encoder DMO
    MSScreen 9 encoder DMO
    DV Video Encoder
    MJPEG Compressor
    Cinepak Codec by Radius
    Intel IYUV codec
    Intel IYUV codec
    Microsoft RLE
    Microsoft Video 1

-- WDM Stream Decompression Devices ({2721AE20-7E70-11D0-A5D6-28DB04C10000}) --

-- WDM Streaming Capture Devices ({65E8773D-8F56-11D0-A3B9-00A0C9223196}) --
    HD Audio Microphone
    HD Audio Muxed capture

-- WDM Streaming Crossbar Devices ({A799A801-A46D-11D0-A18C-00A02401DCD4}) --

-- WDM Streaming Rendering Devices ({65E8773E-8F56-11D0-A3B9-00A0C9223196}) --
    HD Audio Speaker

-- WDM Streaming Tee/Splitter Devices ({0A4252A0-7E70-11D0-A5D6-28DB04C10000}) --
    Tee/Sink-to-Sink Converter

-- WDM Streaming TV Audio Devices ({A799A802-A46D-11D0-A18C-00A02401DCD4}) --

-- WDM Streaming TV Tuner Devices ({A799A800-A46D-11D0-A18C-00A02401DCD4}) --

-- WDM Streaming VBI Codecs ({07DAD660-22F1-11D1-A9F4-00C04FBBDE8F}) --

-- WDM Streaming Communication Transforms ({CF1DDA2C-9743-11D0-A3EE-00A0C9223196}) --
    Tee/Sink-to-Sink Converter

-- WDM Streaming Data Transforms ({2EB07EA0-7E70-11D0-A5D6-28DB04C10000}) --

-- WDM Streaming Interface Transforms ({CF1DDA2D-9743-11D0-A3EE-00A0C9223196}) --

-- WDM Streaming Mixer Devices ({AD809C00-7B88-11D0-A5D6-28DB04C10000}) --

-- BDA Network Providers ({71985F4B-1CA1-11D3-9CC8-00C04F7971E0}) --
    Microsoft ATSC Network Provider
    Microsoft DVBC Network Provider
    Microsoft DVBS Network Provider
    Microsoft DVBT Network Provider
    Microsoft Network Provider

-- BDA Receiver Components ({FD0A5AF4-B41D-11D2-9C95-00C04F7971E0}) --

-- BDA Rendering Filters ({71985F4A-1CA1-11D3-9CC8-00C04F7971E0}) --

-- BDA Source Filters ({71985F48-1CA1-11D3-9CC8-00C04F7971E0}) --

-- BDA Transport Information Renderers ({A2E3074F-6C3D-11D3-B653-00C04F79498E}) --
    BDA MPEG2 Transport Information Filter
    MPEG-2 Sections and Tables

-- Video Effects (1 input) ({CC7BFB42-F175-11D1-A392-00E0291F3959}) --
    Fade
    BasicImage
    Convolution
    Chroma
    Matrix
    Pixelate
    DxtAlphaSetter Class
    Text Label Class
    Scale
    Blur
    Glow
    ICMFilter
    Alpha
    DropShadow
    Wave
    MotionBlur
    Shadow
    Emboss
    Engrave
    Light

-- Video Effects (2 inputs) ({CC7BFB43-F175-11D1-A392-00E0291F3959}) --
    CrBlinds
    Iris
    RadialWipe
    Fade
    ZigZag
    RandomBars
    CrIris
    CrRadialWipe
    Spiral
    Pixelate
    Wheel
    Strips
    CrStretch
    Inset
    CrSlide
    CrInset
    Compositor
    Blinds
    CrSpiral
    Wipe
    CheckerBoard
    GradientWipe
    DxtCompositor Class
    CrBarn
    DxtKey Class
    Slide
    DxtJpeg Class
    CrZigzag
    Barn
    Stretch
    RandomDissolve

-- EncAPI Encoders ({7D22E920-5CA9-4787-8C2B-A6779BD11781}) --
    Microsoft MPEG-2 Audio Encoder
    Microsoft MPEG-2 Video Encoder

-- EncAPI Multiplexers ({236C9559-ADCE-4736-BF72-BAB34E392196}) --
    Microsoft MPEG-2 Encoder

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s