Windows Media Video 9 Codec
The Windows Media Video 9 encoder object is instantiated using the class identifier CLSID_CWMV9EncMediaObject. The decoder object is instantiated using the class identifier CLSID_CWMVDecMediaObject. The FOURCC for Windows Media Video 9 encoded content is "WMV3".
Main Profile
Some properties are listed as being supported by only the "main profile". Main profile encoding is achieved by setting the MFPKEY_DECODERCOMPLEXITYPROFILE property to "MP".
Encoder Properties
The following properties can be set on the encoder for the Windows Media Video 9 codec.
Property | Description |
MFPKEY_ASFOVERHEADPERFRAME | Specifies the overhead, in bytes per packet, required for the container used to store the compressed content. |
MFPKEY_AVGFRAMERATE | Specifies the average frame rate of video content, in frames per second. |
MFPKEY_BAVG | Specifies the buffer window, in milliseconds, of a constrained variable-bit-rate (VBR) stream at its average bit rate (specified by MFPKEY_RAVG). |
MFPKEY_BDELTAQP | Specifies the delta increase between the picture quantizer of the anchor frame and the picture quantizer of the B-frame. |
MFPKEY_BMAX | Specifies the buffer window, in milliseconds, of a constrained variable-bit-rate (VBR) stream at its peak bit rate (specified by MFPKEY_RMAX). |
MFPKEY_BUFFERFULLNESSINFIRSTBYTE | Specifies whether the encoded video bit stream contains a buffer fullness value with every key frame. |
MFPKEY_CODEDFRAMES | Specifies the number of video frames encoded by the codec. |
MFPKEY_CODEDNONZEROFRAMES | Specifies the number of video frames encoded by the codec that actually contain data. |
MFPKEY_COMPLEXITY | This property is superseded by MFPKEY_COMPLEXITYEX. |
MFPKEY_COMPLEXITYEX | Specifies the encoder algorithm complexity. |
MFPKEY_COMPRESSIONOPTIMIZATIONTYPE | Specifies the type of optimization to use for the Windows Media Video 9 Advanced Profile codec. |
MFPKEY_CRISP | Specifies a numeric representation of the tradeoff between motion smoothness and image quality of codec output. |
MFPKEY_DECODERCOMPLEXITYPROFILE | Specifies the device conformance template to which the encoded content conforms. |
MFPKEY_DECODERCOMPLEXITYREQUESTED | Specifies the device conformance template that you want to use for video encoding. |
MFPKEY_DENOISEOPTION | Specifies whether the codec will use the noise filter when encoding. |
MFPKEY_DESIRED_VBRQUALITY | Specifies the desired quality level for quality based (1-pass) variable-bit-rate (VBR) encoding. |
MFPKEY_DROPPEDFRAMES | Specifies the number of video frames dropped during encoding. |
MFPKEY_ENDOFPASS | Specifies the end of an encoding pass. |
MFPKEY_FORCEMEDIANSETTING | Specifies whether the codec should use median filtering during encoding. |
MFPKEY_FOURCC | Specifies the FOURCC identifying the encoder you want to use. |
MFPKEY_KEYDIST | Specifies the maximum time, in milliseconds, between key frames in the codec output. |
MFPKEY_LOOKAHEAD | Specifies the number of frames after the current frame that the codec will evaluate before encoding the current frame. |
MFPKEY_LOOPFILTER | Specifies whether the codec should use the in-loop deblocking filter during encoding. |
MFPKEY_MACROBLOCKMODECOSTMETHOD | Specifies the cost method used by the codec to determine which macroblock mode to use. |
MFPKEY_MOTIONMATCHMETHOD | Specifies the method to use for motion matching. |
MFPKEY_MOTIONSEARCHLEVEL | Specifies the types of video information that are used in motion search operations. |
MFPKEY_MOTIONSEARCHRANGE | Specifies the range used in motion searches. |
MFPKEY_NOISEEDGEREMOVAL | Specifies whether the codec should attempt to detect noisy frame edges and remove them. |
MFPKEY_NUMBFRAMES | Specifies the number of bidirectional predictive frames (B-frames). |
MFPKEY_NUMTHREADS | Specifies the number of threads that the codec will use for encoding. |
MFPKEY_PASSESRECOMMENDED | Specifies the maximum number of passes supported by the codec. |
MFPKEY_PASSESUSED | Specifies the number of passes that the codec will use to encode the content. |
MFPKEY_PERCEPTUALOPTLEVEL | Specifies whether the codec should use conservative perceptual optimization when encoding. |
MFPKEY_PRODUCEDUMMYFRAMES | Specifies whether the encoder produces dummy frame entries in the bit stream for duplicate frames. |
MFPKEY_RAVG | Specifies the average bit rate, in bits per second, used for 2-pass variable-bit-rate (VBR) encoding. |
MFPKEY_RMAX | Specifies the peak bit rate, in bits per second, used for constrained 2-pass variable-bit-rate (VBR). |
MFPKEY_TOTALFRAMES | Specifies the number of video frames passed to the codec. |
MFPKEY_VBRENABLED | Specifies whether the codec will use variable-bit-rate (VBR) encoding. |
MFPKEY_VBRQUALITY | Specifies the actual quality level for quality based (1-pass) variable-bit-rate (VBR) encoding. |
MFPKEY_VIDEOSCALING | Specifies whether the codec will use video scaling optimization. |
MFPKEY_ZEROBYTEFRAMES | Specifies the number of video frames that are skipped because they were duplicates of previous frames. |
Decoder Properties
The following properties can be set and read on the Windows Media Video 9 decoder.
Property | Description |
MFPKEY_DECODER_DEINTERLACING | Specifies whether the codec decodes interlaced video frames from the compressed stream as progressive frames. |
Property | Description |
MFPKEY_DXVA_ENABLED | Specifies whether the decoder will use DirectX video acceleration hardware, if available. |
Remarks
A video encoder or decoder object exposes the IMediaObject interface so that the object can be used as a DirectX Media Object (DMO), and the IMFTransform interface so that the object can be used as a Media Foundation Transform (MFT).
A video encoder or decoder behaves as a DMO or an MFT depending on which interfaces you obtain and which version of Windows is running. The following table shows the conditions under which a video encoder or decoder behaves as a DMO or an MFT.
Operating system | Encoder or decoder behavior |
Windows XP | A Windows Media video encoder or decoder always behaves as a DMO. |
Windows Vista and Windows 7 | By default, a Windows mMedia video encoder or decoder behaves as a DMO. If you obtain an IMFTransform interface on a video encoder or decoder, it behaves as an MFT. |
Requirements
Client: Requires Windows 7, Windows Vista, or Windows XP.
Header: Include wmcodecdsp.h.
Library: Use wmvencod.dll for the encoder or wmvdecod.dll for the decoder.
See Also
- Codec Objects
- Codec Implementation
- Media Subtype GUIDs
- Using the Windows Media Video 9 Codec