SolveigMM MKV Muxer filter
The MKV/WEBM muxer filter implemented as a DirectShow filter. It's purpouse is to multiplex input video/audo/subtitles into Matroska or WEB Matroska containers.
Filter Interfaces | IBaseFilter, IFileSinkFilter, IModuleConfig, IAMFilterMiscFlags, ISpecifyPropertyPages |
Input Pin Media Types | MEDIATYPE_Video, MEDIASUBTYPE_NULL MEDIATYPE_Audio, MEDIASUBTYPE_NULL |
Input Pin Interfaces | IPin, IMemInputPin |
Output Pin Media Types | MEDIATYPE_Stream, MEDIASUBTYPE_NULL |
Output Pin Interfaces | IPin, IMemInputPin |
Filter CLSID | CLSID_SMM_MKV_MUXER |
Property Page CLSID | Properties - {31741855-F982-40c0-A456-4C8BD7D132A7}, About - {222F030C-2F18-48e8-A8A1-D72FE1C89513} |
Executable | SMM_MKVMuxer.ax |
Merit | MERIT_DO_NOT_USE |
Filter Category | CLSID_LegacyAmFilterCategory |
Declared in | PropID_MatroskaMuxer.h |
Features
The filter supports MKV and WEBM as an output formats.
The filter's property page is a table shown on fig. 1. It includes the following control elements:
- DocType - output stream type (matroska or webm).
- A set of properties for each input stream(including Track's name and language and also enabling/disabling current track).
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 desired properties for each input streams and the type of output stream.
- Run the graph.
To use programmatically not using property page:
The following section describes the Parameter GUIDs declared in the PropID_MatroskaMuxer.h header file to be used for tuning the SolveigMM Matroska Muxer Filter by means of the IModuleConfig interface.
The following table provides an overview of the Parameter GUIDs of SolveigMM Matroska Muxer DirectShow Filter:
Parameter GUID | Value type | Description |
SMMKVM_MUXTIME | VT_I8 | Reads the current muxing time |
SMMKVM_TRACKSCOUNT | VT_I2 | Reads a number of input streams. |
SMMKV_DOCTYPE | VT_I4 | Specifies an output stream type. | SMMKVM_TRACKPROPS | VT_BYREF | VT_UI1 | Sets tracks properties. |
SMMKVM_MUXTIME
GUID:
{08AE82FB-A9CB-442c-A087-9C59FD2D7E07}
Description:
Used to retrieve current muxing time.
Type:
VT_I8 (llVal)
SMMKVM_TRACKSCOUNT
GUID:
{5A217E85-4359-4834-8B2A-F50A205C0E42}
Description:
Used to get the number of input streams.
Type:
in - VT_I2 (iVal)
SMMKV_DOCTYPE
GUID:
{90B2F4C2-0B5F-4834-92A9-8AC9F086E681}
Description:
Sets the type of output stream. A value of SMMKV_DOCTYPE_ENUM type.
Type:
VT_I4 (lVal)
SMMKV_DOCTYPE_ENUM Enumeration
enum SMMKV_DOCTYPE_ENUM
{
SMMKV_DOCTYPE_MATROSKA = 0,
SMMKV_DOCTYPE_WEBM = 1,
SMMKV_DOCTYPE_SIZE = 2
}
Elements:
SMMKV_DOCTYPE_MATROSKA
Stream type is Matroska.
SMMKV_DOCTYPE_WEBM
Stream type is WEB Matroska.
SMMKV_DOCTYPE_SIZE
Elements number.
SMMKVM_TRACKPROPS
GUID:
{CB2C2D6F-D2F5-49e3-A1B7-F947833DA2CD}
Description:
Used to set the desired tracks properties. Pointer to a TRACK_PROPS structure is used as a parameter.
Type:
VT_BYREF | VT_UI1 (pbVal)
TRACK_PROPS Structure
struct TrackProps {
int number;
bool bEnable;
bool bDefault;
bool bForced;
BSTR language;
BSTR name;
int track_type;
} TRACK_PROPS;
Members:
number
Track's number.
bEnable
Is this track enabled.
bDefault
Is this a default track.
bForced
Is this a forced track.
language
Track's language.
name
Track's name.
track_type
Track's type (read-only value).