MPEG-1 Stream 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.]

This filter splits an MPEG-1 system stream into its component audio and video streams.

Label Value
Filter Interfaces IAMMediaContent, IAMStreamSelect, IBaseFilter
Input Pin Media Types Major type: MEDIATYPE_Stream
See MPEG-1 Media Types
Input Pin Interfaces IMemInputPin, IPin, IQualityControl
Output Pin Media Types Major type: MEDIATYPE_Audio or MEDIATYPE_Video
See MPEG-1 Media Types
Output Pin Interfaces IPin, IMediaSeeking
Filter CLSID CLSID_MPEG1Splitter
Property Page CLSID No property page
Executable quartz.dll
Filter Category CLSID_LegacyAmFilterCategory



This file supports pull mode via IAsyncReader only; it does not support push mode.

Because MPEG-1 content is not indexed, seeking can be very approximate. It is usually good for a fixed bitrate MPEG-1 system stream (which is usually hardware generated for video CD).

The filter supports the IAMMediaContent interface for retrieving ID3 metadata.

Not all MPEG samples have time stamps. The lack of a time stamp on an MPEG sample is not an error. For filter developers, this means that you should not return an error code from your input pin's Receive method if IMediaSample::GetTime fails. If Receive returns any value other than S_OK, it will cause the splitter to stop sending samples.

If the file contains a video stream, the MPEG-1 Stream 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.

DirectShow Filters