AVI Splitter Filter

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The AVI Splitter Filter is used for playback of AVI files. It accepts data in AVI format and splits it into its constituent streams for further processing and/or rendering.

Label Value
Filter Interfaces IAMMediaContent, IBaseFilter, IPersistMediaPropertyBag
Input Pin Media Types MEDIATYPE_Stream, MEDIASUBTYPE_Avi
Input Pin Interfaces IPin, IQualityControl
Output Pin Media Types Typically MEDIATYPE_Video or MEDIATYPE_Audio. The exact type depends on the content of the file, whether the file is compressed, and what codec was used.
Output Pin Interfaces IMediaPosition, IMediaSeeking, IPin, IPropertyBag, IQualityControl
Filter CLSID CLSID_AviSplitter
Property Page CLSID No property page.
Executable quartz.dll
Merit MERIT_NORMAL
Filter Category CLSID_LegacyAmFilterCategory

 

Remarks

This filter is typically connected to the Async File Source filter on its input pin. It can connect to any filter whose output pin supports IAsyncReader and offers the correct media type to the AVI Splitter filter's input pin.

The output pins on the AVI Splitter support the IPropertyBag::Read method for reading properties from individual streams. Currently, the following property is defined.

Property Description
name Returns the name of the stream, taken from the 'strn' chunk in the AVI file. If this chunk is absent, the Read method returns E_INVALIDARG.

 

The IPropertyBag::Write method returns E_FAIL. The AVI Mux filter supports IPropertyBag::Write for saving stream properties into an AVI file.

The AVI Splitter does not allow downstream filters to use their own allocator.

The interleaving duration in the file determines how much memory the AVI Splitter will allocate to process it. A file that is interleaved in one second chunks will require much more memory to process than a file whose interleave duration is set to one or two frames. On modern computers, this is generally not an issue unless you are running multiple instances of the AVI Splitter simultaneously.

Seeking

If the file contains a video stream, the AVI Splitter supports seeking by frame number. To enable frame-based seeking, call IMediaSeeking::SetTimeFormat on the Filter Graph Manager with the value TIME_FORMAT_FRAME.

If the file contains an audio stream, the AVI Splitter supports seeking by sample number. To enable sample-based seeking, call SetTimeFormat on the Filter Graph Manager with the value TIME_FORMAT_SAMPLE.

In both cases, the output pin for that stream must be connected to a renderer filter.

DirectShow Filters