WM ASF Reader Filter

Microsoft DirectShow 9.0

WM ASF Reader Filter

The WM ASF Reader is a wrapper filter for the reader object provided with the Windows Media Format SDK and is the recommended source filter for file playback of Windows Media-based content and content created with any of the Microsoft MPEG-4 Encoder DMOs.

Filter interfaces IBaseFilter, IFileSourceFilter, IAMExtendedSeeking, IServiceProvider

In addition, the filter exposes the following Windows Media Format SDK interfaces: IWMHeaderInfo, IWMReaderAdvanced, IWMReaderAdvanced2, IWMDRMReader (through IServiceProvider)

Input pin media types Not applicable.
Input pin interfaces Not applicable.
Output pin media types MEDIATYPE_Video, MEDIATYPE_Audio, MEDIATYPE_ScriptCommand, MEDIATYPE_FileTransfer
Output pin interfaces IMediaSeeking, IAMWMBufferPass, IServiceProvider

In addition, the pins expose the following Windows Media Format SDK interfaces: IWMStreamConfig2 (through IServiceProvider)

Filter CLSID CLSID_WMAsfReader
Property Page CLSID No property page.
Executable Qasf.dll
Filter Category CLSID_LegacyAmFilterCategory


When given the name of an ASF file or a URL, the WM ASF Reader reads the compressed content, parses the compressed streams, and exposes an output pin for each one. This filter connects downstream to audio and/or video codecs filters, which do the decompression. Seeking is supported if the ASF file is seekable. The ASF Reader time stamps the samples before sending them downstream, but it does not modify the time stamps in any way.

Playback at speeds other than 1.0 (as specified in IMediaSeeking::SetRate) is not supported.

When the Windows Media Format SDK runtime sends WMT_STATUS messages to the WM ASF Writer filter, the filter forwards any messages related to DRM license acquisition as EC_WMT_EVENT events. For more information, see DRM Support in QASF.

The WM ASF Reader partially implements the IWMReaderAdvanced and IWMReaderAdvanced2 interfaces in order to give applications access to the informational methods on the reader object. The filter's implementation simply passes the calls through to the interface on the reader object. The streaming methods are not implemented because the filter must have complete control over the streaming process. The following methods are implemented:

  • IWMReaderAdvanced::GetStatistics
  • IWMReaderAdvanced::SetClientInfo
  • IWMReaderAdvanced2::GetBufferProgress
  • IWMReaderAdvanced2::GetDownloadProgress
  • IWMReaderAdvanced2::GetPlayMode
  • IWMReaderAdvanced2::GetProtocolName
  • IWMReaderAdvanced2::SetLogClientID
  • IWMReaderAdvanced2::SetPlayMode

See Also