SolveigMM ASF Multiplexer filter
The ASF multiplexer filter implemented as a DirectShow renderer filter (file writer). It performs multiplexing input streams to an ASF file and writing output file to a specified path.
Filter Interfaces | IBaseFilter, IModuleConfig, ISpecifyPropertyPages, IFileSinkFilter, IMediaPosition, IMediaSeeking, IWMProfile |
Input Pin Media Types | MEDIATYPE_Video, MEDIASUBTYPE_NULL MEDIATYPE_Audio, MEDIASUBTYPE_NULL |
Input Pin Interfaces | IPin, IMemInputPin, IModuleConfig |
Output Pin Media Types | MEDIATYPE_Stream, MEDIASUBTYPE_NULL |
Output Pin Interfaces | IPin, IMemInputPin |
Filter CLSID | CLSID_SMASFMuxFilter |
Property Page CLSID | CLSID_SMASFMuxSettings, CLSID_SMASFMuxStatistic |
Executable | SMM_ASFMuxer.ax |
Merit | MERIT_DO_NOT_USE |
Filter Category | CLSID_LegacyAmFilterCategory |
Declared in | PropID_ASFMuxer.h |
Features
The filter's property page is shown on fig. 1 and includes the following control elements:
- Index ASF checkbox - an option to append index to output file.
- Treat input video as H264 check box. This should be enabled when you deal with AVC/H264 video streams. Also it is possible to change video stream's fourCC.
- PlayReady conformance checkbox - produced stream would be PlayReady conformant.
Usage
NOTE: All changes must be applied (using either APPLY button in Graph Editor or Apply method of IPropertyPage interface) to take place, the default values are used otherwise. To use the filter manually:
- Add filter to a graph.
- Build the graph.
- Set necessary properties.
- Run the graph.
To use programmatically not using property page:
The following section describes the Parameter GUIDs declared in the PropID_ASFMuxer.h header file to be used for tuning the ASF Multiplexer DirectShow Filter by means of the IModuleConfig interface.
The following table provides an overview of the Parameter GUIDs of ASF Multiplexer DirectShow Filter:
Parameter GUID | Value type | Description |
SMASFMux_Flags | VT_UI4 | Sets/Gets multiplexing parameters |
SMASFMux_ResetFlags | VT_UI4 | Resets specified parameters. |
SMASFMux_VideoFOURCC | VT_UI4 | Specifies custom fourCC for video stream. |
SMASFMux_BFramesMode | VT_I2 | Sets the mode to handle B-frames in video. |
SMASFMux_IWMHeaderInfo3Ptr | VT_BYREF | VT_UI1 | Sets the IWMHeaderInfo3 interface. |
SMASFMux_ApplyProfile | - | Applies settings and makes a profile. |
SMASFMux_Language | VT_BSTR | Set the full path to of the log file. |
SMAT_LogPath | VT_BSTR | Set the full path to of the log file. |
SMASFMux_Statistics | in - VT_BYREF | VT_UI1 out - VT_I4 |
Reads the processing statistics. |
SMASFMux_CurrentSize | VT_BYREF | VT_UI1 | Reads the processing statistics of whole file. |
SMAT_TrimList
GUID:
{51977F10-62C9-46ec-9350-D3CE65E1F34B}
Description:
Used to set/retrieve the trimming intervals list. It should be a combination of SMM_ASFMuxFlags.
Type:
VT_UI4 (ulVal)
SMM_ASFMuxFlags Enumeration
enum SMM_ASFMuxFlags
{
SMM_ASFMuxFlags_WriteIndex = 0x2,
SMM_ASFMuxFlags_InAVC = 0x8,
SMM_ASFMuxFlags_CountSize = 0x10,
SMM_ASFMuxFlags_PlayReady = 0x20
}
Elements:
SMM_ASFMuxFlags_WriteIndex
Add index to output file.
SMM_ASFMuxFlags_InAVC
An input video stream is AVC/H264.
SMM_ASFMuxFlags_CountSize
Filter doesn't write output file to disk.
SMM_ASFMuxFlags_PlayReady
Filter produce PlayReady conformant output file.
SMASFMux_ResetFlags
GUID:
{613F3C29-68BF-4468-BCBE-8F309BB3B45E}
Description:
Used to reset specified flags.Should be a combination of SMM_ASFMuxFlags.
Type:
VT_UI4 (ulVal)
SMASFMux_VideoFOURCC
GUID:
{AC1A641A-D8B1-48cc-8161-142B3224A697}
Description:
Set custom fourCC for video stream.
Type:
VT_UI4 (ulVal)
SMASFMux_BFramesMode
GUID:
{39F65152-4B2E-4486-AB2E-2211090ABC79}
Description:
Method of B-frames muxltiplexing. This method is used only when SMM_ASFMuxFlags_InAVC or SMM_ASFMuxFlags_PlayReady flag pecified. Should be a member of SMM_BFramesMode.
Type:
VT_I2 (iVal)
enum SMM_BFramesMode
{
SMM_BFrames_USE_DUE = 0,
SMM_BFrames_Join = 1
}
Elements:
SMM_BFrames_USE_DUE
B-frames' times are stored in Data Unit Extension.
SMM_BFrames_Join
B-frames are combined with other frames.
SMASFMux_IWMHeaderInfo3Ptr
GUID:
{AC1A641A-D8B1-48cc-8261-142B3224A695}
Description:
Sets IWMHeaderInfo3 interface.
Type:
VT_BYREF | VT_UI1 (pbVal)
SMASFMux_ApplyProfile
GUID:
{534D4153-464D-7578-5F41-70706C795072}
Description:
Applies settings to a profile. After this call it is possible to get an IWMProfile Interface(See Windows Media Format SDK Reference for details on interface).
SMASFMux_Language
GUID:
{52A82089-2764-49c3-B288-B85C68FC164E}
Description:
Applies the language to exact pin. Query the desired pin for the IModuleConfig interface a then use this GUID to set the language ID. For details see the SMM Mux ASF sample application and Windows Media Format SDK Reference.
Type:
VT_BSTR (bstrVal)
SMAT_LogPath
GUID:
{1F02279E-ECBF-4b22-9D9B-D595DEB6B463}
Description:
Set the full path to of the log file.
Type:
VT_BSTR (bstrVal)
SMASFMux_Statistics
GUID:
{E41A5247-ADEE-4133-82C9-98300459C929}
Description:
Reads the processing statistics of video and audio streams. An array of 2 WM_WRITER_STATISTICS
structures is used as an input parameter. The first element - a structure describing Video stream statistics and the second is for Audio. See Windows Media Format SDK reference for details on structure.
Type:
VT_BYREF | VT_UI1 (pbVal)
SMASFMux_CurrentSize
GUID:
{6B6C20F5-22E5-40ac-B760-8F01C7423E15}
Description:
Reads the processing statistics of the file in general. A pointer to WM_WRITER_STATISTICS
structure is used as an input parameter. See Windows Media Format SDK reference for details on structure.
Type:
VT_BYREF | VT_UI1 (pbVal)