LEADTOOLS Multimedia SDKs offer DirectShow filters that significantly lower the complexity of code needed to play, capture, convert, stream, and process audio and video data. LEADTOOLS Multimedia SDKs provide interfaces for .NET (C# & VB) and C/C++ to add DirectShow technology to your development project without dealing with the complexity of programming directly with Microsoft's DirectShow API.
Overview of LEADTOOLS SDK DirectShow Filters Technology
- Create DirectShow applications that compress, decompress, process, stream, and enhance audio and video data
Utilize and control many DirectShow filters
- Use LEADTOOLS proprietary DirectShow Filters and any third-party filter installed on the machine
- Includes .NET (C# & VB) and C DLL libraries for 32 and 64-bit development
What is DirectShow
Microsoft DirectShow is an extensible, filter-based framework based on the Microsoft Windows Component Object Model (COM) that provides a common interface for media across many of Microsoft's programming languages. It can render or record media files on-demand by the user or developer. DirectShow also contains DirectX plug-ins for audio signal processing and DirectX Video Acceleration for accelerated video playback. Most video-related Windows applications, such as Microsoft's Windows Media Player, Winamp, and Windows Movie Maker, use DirectShow to play, process, stream, and save multimedia content.
Since the entire concept of rendering, converting, and capturing files in DirectShow in based on filters and filter graphs, it is important to understand the role of each filter.
Source filter — This is usually the first filter in the graph. It is responsible for reading the input data. The data may come from a file on disk, a network, or any other method.
Demultiplexer — This filter is responsible for splitting the media streams. It is usually connected to the source filter. For example, the filter input might be the actual file or network stream, while the output would be separate audio and video streams.
Audio/Video Decoder — These filters handle the actual decoding or decompression. They do not demultiplex, so data should be demultiplexed before it is passed to the decoder. Therefore, they are usually connected to the demultiplexer output. For example, the video decoder input might be a compressed video stream such as MPEG-2, and the output could be raw video data.
Renderer — These filters are used to actually render data. Data could be audio, video, or both. For example, when playing a media file with both audio and video, a video renderer would handle displaying the video on the screen, and an audio renderer would handle directing the audio data to the sound device. The input of the renderer is usually uncompressed data coming from the decoder.
Audio/Video Encoder — These filters are used to compress data, audio, or video. The input is usually uncompressed audio or video data, and the output is the compressed version of the same data.
Multiplexer — This filter is responsible for joining media streams. Input is usually compressed data from an audio/video encoder. The output is a single stream containing both audio and video data.
Sink Filter — These filters are usually the last filters in the graph. They can handle writing the data to disk to create a media file, or they can send the data to some other location, such as over a network.
Audio/Video Processor — These are usually custom filters used to perform some type of data processing or generate some type of event. LEAD has created many audio and video processors, such as the Video Resize Filter, used to resize a video stream. Usually, these filters only handle uncompressed data, so they would be inserted in the filter graph before the encoder or after the decoder.