Creating Custom Effects and Transitions in Windows Movie Maker

 

Josh Cohen

Mike Matsel

Peter Turcan

Microsoft Corporation

January 2005

 

Applies to:

   Microsoft® Windows® Movie Maker 2.0

   Microsoft Windows Movie Maker 2.1

 

Summary: Microsoft Windows Movie Maker enables programmers to add their own custom special effects and transitions to the Windows Movie Maker interface. These effects can be created with an XML file that modifies the supplied effects or transitions, or can be built from scratch using C++ and the Windows Media Transforms supplied by the Microsoft DirectX Media SDK.

 

Contents

Introduction
Creating Windows Movie Maker Effects and Transitions in XML
   Reading the XML File
   Making Your Own XML File
   Effect and Transition Objects Provided by Windows Movie Maker
      Bars Transition
      Checkerboard Transition
      DirectX Media Wipe Transition
      Dissolve Transition
      Fade Transition
      Iris Transition
      Pixelate Transition
      SMPTE Wipe Transitions
      Wheel Transition
      WMTFX Transitions and Effects
      Blur Effect
      Brightness Effect
      Fade Effect
      Film Aging Effect
      Filter Effects
      Mirror and Grayscale Effects
      Pixelate Effect
      Speed Effects
Adding Custom Icons to Windows Movie Maker
Creating New Transition and Effect Objects
   Overview of the Sample Code
   Getting Started on a New Effect
   Getting Started on a New Transition
   Passing Parameters to Your DLL
   Debugging Your DLL
   Changing the Blue Adjust Effect to Purple Adjust
Glossary
For More Information

Introduction

Microsoft® Windows® Movie Maker 2.0 and later versions enable programmers to load their own custom effects and transitions into the Windows Movie Maker interface. These effects or transitions can be as simple as a modification of an existing effect or transition, or as complex as a custom-coded Microsoft DirectX® Transform object. This article includes three main topics about creating your own effects or transitions. In order from simplest to most complex, they are:

  • Creating Windows Movie Maker Effects and Transitions in XML   This is a fairly simple task that requires only a text editor and a basic understanding of XML.

Note To do this with Movie Maker 2.1, you must have administrator privileges on your computer.

  • Adding Custom Icons to Windows Movie Maker   This is a slightly more complex topic that requires the knowledge of how to compile a C++ project using Microsoft Visual Studio®, and the ability to use any graphics software needed to make custom icons.

  • Creating New Transition and Effect Objects   This requires knowledge of COM and ATL programming, DirectX Transforms, and Microsoft Direct3D® architecture. Additionally, it requires you to have the DirectX Media 6.0 SDK and the headers for the DirectX 7.0 SDK installed. (The DirectX Media SDK was not included in DirectX 7.0.) Both Visual Studio .NET and the DirectX Media SDK installed from the location given at the end of this document include the DirectX 7.0 headers, but neither includes the documentation. The DirectX 7.0 SDK documentation is only included with the complete installation of the DirectX 7.0 SDK (which can be installed using the link at the end of this document). If you want to experiment with making new DirectX Transform Objects, you can download a compressed file that includes sample code for several new effects and transitions at the Microsoft Web site.    

To do the tasks described in all these topics, you must have Windows Movie Maker 2.0 or later and the Microsoft Windows XP Home Edition or Windows XP Professional Edition operating system installed on your computer. Creating custom icons or new transition or effect objects also requires Visual Studio. Sources of additional information, and the installation locations of the DirectX Media SDK and the DirectX 7.0 SDK, can be found in the For More Information section at the end of this paper.

Creating Windows Movie Maker Effects and Transitions in XML

Windows Movie Maker reads a private XML file on startup that specifies all the effects and transitions to load, and the values of each object's parameters. This XML file cannot be viewed or changed; however you can create your own XML file that loads the objects you choose, using your own parameters, and displays them with your custom names.

Windows Movie Maker stores its built-in effects and transitions as COM objects inside one of several DLLs provided with the program. Each COM object represents one transition or effect, and is identified by a globally unique identifier (GUID). One DLL can contain several COM objects. Each object has zero or more parameters, such as color or brightness, that can be set for that effect or transition. The XML file specifies which objects to load, and sets values for any number of those objects' parameters. An object can be loaded more than once, using different parameters, to create different effects or transitions based on the same object. For example, the slow-motion and fast-motion effects are the same object, differing only in the value of the speed parameter passed in. After learning how these effects and transitions are addressed in the XML file, you will be able to make your own effects and transitions from the COM objects provided.

Note For Movie Maker 2.1, you must have administrator privileges on your computer.

This section explains:

  • How to create your own XML file,
  • Required and optional XML tags you can use in your custom XML file,
  • Objects and parameters available for creating effects and transitions, and
  • Private XML code that Windows Movie Maker uses to load its standard effects and transitions, so that you can copy and modify them quickly and easily.

Reading the XML File

The following code shows a segment of a Windows Movie Maker private XML file that describes one transition (Flip Right) and one effect (Sepia):

<TransitionsAndEffects Version="1.0">
   <Transitions>
      <TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
         <Transition nameID="62800" iconid="91" comment="Flip, right">
            <Param name="InternalName" value="Simple3D" />
            <Param name="RevolveCamera" value="true" />
            <Param name="ShowAFront" value="true" />
            <Param name="ShowABack" value="false" />
            <Param name="ShowBFront" value="false" />
            <Param name="ShowBBack" value="true" />
         </Transition>
         ...
      </TransitionDLL>
      ...
   </Transitions>
   <Effects>
      <EffectDLL guid="{B4DC8DD9-2CC1-4081-9B2B-20D7030234EF}">
         <Effect nameID="62863" iconid="25" comment="Sepia tone">
            <Param name="InternalName" value="Standard" />
            <Param name="Desaturate" value="true" />
            <Param name="Red" value="0.10" />
            <Param name="Magenta" value="0.09" />
            <Param name="Yellow" value="0.25" />
            <Param name="contrast" value="1.0" />
         </Effect>
         ...
      </EffectDLL>
      ...
   </Effects>
</TransitionsAndEffects>

The following table explains the tags and attributes in the preceding code. Transitions and effects use mostly the same tags. Where the tags differ, the table indicates the difference.

Element Attributes Description
TransitionsAndEffects   The boundary tag for the whole XML file.
  Version A required field that should be set to "1.0".
Transitions
or
Effects
  This tag bounds the group of all transitions or the group of all effects. Use the appropriate tag for a transition or effect.
TransitionDLL
or
EffectDLL
  This tag bounds a single effect or transition COM object, identified by a GUID. It can hold one or more custom effects or transitions. Use the appropriate tag for a transition or effect.
  guid Lists the GUID defining the transition or effect COM object. (This GUID is actually the ClassID of a COM object that implements the DirectShow IDXEffect interface in the underlying code.) The values provided are given in Effect and Transition Objects Provided by Windows Movie Maker.
Transition
or
Effect
  This is the boundary tag for an individual transition or effect using the transition or effect COM object specified by the TransitionDLL or EffectDLL tag. One COM object can contain several transitions or effects. (A DLL file can contain several COM objects, although the name of the DLL is not needed for the COM objects that Windows Movie Maker provides.) Use the appropriate tag for a transition or effect.
  nameID

or

name

Do not use nameID; this is the internal identifier that Windows Movie Maker uses for the transition. Instead, when creating your own file, substitute the name attribute as shown here:

<Effect name="My New Effect" iconid="25" comment="My cool new effect">

The value you assign will be displayed by Windows Movie Maker. If a name is not unique, the effect or transition shown in the preview may not be the proper one; however, Windows Movie Maker will apply the correct effect or transition to the actual edited video.

  iconID Identifies the icon that Windows Movie Maker displays for the transition. In custom icons, this is a zero-based number indicating which icon in a bitmap strip to use. You can also use one of the existing Windows Movie Maker icons by choosing a number from 1 to approximately 90. For more information on adding custom icons, see Adding Custom Icons to Windows Movie Maker.
  comment Information ignored by Windows Movie Maker. The comment attribute in the standard tags usually shows the display name for an effect or transition, although it does not always match exactly.
Param   Tag holding a parameter in the object that you can set. You can have as many Param tags as the containing object has parameters.
  Name The name of the parameter to set.
  Value The value, in quotation marks, to assign to the parameter.

Making Your Own XML File

To make your own XML file for Windows Movie Maker, you must create (or use an existing) folder called AddOnTFX in one of two places, depending on which version of Movie Maker you have.

For Movie Maker 2.0:

  • Create or use the folder <Movie Maker installation path>\<decimal LCID>\AddOnTFX, where <Movie Maker installation path> is where you installed Movie Maker, and <decimal LCID> is the decimal locale ID of the language version installed (1033 is the locale ID for English).

    So, for example, you might use C:\Program Files\Movie Maker\1033\AddOnTFX for an English version of Movie Maker. This location makes your effects usable by everyone, but to create the folder in this location, you must have administrator privileges on your computer.

  • Create or use the folder at <OS Drive>\Documents and Settings\<username>\Application Data\Microsoft\Movie Maker\AddOnTFX, where <OS Drive> is the disk drive where Windows is installed, and <username> is your logon name. The user always has permission to add the new folder here, but the created effects can be used only by the user logged on as username.

For Movie Maker 2.1:

In Movie Maker 2.1, you must have administrator privileges to install custom effects. Use one or both of these locations to install your XML (and any custom DLL) file:

  • <Movie Maker installation path>\MUI\<hexadecimal LCID>\AddOnTFX, where <Movie Maker installation path> is where you installed Movie Maker, and <hexadecimal LCID> is the hexadecimal locale ID of the language version installed (0409 is the hexadecimal locale ID for English).

    So, for example, you might use C:\Program Files\Movie Maker\0409\AddOnTFX for an English language version of Movie Maker. This location makes your effects usable by everyone, but to create the folder in this location, you must have administrator privileges on your computer.

  • <Movie Maker installation path>\shared\AddOnTFX. So, for example, on your computer, this folder path might be C:\Program Files\Movie Maker\Shared\AddOnTFX. This makes effects available to everyone in every locale, but to create a folder in this location you must have administrator privileges on your computer.

Windows Movie Maker checks both paths (for either version), and loads all transitions and effects it finds in both locations. If you plan to have localized versions of your transitions, be sure to use the locale ID folder rather than the local user or shared folder.

Inside the AddOnTFX folder you've created, create a new file with an .xml extension in Notepad or any other XML authoring software. There are no naming restrictions on the file, other than that it must have an .xml extension. After creating your new XML file, you can paste in the previous code sample (See Reading the XML File.) and make a few changes (such as changing the nameID attribute to name, adding your own name, and removing the "..."). The following code block shows a modified version of the previous sample. This is a complete XML file that creates a custom variation of the Flip Right transition and the Sepia effect. This new code uses new icons taken from the standard Windows Movie Maker icon set:

<TransitionsAndEffects Version="1.0" >
   <Transitions>
      <TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
         <Transition name="My cool transition" iconid="88">
            <Param name="InternalName" value="Simple3D" />
            <Param name="RevolveCamera" value="true" />
            <Param name="ShowAFront" value="true" />
            <Param name="ShowABack" value="false" />
            <Param name="InitialScaleA" value="smaller" />
            <Param name="FinalScaleA" value="bigger" />
            <Param name="ShowBFront" value="false" />
            <Param name="ShowBBack" value="true" />
         </Transition>
      </TransitionDLL>
   </Transitions>
   <Effects>
      <EffectDLL guid="{B4DC8DD9-2CC1-4081-9B2B-20D7030234EF}">
         <Effect name="My Yellow, Rotated Effect" iconid="20" comment="Yellow, turned 3/4">
            <Param name="InternalName" value="Standard" />
            <Param name="Desaturate" value="true" />
            <Param name="Red" value="0.0" />
            <Param name="Magenta" value="0.09" />
            <Param name="Yellow" value="0.75" />
            <Param name="contrast" value="1.0" />
            <Param name="Rotate2DA" value="270.0" />
         </Effect>
      </EffectDLL>
   </Effects>
</TransitionsAndEffects>

When creating your custom XML file, be aware of the following two precautions:

  • If your XML file is not well formed, if the GUID you use is incorrect, or there is some other problem with your XML file, Windows Movie Maker will probably not load any effects or transitions from that file and will not tell you that the file was not loaded. If an effect or transition you create does not appear in the Windows Movie Maker interface, search your XML file for errors.
  • Windows Movie Maker will load XML files only on startup. Any changes you make to the XML file when Windows Movie Maker is running will not take effect until you close and restart Windows Movie Maker.

Effect and Transition Objects Provided by Windows Movie Maker

The two tables in this topic list all the base transition and effect objects that Windows Movie Maker provides. Each transition or effect object may include one or more parameters that can be changed, or even subclasses with their own parameters. You do not have to set all parameters for any effect or transition you create, because every parameter has a default value.

Transitions and effects are shown in separate tables. You cannot use a transition object as an effect, or an effect object as a transition. So, for example, the following code would not work because the Pixelate object is an effect, not a transition:

<TransitionDLL guid="{4CCEA634-FBE0-11D1-906A-00C04FD9189D}" comment="Pixelate">
   <Transition nameID="62818" iconid="19" comment="Pixelate">
      <Param name="MaxSquare" value="25" />
   </Transition>
</TransitionDLL>

Details about all transitions and effects are given in topics that follow the tables, and the tables contain links to those topics. Each topic includes the XML code that Windows Movie Maker uses to load the effect or transition supplied with Windows Movie Maker. The names used in the following tables are arbitrary; the names that Windows Movie Maker displays are similar to those assigned to the comment attribute of the EffectDLL tag in the XML code shown.

Transitions

Name GUID Description
Bars 2E7700B7-27C4-437F-9FBF-1E8BE2817566 Merges the first video into the second video in horizontal segments.
Checkerboard B3EE7802-8224-4787-A1EA-F0DE16DEABD3 Merges the first video into the second video by fields of squares.
DirectX Media Wipe AF279B30-86EB-11D1-81BF-0000F87557DB A variety of custom DirectX Media wipes.
Dissolve F7F4A1B6-8E87-452F-A2D7-3077F508DBC0 Dissolves one video segment into another in discrete dots (as opposed to a fade, which causes the videos to seamlessly exchange).
Fade 16B280C5-EE70-11D1-9066-00C04FD9189D Fades the first video into the second.
Iris 049F2CE6-D996-4721-897A-DB15CE9EB73D Splits the first video into four segments that move out from the center diagonally.
Pixelate 4CCEA634-FBE0-11D1-906A-00C04FD9189D Causes the first video to coarsen and then resolve into the second video.
SMPTE Wipe DE75D012-7A65-11D2-8CEA-00A0C9441E20 A variety of standard SMPTE transitions. See Microsoft DirectShow® documentation for more details.
Wheel 5AE1DAE0-1461-11D2-A484-00C04F8EFB69 Provides a spinning wheel-spoke wipe from the first video to the second video.
WMTFX transitions C63344D8-70D3-4032-9B32-7A3CAD5091A5 A variety of transitions and effects.

Effects

Name GUID Description
Blur 7312498D-E87A-11D1-81E0-0000F87557DB Blurs an image.
Brightness 5A20FD6F-F8FE-4a22-9EE7-307D72D09E6E Modifies the brightness of a segment of video.
Fade EC85D8F1-1C4E-46e4-A748-7AA04E7C0496 Causes a clip to fade in to or out from a solid color of your choice.
Film Aging ADEADEB8-E54B-11d1-9A72-0000F875EADE Introduces graininess, scratches, and other visual artifacts that make it appear as if a film is old.
Filter E673DCF2-C316-4c6f-AA96-4E4DC6DC291E Provides a variety of visual effects, such as neon glow, sponge, and emboss.
Mirror and Grayscale 16B280C8-EE70-11D1-9066-00C04FD9189D Causes an image to flip horizontally or change from color to grayscale, creating a black-and-white image.
Pixelate 4CCEA634-FBE0-11D1-906A-00C04FD9189D Causes an image to coarsen into squares of a single, solid color for each square, representing the average color of the original pixels from that area.
Speed 00000000-0000-0000-0000-000000000000 Null GUID used only for slowing down or speeding up.
WMTFX effects B4DC8DD9-2CC1-4081-9B2B-20D7030234EF Provides a variety of transitions and effects.

Bars Transition

The Bars transition merges the first video into the second video in horizontal segments. It takes no parameters. The following XML code shows the Bars transition included in Windows Movie Maker:

<TransitionDLL guid="{2E7700B7-27C4-437F-9FBF-1E8BE2817566}">
   <Transition nameID="62817" iconid="37" comment="Bars"/>
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Checkerboard Transition

The Checkerboard transition merges the first video into the second video by fields of squares. It takes no parameters. The following XML code shows the Checkerboard transition included in Windows Movie Maker:

<TransitionDLL guid="{B3EE7802-8224-4787-A1EA-F0DE16DEABD3}">
   <Transition nameID="62815" iconid="4" comment="Checkerboard, Across" />
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

DirectX Media Wipe Transition

The DirectX Media Wipe transition provides wipes based on the DirectX Media Wipe. DirectX Media Wipes take the following parameters.

Parameter Type Default Range Description
GradientSize float 0.25 0.0 to 1.0 Width of the gradient transition area between the two inputs, as a percentage of the output size.
WipeStype int 0 0 or 1 Direction of the wipe. Can be horizontal (0) or vertical (1).

The following XML code shows the DirectX Media Wipe transitions included in Windows Movie Maker:

<TransitionDLL guid="{AF279B30-86EB-11D1-81BF-0000F87557DB}" comment="Wipe">
   <Transition nameID="62820" iconid="60" comment="Wipe, Wide Down">
      <Param name="GradientSize" value="0.6" />
      <Param name="wipeStyle" value="1" />
   </Transition>
   <Transition nameID="62821" iconid="58" comment="Wipe, Normal Down">
      <Param name="GradientSize" value="0.5" />
      <Param name="wipeStyle" value="1" />
   </Transition>
   <Transition nameID="62822" iconid="56" comment="Wipe, Narrow Down">
      <Param name="GradientSize" value="0.2" />
      <Param name="wipeStyle" value="1" />
   </Transition>
   <Transition nameID="62823" iconid="59" comment="Wipe, Wide right">
      <Param name="GradientSize" value="0.6" />
      <Param name="wipeStyle" value="0" />
   </Transition>
   <Transition nameID="62824" iconid="57" comment="Wipe, Normal right">
      <Param name="GradientSize" value="0.5" />
      <Param name="wipeStyle" value="0" />
   </Transition>
   <Transition nameID="62825" iconid="55" comment="Wipe, Narrow right">
      <Param name="GradientSize" value="0.2" />
      <Param name="wipeStyle" value="0" />
   </Transition>
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Dissolve Transition

The Dissolve transition dissolves one video segment into another in discrete dots (as opposed to a fade, which causes the videos to seamlessly exchange). It takes no parameters. The following XML code shows the Dissolve transition included in MovieMaker:

<TransitionDLL guid="{F7F4A1B6-8E87-452F-A2D7-3077F508DBC0}">
   <Transition nameID="62816" iconid="38" comment="Dissolve" />
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Fade Transition

The Fade transition provides some functionality for creating fade transitions using DirectX Media transitions. It takes no parameters.

The following XML code shows the fade transition included in Windows Movie Maker:

<TransitionDLL guid="{16B280C5-EE70-11D1-9066-00C04FD9189D}">
   <Transition nameID="62814" iconid="12" comment="Fade" />
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Iris Transition

The Iris transition splits the screen into four segments that move out from the center diagonally. It takes no parameters.

The following XML code shows the Iris transition included in Windows Movie Maker:

<TransitionDLL guid="{049F2CE6-D996-4721-897A-DB15CE9EB73D}">
   <Transition nameID="62813" iconid="29" comment="Iris" />
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Pixelate Transition

The Pixelate transition causes the first video to coarsen and then resolve into the second video. It takes no parameters. The following XML code shows the Pixelate transition included in Windows Movie Maker:

<TransitionDLL guid="{4CCEA634-FBE0-11D1-906A-00C04FD9189D}">
   <Transition nameID="62818" iconid="36" comment="Pixelate"/>
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

SMPTE Wipe Transitions

SMPTE wipes are standard SMPTE (Society of Motion Picture & Television Engineers) wipes, as described in the DirectShow documentation. The following table shows the parameters available for SMPTE wipes.

Parameter Type Default Description
BorderColor long none Color of the border around the edges of the wipe pattern. The value of this attribute is a hexadecimal number with the format 0xRRGGBB, where RR is the red hexadecimal value, GG is the green hexadecimal value, and BB is the blue hexadecimal value. (Thus, pure red, green, and blue are 0xFF000, 0x00FF00, and 0x0000FF, respectively.)
BorderSoftness long 0.0 Width of the blurry region around the edges of the wipe pattern. Specify 0 (zero) for no blurry region
BorderWidth long 0 Width of the solid border around the edges of the wipe pattern. Specify 0 (zero) for no border.
MaskName string NULL If not NULL, specifies the name of a JPEG file to use as the wipe mask instead of a standard, built-in wipe. The file must contain a monochrome, 8-bits-per-pixel gradient. The gradient is used as a mask to define the wipe's progression.
MaskNum long 1 Standard SMPTE wipe code specifying the style of wipe to use. For a list of wipe codes and their associated schematics, see SMPTE document 258M-1993.
OffsetX long 0 Offset of the wipe origin from the center of the image, in the horizontal direction. Valid only for values of MaskNum from 101 to 131.
OffsetY long 0 Offset of the wipe origin from the center of the image, in the vertical direction. Valid only for values of MaskNum from 101 to 131
ReplicateX long 0 Number of times to replicate the wipe pattern in the horizontal direction. Valid only for values of MaskNum from 101 to 131.
ReplicateY long 0 Number of times to replicate the wipe pattern in the vertical direction. Valid only for values of MaskNum from 101 to 131.
ScaleX long 0.0 Amount by which to stretch the wipe in the horizontal direction, as a percentage of the original wipe definition. Valid only for values of MaskNum from 101 to 131.
ScaleY long 0.0 Amount by which to stretch the wipe in the vertical direction, as a percentage of the original wipe definition. Valid only for values of MaskNum from 101 to 131.

The following XML code describes the standard SMPTE wipes included in Windows Movie Maker. The comment parameter usually gives the transition name shown in the Windows Movie Maker transition list.

<TransitionDLL guid="{DE75D012-7A65-11D2-8CEA-00A0C9441E20}" comment="DxtJpeg/SMPTE wipes">
   <Transition nameID="62826" iconid="41" comment="Reveal, Right|(smpte 1)">
      <Param name="MaskNum" value="1" />
   </Transition>
   <Transition nameID="62827" iconid="40" comment="Reveal, Down|(smpte 2)" >
      <Param name="MaskNum" value="2" />
   </Transition>
   <Transition nameID="62828" iconid="27" comment="Inset, Down Right|(smpte 3)">
      <Param name="MaskNum" value="3" />
   </Transition>
   <Transition nameID="62829" iconid="28" comment="Inset, Down Left|(smpte 4)" >
      <Param name="MaskNum" value="4" />
   </Transition>
   <Transition nameID="62830" iconid="25" comment="Inset, Up Left|(smpte 5)">
      <Param name="MaskNum" value="5" />
   </Transition>
   <Transition nameID="62831" iconid="24" comment="Inset, Up Right|(smpte 6)">
      <Param name="MaskNum" value="6" />
   </Transition>
   <Transition nameID="62832" iconid="50" comment="Split, Vertical|(smpte 21)" >
      <Param name="MaskNum" value="21" />
   </Transition>
   <Transition nameID="62833" iconid="22" comment="Split, Horizontal|(smpte 22)">
      <Param name="MaskNum" value="22" />
   </Transition>
   <Transition nameID="62834" iconid="9" comment="Diagonal, Down Right|(smpte 41)">
      <Param name="MaskNum" value="41" />
   </Transition>
   <Transition nameID="62835" iconid="51" comment="Bow Tie, Vertical|(smpte 43)">
      <Param name="MaskNum" value="43" />
   </Transition>
   <Transition nameID="62836" iconid="23" comment="Bow Tie, Horizontal|(smpte 44)">
      <Param name="MaskNum" value="44" />
   </Transition>
   <Transition nameID="62837" iconid="8" comment="Diagonal, Cross Out|(smpte 47)">
      <Param name="MaskNum" value="47" />
   </Transition>
   <Transition nameID="62838" iconid="7" comment="Diagonal, Box Out|(smpte 48)">
      <Param name="MaskNum" value="48" />
   </Transition>
   <Transition nameID="62839" iconid="16" comment="Filled V, Down|(smpte 61)">
      <Param name="MaskNum" value="61" />
   </Transition>
   <Transition nameID="62840" iconid="15" comment="Filled V, Left|(smpte 62)">
      <Param name="MaskNum" value="62" />
   </Transition>
   <Transition nameID="62841" iconid="13" comment="Filled V, Up|(smpte 63)">
      <Param name="MaskNum" value="63" />
   </Transition>
   <Transition nameID="62842" iconid="14" comment="Filled V, Right|(smpte 64)">
      <Param name="MaskNum" value="64" />
   </Transition>
   <Transition nameID="62844" iconid="64" comment="Zig Zag, Vertical|(smpte 73)">
      <Param name="MaskNum" value="73" />
   </Transition>
   <Transition nameID="62845" iconid="62" comment="Zig Zag, Horizontal|(smpte 74)">
      <Param name="MaskNum" value="74" />
   </Transition>
   <Transition nameID="62846" iconid="39" comment="Rectangle, Out|(smpte 101)">
      <Param name="MaskNum" value="101" />
   </Transition>
   <Transition nameID="62847" iconid="11" comment="Diamond, Out|(smpte 102)">
      <Param name="MaskNum" value="102" />
   </Transition>
   <Transition nameID="62848" iconid="80" comment="Circle, Out, Soft|(smpte 119)">
      <Param name="MaskNum" value="119" />
      <Param name="BorderSoftness" value="20" />
   </Transition>
   <Transition nameID="62849" iconid="81" comment="Circles, Out, Soft|(smpte 119)">
      <Param name="MaskNum" value="119" />
      <Param name="ReplicateX" value="8" />
      <Param name="ReplicateY" value="6" />
      <Param name="BorderSoftness" value="75" />
   </Transition>
   <Transition nameID="62850" iconid="46" comment="Star, 5 Points|(smpte 128)">
      <Param name="MaskNum" value="128" />
      <Param name="BorderSoftness" value="20" />
   </Transition>
   <Transition nameID="62851" iconid="83" comment="Stars, 5 Points|(smpte 128)">
      <Param name="MaskNum" value="128" />
      <Param name="ReplicateX" value="5" />
      <Param name="ReplicateY" value="5" />
      <Param name="BorderSoftness" value="75" />
   </Transition>
   <Transition nameID="62852" iconid="18" comment="Heart|(smpte 130)">
      <Param name="MaskNum" value="130" />
      <Param name="BorderSoftness" value="20" />
   </Transition>
   <Transition nameID="62853" iconid="30" comment="Key Hole|(smpte 131)" >
      <Param name="MaskNum" value="131" />
      <Param name="BorderSoftness" value="20" />
   </Transition>
   <Transition nameID="62854" iconid="84" comment="Sweep, Diagonal|(smpte 226)">
      <Param name="MaskNum" value="226" />
   </Transition>
   <Transition nameID="62855" iconid="85" comment="Sweep, Horizontal|(smpte 228)">
      <Param name="MaskNum" value="228" />
   </Transition>
   <Transition nameID="62856" iconid="82" comment="Fan, In, Vertical|(smpte 231)">
      <Param name="MaskNum" value="231" />
   </Transition>
   <Transition nameID="62857" iconid="3" comment="Eye|(smpte 122)">
      <Param name="MaskNum" value="122" />
      <Param name="BorderSoftness" value="20" />
   </Transition>
   <Transition nameID="62858" iconid="86" comment="Swinging Door, Bottom|(smpte 253)">
      <Param name="MaskNum" value="253" />
   </Transition>
   <Transition nameID="62859" iconid="87" comment="Windshield, Up|(smpte 262)">
      <Param name="MaskNum" value="262" />
   </Transition>
   <Transition nameID="62860" iconid="88" comment="Windshield, Vertical|(smpte 263)" >
      <Param name="MaskNum" value="263" />
   </Transition>
   </TransitionDLL>
</Transitions>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Wheel Transition

The Wheel transition provides a spinning wheel-spoke wipe. It takes the following parameter.

Parameter Type Default Range Description
Spokes int 4 2 to 20 Number of spokes.

The following XML code shows the Wheel transition included in Windows Movie Maker:

<TransitionDLL guid="{5AE1DAE0-1461-11D2-A484-00C04F8EFB69}">
   <Transition nameID="62819" iconid="53" comment="Wheel, 4 spokes">
      <Param name="spokes" value="4" />
   </Transition>
</TransitionDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

WMTFX Transitions and Effects

Windows Media Transform Effects (WMTFX) are a group of effects and transitions that you can assemble from a standard list of parameters. These transitions and effects are based on one of two COM objects that expose identical parameters, but one is used to build transitions (GUID C63344D8-70D3-4032-9B32-7A3CAD5091A5), and the other is used to build effects (GUID B4DC8DD9-2CC1-4081-9B2B-20D7030234EF). When you create WMTFX transitions or effects, be sure that you specify the GUID of the appropriate object, and that an effect is inside an <effect> block and a transition is inside a <transition> block. The following code shows an example transition and an example effect:

<TransitionsAndEffects Version="1.0">
   <Transitions>
      <TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
         <Transition name="My rotating fade" iconid="91">
            <Param name="InternalName" value="ParticleSystem"/>
            <Param name="RotateA" value="left"/>
            <Param name="FadeStartA" value="0.1"/>
         </Transition>
      </TransitionDLL>
   </Transitions>
   <Effects>
      <EffectDLL guid="{B4DC8DD9-2CC1-4081-9B2B-20D7030234EF}">
         <Effect name="My yellow effect" iconid="9">
            <Param name="InternalName" value="Standard"/>
            <Param name="Yellow" value="1.0"/>
            <Param name="Magenta" value="-1.0"/>
            <Param name="Cyan" value="-1.0"/>
         </Effect>
      </EffectDLL>
   </Effects>
</TransitionsAndEffects>

A WMTFX transition or effect can be based on one of the following four classes:

  • Standard
  • Hue
  • Simple3D
  • ParticleSystem

Each class exposes specific parameters, described later. The class you use is specified by the InternalName parameter, as shown here:

<Param name="InternalName" value=someclassname />

This must be the first parameter given for the class.

Note that the ParticleSystem class extends the Simple3D class, and exposes both its own parameters as well as the Simple3D parameters. So, for example, an effect based on the ParticleSystem class will expose both ParticleSystem parameters and Simple3D parameters.

Although classes and parameters are the same for both effects and transitions, not all parameters work with all effects or transitions. For example, a transition based on the Standard class won't have a parameter that specifies when the transition occurs. You will have to experiment a little to see which classes and parameters work together for an effect or a transition.

The following tables list the parameters exposed by each class. When an "A" or "B" appears in a parameter name, "A" refers to the existing or previous clip or picture, and "B" refers to the new clip or picture replacing it.

Standard Class Parameters

Parameter Type Default value Range Description
Invert float None 0.0 to 1.0 Color inversion produces new color values that are the previous color values subtracted from 255. Only values above the submitted value of the Invert parameter times 255 are inverted.
Red float None -1.0 to 1.0 Adjusts color balance.
Green float None -1.0 to 1.0 Adjusts color balance.
Blue float None -1.0 to 1.0 Adjusts color balance.
Cyan float None -1.0 to 1.0 Adjusts color balance. Ignored if Red is specified.
Magenta float None -1.0 to 1.0 Adjusts color balance. Ignored if Green is specified.
Yellow float None -1.0 to 1.0 Adjusts color balance. Ignored if Blue is specified.
Brightness float None 0.0 to infinity For brightness adjustment, each color channel value is multiplied by the submitted value.  These values should be greater than or equal to zero and are usually around 1.0.
Contrast float None 0.0 to infinity Contrast adjustment shifts the range of each color channel around a midpoint. These values should be greater than or equal to zero, and are usually around 1.0.
Posterize int None 0 to 255 This value is the number of color levels that should remain after posterization.
Threshold float None 0.0 to 1.0 For the threshold filtering adjustment, each sample color channel whose value is below the submitted Threshold value times 255 is set to zero. Each color channel with a value equal to or above that threshold is set to 255.
Gamma float None 0.0 to infinity Gamma correction for pixels.  Less than 1.0 is dimmer, greater than 1.0 is brighter.
ExponentialProgressDuration float 0.0 0.0 to 1.0 Length of time, starting from 0.0, during which progress will happen on a logarithmic scale.  Progress is linear after that time.
ExponentialProgressScale float 0.3 0.0 to infinity Scale of the exponential progress. The equation is:  LogrithmicScale = -log(1.0 - LinearProgress ) * ExponentialProgressScale
MirrorVertical bool false "false" or "true" Draw output upside down if true.
Desaturate bool false "false" or "true" Convert the image to grayscale (black-and-white) if true, allow color if false.
Rotate2DA int 0 0 to 359 Amount to rotate output video in degrees.

Hue Class Parameters

This class inherits from the Standard class and is used only for the hue cycle effect included in Windows Movie Maker. The effect cycles the video through a color spectrum—blue, cyan, green, yellow, red, magenta, then back to blue—and lets the user to choose the starting and ending colors on a scale from 0 to 1, where 0 and 1 are both blue on this path.

Parameter Type Default value Range Description
Value float 0.0 0.0 to 1.0 The starting color on a scale where zero is blue, 0.5 is yellow, and one is blue again.
EndValue float None 0.0 to 1.0 The ending color on a scale where zero is blue, 0.5 is yellow, and one is blue again. If Value is specified, EndValue must be specified as well, or the effect will not work.

Simple3D Class Parameters

This class is typically used by transitions for basic rotating, expanding, shrinking, or page-turning transitions.

Parameter Type Default value Range Description
MoveA string none left, right, up, down Slide first video in direction of property: left, right, up, down, in, or out
MoveSpeedA float 1.0 0.0 to infinity Speed at which MoveA parameter is applied.
RotateA string none left, right, up, down Direction of rotation of the first video.
ScaleA string none Smaller, Bigger, or a float > 0 Final video size compared to the original video. "Smaller" and "Bigger" give generic relative values, while a floating-point number is a size multiplier (1.0 would give you a final size the same as the original size).
InitialScaleA string 1.0 Smaller, Bigger, or a float > 0 Initial video size compared to original video.  "Smaller" and "Bigger" give generic relative values, while a floating-point number is a size multiplier (1.0 would give you an initial size the same as the original size).
RotateCenterA string none lowerright only Center of rotation for first video. 
ZScaleAStart string none 0.0 to 1.0 Time when X axis stops scaling and Z axis starts.
ShowAFront bool true true or false The front polygon of the first video is rendered when this parameter is true.
ShowABack bool false true or false The rear polygon of the first video is rendered when this parameter is true.
ShowBFront bool true true or false The front polygon of the second video is rendered when this parameter is true.
ShowBBack bool false true or false The rear polygon of the second video is rendered when this parameter is true.
RevolveCamera string nothing true or nothing Camera rotates around the world x-axis when true. If any value is passed into this parameter, it will set the value to true.
PageCurlA string none lowerright, lowerleft, upperleft, upperright, right, left, upper, or lower. Where the page curl starts.
FadeStartA float none 0.0 to 1.0 Time when first video starts to fade out. 

ParticleSystem Class Parameters

This class inherits from the Simple3D class, and exposes all the Simple3D parameters, as well as these parameters. These effects enable an image to be divided into spinning, three-dimensional particles (squares or rectangles) that can move in a desired direction.

Parameter Type Default value Range Description
ScatterDirection string none left, right, up, down, in, out Direction in which pieces of the first video will move, where "in" means away from the viewer, and "out" means toward the viewer. You may choose more than one direction, so "up, left" makes the pieces move to the upper left of the screen.
ParticleSpeed float 1.0 > 0 The speed at which the pieces move.
SpinDirection string none left, right, up, down, in, out Direction in which the pieces of the first video will rotate, where "in" means toward the screen and "out" means away from the screen. Choose only one direction.
ParticleSpinSpeed float 1.0 > 0 How fast the particles spin.
MaxParticles int 100 3 to 1000 Maximum number of particles in the scene. 
Gravity float 0.0 0 to infinity Vertical acceleration of the particles.
RandomizeSpeed float 1.0 any number Randomization multiplier.  Set to 0 (zero) to make the speed uniform for all particles.
BothDirections bool false true or false If true, particles will move in both directions with equal probability.

The following XML code describes all the WMTFX transitions and effects included with Windows Movie Maker. The comment parameter usually gives the name shown in the Windows Movie Maker transition or effect list.

WMTFX Transitions

<TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
   <Transition nameID="62800" iconid="91" comment="Flip, right">
      <Param name="InternalName" value="Simple3D" />
      <Param name="RevolveCamera" value="true" />
      <Param name="ShowAFront" value="true" />
      <Param name="ShowABack" value="false" />
      <Param name="ShowBFront" value="false" />
      <Param name="ShowBBack" value="true" />
   </Transition>
   <Transition nameID="62801" iconid="72" comment="Slide, up">
      <Param name="InternalName" value="Simple3D" />
      <Param name="MoveA" value="up" />
   </Transition>
   <Transition nameID="62802" iconid="73" comment="Slide up, center">
      <Param name="InternalName" value="Simple3D" />
      <Param name="MoveA" value="up" />
      <Param name="ScaleA" value="smaller" />
      <Param name="MoveSpeedA" value="0.75" />
   </Transition>
   <Transition nameID="62803" iconid="70" comment="Roll, right">
      <Param name="InternalName" value="Simple3D" />
      <Param name="RotateA" value="right" />
      <Param name="RotateCenterA" value="lowerright" />
   </Transition>
   <Transition nameID="62804" iconid="74" comment="Spin out, left">
      <Param name="InternalName" value="Simple3D" />
      <Param name="ScaleA" value="smaller" />
      <Param name="RotateA" value="left" />
      <Param name="FadeStartA" value="0.2" />
   </Transition>
   <Transition nameID="62805" iconid="89" comment="Page Curl, lower left">
      <Param name="InternalName" value="Simple3D" />
      <Param name="PageCurlA" value="lowerleft" />
      <Param name="ShowABack" value="true" />
   </Transition>
   <Transition nameID="62806" iconid="90" comment="Page Curl, lower right">
      <Param name="InternalName" value="Simple3D" />
      <Param name="PageCurlA" value="lowerright" />
      <Param name="ShowABack" value="true" />
      <Param name="FadeStartA" value="0.8" />
   </Transition>
   <Transition nameID="62807" iconid="77" comment="Shatter, Right">
      <Param name="InternalName" value="ParticleSystem" />
      <Param name="ScatterDirection" value="right" />
      <Param name="SpinDirection" value="right" />
      <Param name="MaxParticles" value="200" />
   </Transition>
   <Transition nameID="62808" iconid="78" comment="Shatter, up left">
      <Param name="InternalName" value="ParticleSystem" />
      <Param name="ScatterDirection" value="up, left" />
      <Param name="MaxParticles" value="64" />
      <Param name="ExponentialProgressDuration" value="0.4" />
      <Param name="ExponentialProgressScale" value="0.33" />
   </Transition>
   <Transition nameID="62809" iconid="76" comment="Shatter, in">
      <Param name="InternalName" value="ParticleSystem" />
      <Param name="ScatterDirection" value="in" />
      <Param name="MaxParticles" value="600" />
      <Param name="SpinDirection" value="right" />
      <Param name="ParticleSpeed" value="40.0" />
      <Param name="ParticleSpinSpeed" value="0.5" />
      <Param name="ExponentialProgressDuration" value="0.9" />
      <Param name="ExponentialProgressScale" value="0.25" />
   </Transition>
   <Transition nameID="62810" iconid="75" comment="Whirlwind, Fade">
      <Param name="InternalName" value="ParticleSystem" />
      <Param name="MaxParticles" value="200" />
      <Param name="SpinDirection" value="right" />
      <Param name="BothDirections" value="true" />
   </Transition>
   <Transition nameID="62811" iconid="79" comment="Shatter, up right">
      <Param name="InternalName" value="ParticleSystem" />
      <Param name="MaxParticles" value="700" />
      <Param name="ScatterDirection" value="up, right" />
      <Param name="BothDirections" value="true" />
   </Transition>
   <Transition nameID="62812" iconid="71" comment="Shrink vertical, then horizontal">
      <Param name="InternalName" value="Simple3D" />
      <Param name="ScaleA" value="smaller" />
      <Param name="ZScaleAStart" value="0.5" />
      <Param name="FadeStartA" value="0.5" />
   </Transition>
</TransitionDLL>

WMTFX Effects

<EffectDLL guid="{B4DC8DD9-2CC1-4081-9B2B-20D7030234EF}">
   <Effect nameID="62863" iconid="25" comment="Sepia tone">
      <Param name="InternalName" value="Standard" />
      <Param name="Desaturate" value="true" />
      <Param name="Red" value="0.10" />
      <Param name="Magenta" value="0.09" />
      <Param name="Yellow" value="0.25" />
      <Param name="contrast" value="1.0" />
   </Effect>
   <Effect nameID="62864" iconid="18" comment="Negative">
      <Param name="InternalName" value="Standard" />
      <Param name="Invert" value="-1.0" />
   </Effect>
   <Effect nameID="62865" iconid="20"  comment="Posterize">
      <Param name="InternalName" value="Standard" />
      <Param name="Posterize" value="6" />
   </Effect>
   <Effect nameID="62866" iconid="29" comment="Threshold">
      <Param name="InternalName" value="Standard" />
      <Param name="Threshold" value="0.5" />
   </Effect>
   <Effect nameID="62867" iconid="16" comment="Hue, Cycles Entire Color Spectrum">
      <Param name="InternalName" value="Hue" />
      <Param name="Value" value="0.0" />
      <Param name="EndValue" value="1.0" />
   </Effect>
   <Effect nameID="62868" iconid="33" comment="Ease In">
      <Param name="InternalName" value="Simple3D" />
      <Param name="ScaleA" value="bigger" />
      <Param name="ExponentialProgressDuration" value="0.01" />
   </Effect>
   <Effect nameID="62869" iconid="34" comment="Ease Out">
      <Param name="InternalName" value="Simple3D" />
      <Param name="ScaleA" value="smaller" />
      <Param name="InitialScaleA" value="bigger" />
      <Param name="ExponentialProgressDuration" value="0.01" />
   </Effect>
   <Effect nameID="62870" iconid="35" comment="Mirror, Vertical">
      <Param name="InternalName" value="Standard" />
      <Param name="MirrorVertical" value="true" />
   </Effect>
   <Effect nameID="62871" iconid="24" comment="Rotate 90">
      <Param name="InternalName" value="Standard" />
      <Param name="Rotate2DA" value="90" />
   </Effect>
   <Effect nameID="62872" iconid="22" comment="Rotate 180">
      <Param name="InternalName" value="Standard" />
      <Param name="Rotate2DA" value="180" />
   </Effect>
   <Effect nameID="62873" iconid="23" comment="Rotate 270">
      <Param name="InternalName" value="Standard" />
      <Param name="Rotate2DA" value="270" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Blur Effect

The Blur effect blurs an image by custom amounts. It takes the following parameters.

Parameter Type Default Range Description
PixelRadius float 2.0 0.0 to 25 The larger the number, the blurrier the picture.

The following XML code shows the Blur effect included in Windows Movie Maker:

<EffectDLL guid="{7312498D-E87A-11D1-81E0-0000F87557DB}" comment="Blur">
   <Effect nameID="62890" iconid="30" comment="Blur">
      <Param name="PixelRadius" value="2.5" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Brightness Effect

The Brightness effect modifies the brightness of a segment of video. It takes the following parameter.

Parameter Type Default Range Description
Brightness long 0 -255 to 255 Amount to modify the brightness by, where zero is no difference.

The following XML code shows the brightness effects included in Windows Movie Maker:

<EffectDLL guid="{5A20FD6F-F8FE-4a22-9EE7-307D72D09E6E}">
   <Effect nameID="62881" iconid="7" comment="Brightness increase">
      <Param name="Brightness" value="25" />
   </Effect>
   <Effect nameID="62882" iconid="6" comment="Brightness decrease">
      <Param name="Brightness" value="-25" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Fade Effect

The Fade effect causes a clip to fade in to or out from a solid color of your choice. It takes the following parameters.

Parameter Type Default Range Description
FadeIn bool 0 0 or 1 0 indicates that the clip will fade out to a color; 1 indicates that a clip will fade in from a color.
FadeColor long 0 0 to 0xFFFFFF The number can be given in hexadecimal or binary. In hexadecimal, the values represent blue, green, and red values as 0xBBGGRR. (This is not a misprint. The blue value must be first.)

The following XML code shows the Film Aging effects included in Windows Movie Maker:

<EffectDLL guid="{EC85D8F1-1C4E-46e4-A748-7AA04E7C0496}">
   <Effect nameID="62877" iconid="11" comment="Fade Out, To black">
      <Param name="FadeIn" value="0" />
      <Param name="FadeColor" value="0" />
   </Effect>
   <Effect nameID="62878" iconid="9" comment="Fade in, from black">
      <Param name="FadeIn" value="1" />
      <Param name="FadeColor" value="0" />
   </Effect>
   <Effect nameID="62879" iconid="12" comment="Fade Out, to white">
      <Param name="FadeIn" value="0" />
      <Param name="FadeColor" value="16777215" />
   </Effect>
   <Effect nameID="62880" iconid="10" comment="Fade in, to white">
      <Param name="FadeIn" value="1" />
      <Param name="FadeColor" value="16777215" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Film Aging Effect

The Film Aging effect introduces graininess, scratches, and other visual artifacts that make it appear as if a film is old. It takes the following parameters.

Parameter Type Default Range Description
Age long 0 0 to 100 Number of "years" to age the film.

The Age parameter is actually a combination of ten separate parameters. If you want to set these parameters independently, rather than using the Age parameter, you can do so. These are the parameters that Age includes.

Parameter Type Default Range Description
BlurAmount long 0 0 to 255 Higher value means blurrier image.
EdgeFade long 0 0 to 255 Higher value means more edge fade.
FilmJerkiness long 0 0 to 255 Degree of film jerkiness, where 0 is least and 255 is most.
FlickerFrequency long 0 0, 1 to 255 This effect sets the darkness of intervening, regularly spaced frames, where the lower the number, the darker the intervening frames, giving a flickering appearance. Zero means no visible flicker.
FrameSkips long 0 0 to 255 Number of frames to skip before showing the next frame.
Grey bool false true, false True means grayscale (black-and-white) image.
LineFrequency long 0 0 to 255 The frequency of white traveling "cracks" or lines in the image, where 0 creates the fewest lines and 255 the most.
LintFrequency long 0 0 to 255 Frequency of "lint" or "tears" on the screen, where 0 creates the least and 255 the most.
NoiseFrequency long 0 0 to 255 Adds noise to the image, where 0 creates the least noise and 255 the most.
PosterizeBits long 0 0 to 8 Amount of posterization to apply to the image, where zero is least and 8 is most.

The following XML code shows the Film Aging effects included in Windows Movie Maker:

<EffectDLL guid="{ADEADEB8-E54B-11d1-9A72-0000F875EADE}">
   <Effect nameID="62874" iconid="4" comment="Film Age, Oldest">
      <Param name="Age" value="90" />
   </Effect>
   <Effect nameID="62875" iconid="3" comment="Older">
      <Param name="Age" value="60" />
   </Effect>
   <Effect nameID="62876" iconid="2" comment="Old">
      <Param name="Age" value="30" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Filter Effects

Filter effects provide a variety of effects often associated with print media. Each effect has a number of parameters associated with it, passed in by generic names Control1Value through Control8Value. Not all parameters are used for every effect. Effects cannot be combined. The following table describes the parameters for all effects.

Parameter Type Default Range Description
EffectID long 0 0 or 1 The ID of an effect to use, described in the next table.
Control1Value

to

Control8Value

long Varies by effect 0 or 1 Up to eight custom parameters for the effect.
Transparency long 0 0 to 100 How transparent the added effect is, with a higher number indicating more transparent.
RGBForeColor string black Any standard HTML color string that Internet Explorer will accept Depends on the EffectID.
RGBBackColor string white Any standard HTML color string that Internet Explorer will accept Depends on the EffectID.
RGBExtraColor string black Any standard HTML color string that Internet Explorer will accept Depends on the EffectID.
TextureURL string none Any standard HTML color string that Internet Explorer will accept Applies to ConteCrayon, RoughPastel, Texturizer, and Underpainting effects.

The following table lists the effects that can be specified by the EffectID parameter.

EffectID Effect name
0 None
1 Accents
2 AngledStrokes
3 BasRelief
4 Mosaic
5 ChalkAndCharcoal
6 Charcoal
7 Chrome
8 ColoredPencil
9 Craquelure
10 Crosshatch
11 Cutout
12 DarkStrokes
13 DiffuseGlow
14 DryBrush
15 Emboss
16 FilmGrain
17 InkOutline
18 NotePaper
19 Fresco
20 GlowingEdges
21 Grain
22 HalftoneScreen
23 Patchwork
24 NeonGlow
25 PaintDaubs
26 PaletteKnife
27 Plaster
28 PlasticWrap
29 PosterEdges
30 Ripple
31 Reticulation
32 SmudgeStick
33 Sponge
34 SprayedStrokes
35 Stamp
36 Photocopy
37 Sumie
38 GraphicPen
39 TornEdges
40 Watercolor
41 WaterPaper
42 StainedGlass
43 Glass
44 Texturizer
45 Underpainting
46 ConteCrayon
47 RoughPastel
48 Spatter

The following XML code shows the Filter effects included in Windows Movie Maker:

<EffectDLL guid="{E673DCF2-C316-4c6f-AA96-4E4DC6DC291E}" >
   <Effect nameID="62886" iconid="13">
      <Param name="EffectID" value="16" comment="Film Grain" />
      <Param name="Control1Value" value="4" />
      <Param name="Control2Value" value="0" />
      <Param name="Control3Value" value="10" />
   </Effect>
   <Effect nameID="62887" iconid="27" comment="Smudge Stick">
      <Param name="EffectID" value="32" />
      <Param name="Control1Value" value="2" />
      <Param name="Control2Value" value="0" />
      <Param name="Control3Value" value="10" />
   </Effect>
   <Effect nameID="62888" iconid="14" comment="Graphic Pen">
      <Param name="EffectID" value="38" />
      <Param name="Control1Value" value="15" />
      <Param name="Control2Value" value="0" />
      <Param name="Control3Value" value="40" />
   </Effect>
   <Effect nameID="62889" iconid="30" comment="Watercolor">
      <Param name="EffectID" value="40" />
      <Param name="Control1Value" value="9" />
      <Param name="Control2Value" value="1" />
      <Param name="Control3Value" value="1" />
   </Effect>
  </EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Mirror and Grayscale Effects

This object provides two abilities: creating a mirror image, and changing a color image to grayscale. This object takes the following parameters.

Parameter Type Default Range Description
Mirror long 0 0 or 1 A value of 1 indicates that the picture should be flipped horizontally.
GrayScale long 0 0 or 1 A value of 1 indicates that colors should be changed to grayscale, creating a black-and-white image.

The following XML code shows the Mirror and Grayscale effects included in Windows Movie Maker:

<EffectDLL guid="{16B280C8-EE70-11D1-9066-00C04FD9189D}">
   <Effect nameID="62884" iconid="17" comment="Mirror, Horizontal">
      <Param name="Mirror" value="1" />
   </Effect>
   <Effect nameID="62885" iconid="15" comment="Grayscale">
      <Param name="Grayscale" value="1" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Pixelate Effect

The Pixelate effect causes an image to coarsen into squares of a single, solid color for each square, representing the average color of the original pixels from that area. It takes the following parameter.

Parameter Type Default Range Description
MaxSquare long 50 2 to 50 The larger the number, the larger the squares and the coarser the picture.

The following XML code shows the Pixelate effect included in Windows Movie Maker:

<EffectDLL guid="{4CCEA634-FBE0-11D1-906A-00C04FD9189D}" comment="Pixelate">
   <Effect nameID="62818" iconid="19" comment="Pixelate">
      <Param name="MaxSquare" value="25" />
   </Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Speed Effects

Speed effects speed up or slow down the playback of a video. They cannot be used for pausing or backward motion. These effects are not tied to an actual GUID, but are passed the null GUID. Speed effects may cause frame skipping, so selecting a value that is too large will cause an unsatisfactory result. This effect takes the following parameter.

Parameter Type Default Range Description
Speed float 1.0 Greater than 0.0 A value of 1.0 is normal speed, less means slower, and greater means faster.

The following XML code shows the Speed effects included in Windows Movie Maker:

<EffectDLL guid="{00000000-0000-0000-0000-000000000000}">
   <Effect nameID="62861" iconid="32" speed="2.0" comment="Speed up"></Effect>
   <Effect nameID="62862" iconid="31" speed="0.5" comment="Slow down"></Effect>
</EffectDLL>

See Also

  • Effect and Transition Objects Provided by Windows Movie Maker

Adding Custom Icons to Windows Movie Maker

You can attach custom icons to your custom effects and transitions for Windows Movie Maker. These icons are created as a resource file in a C++ project and compiled into a DLL. If you are not providing any custom transition or effect code, the project will contain only the icon resource file.

Windows Movie Maker can use a single bitmap image consisting of one or more icons joined at the sides. Windows Movie Maker automatically cuts the image into 96-pixel-wide, 84-pixel-high segments, each segment being one icon. The top and bottom 6 pixels should be left blank for image padding, which trims the visible icon size to 96 x 72 (3 x 4) segments. Windows Movie Maker assigns an identification number to each segment, starting at 0 and incrementing by 1, which describes how many "jumps" into the strip an icon is. In your XML file you specify which icon to use for each effect. You can use all custom icons, or all Windows Movie Maker standard icons, but you cannot mix the two types. The following diagram shows the layout of a bitmap image strip for icons.

Windows Movie Maker sees five icons in this bitmap strip.

In the preceding diagram, an effect or transition would set iconid = 0 for the smiley-face icon, and 4 for the sun icon.

When creating an icon strip, the top and bottom 6 pixels should be pure white, as this margin will be trimmed to make a 4 x 3 thumbnail to be displayed in the storyboard. Pure white (255,255,255) will be transparent when displayed.

To add your own icons, you must add two additional attributes to the TransitionsAndEffects tag:

  • SpecialIconFileID   An attribute that is used in an XML file only when including your own custom icons. It should be a unique number from 1 to 8192. This number must be unique for all SpecialIconFileID attributes in all other custom Windows Movie Maker XML files, but otherwise has no meaning.
  • SpecialIconResourceID   An attribute that is used in an XML file only when including your own custom icons. This is the number assigned to the icon bitmap resource in your custom DLL. You can find this number in your Visual Studio project, in the resource file.

Here is XML code that specifies custom icons:

<TransitionsAndEffects Version="1.0" SpecialIconFileID="22" SpecialIconResourceID="101">

To create custom icons for your effects and transitions

  1. Open Visual Studio and create a new C++ project. If only creating a DLL to hold icons, create a new Win32 project, and when asked for settings choose an empty project that compiles to a DLL.

  2. Add a new resource to the project. When asked what kind of resource, choose "bitmap."

  3. Draw or import a bitmap in the resource editor. The largest icon size is 96 pixels wide and 84 pixels high (including the six-pixel white buffers on top and bottom). Windows Movie Maker measures an image from the bottom left corner: if the image is too high, the extra material will be cropped; if the image is too wide, the extra material will be assigned to the next higher icon. If your image is less than 96 pixels wide, Windows Movie Maker will include part of the next icon. Insert as many icon images as you need in these 96-pixel-wide windows.

  4. Note the ID assigned to the bitmap in the resource.h file. This will be assigned to the SpecialIconResourceID attribute. For example, the following line shows a bitmap that has been assigned 101 as its identifier:

    #define IDB_BITMAP1                     101
    
  5. Compile the DLL, and place it in the \AddOnTFX folder with your XML file. The image DLL must have the same name as the XML file that uses the icons. So, for example, if your DLL is called MyIcons.dll, your XML file must be MyIcons.xml.

  6. In your XML file, add a SpecialIconFileID attribute to the TransitionsAndEffects XML tag and assign it a unique integer from 1 to 8192. The value of this number is not important as long as no other XML effect file uses this number to identify itself.

  7. Add a SpecialIconResourceID attribute to the TransitionsAndEffects tag, and assign it the number that Visual Studio assigned to the bitmap: in this example, the 101 shown in step 4.

  8. In each transition or effect XML block, add an iconid attribute to the Transition tag, and choose the offset into your bitmap, starting at zero, where your icon is located. These numbers do not have to be sequential, and regions may be skipped.

The following XML snippet shows two custom transitions using the first and third icons in a bitmap image, with the ID 101 from the DLL, and a unique ID of 22 assigned to the files:

<TransitionsAndEffects Version="1.0" SpecialIconFileID="22" SpecialIconResourceID="101">
   <Transitions>
      <TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
         <Transition name="Grow, custom icon 1" iconid="0">
            <Param name="InternalName" value="Simple3D" />
            <Param name="ScaleA" value="bigger" />
            <Param name="ExponentialProgressDuration" value="3.0" />
            <Param name="ExponentialProgressScale" value="1.0" />
         </Transition>
      </TransitionDLL>
      <TransitionDLL guid="{C63344D8-70D3-4032-9B32-7A3CAD5091A5}">
         <Transition name="Grow, custom icon 3" iconid="2">
            <Param name="InternalName" value="Simple3D" />
            <Param name="ScaleA" value="bigger" />
            <Param name="ExponentialProgressDuration" value="3.0" />
            <Param name="ExponentialProgressScale" value="2.0" />
         </Transition>
      </TransitionDLL>
   </Transitions>
</TransitionsAndEffects>

Note   The XML file name and the DLL file name must match only when the DLL is used only for holding an image. If the DLL is not holding an image (as when it holds custom effects and transition objects) the names do not need to match.

Creating New Transition and Effect Objects

In addition to modifying the existing transitions and special effects, it is possible to create completely new ones. These objects, called DirectX Transforms (DXTs), require considerable knowledge of COM and DirectX programming, as well as ATL, and is only briefly described in this section. To learn where you can read about DXTs, see For More Information.

This download includes two Visual Studio projects you can use to create new transition and effect objects; one version is for Visual Studio .NET, and the other is for Visual Studio 6.0. If you use the version 6.0 project, you must also install the Microsoft DirectX 7.0 SDK to obtain the necessary headers for this project. You can find this at the location shown in For More Information.

In addition, both projects require you to install the Microsoft DirectX Media SDK, available at the Microsoft Web site.

The downloadable executable file associated with this document is a self-extracting group of files and folders. The downloaded project includes the following files:

  • C++ project files containing code for several sample effects
  • XML files to load these effects and some additional effects into Windows Movie Maker
  • Readme.txt describing the contents of each file
  • HowToInstall.txt describing the installation process
  • MMSTFX.dll, which is an already compiled sample of the DLL this project will create

Running the self-extraction program creates a top-level MMSTFX folder containing the project and text files, an MMSTFX\Bin folder containing the DLL, and an MMSTFX\XML folder containing the XML files.

The sample C++ code creates a new effect (Blue Adjust) and a new transition (Melt) in a DLL named MMSTFX.dll. Also included are XML files that modify the effects provided with Windows Movie Maker. These "new" effects include "Page Curl, Down Left," "Page Curl, Down Right," "Blur, Super," "Brightness, Super Increase," "Brightness, Super Decrease," and "Whirlwind, Down, Small Blocks." More details on these objects can be found in the ReadMe.txt file included with the download.

To open the project in Visual Studio 6.0, double-click the file MMSTFX.dsp. To open the project in Visual Studio .NET, double-click the file MMSTFX.vcproj.

Note   If you receive an error message that you cannot compile DXTrans.idl, be sure that you list the path to the DXMedia\include folder on your computer. This path should be specified in the Tools > Options > Projects > VC++ Directories dialog box.

After you open and compile the sample DLL, you can run the program in debug mode. You will receive a warning dialog box indicating that the project does not include debug symbols for the Windows Movie Maker program; click OK. When asked what program to attach to, navigate to and select the moviemk.exe program file.

Overview of the Sample Code

The following diagram shows the important classes provided in the sample code.

Overview of the classes and objects in the sample file.

The following describes classes and objects of the sample code:

CMMSampleEffect and CMMSampleTransition

These are the top-level effect and transition DXT classes of the sample. CMMSampleEffect implements the Blue Adjust sample effect; CMMSampleTransition implements the Melt sample transition. These classes may be modified to change the samples, or copied and modified to create new effects or transitions. Windows Movie Maker creates these classes with COM using the GUID assigned to each. These classes create a helper object to handle video by calling CreateSpecialEffectByName: CMMSampleEffect creates CMMSpecialEffect, and CMMSampleTransition creates CMMSimple3DSpecialEffect. The default number of input buffers is one (the only number permitted for an effect), but CMMSampleTransition increases this to two (the correct number for a transition).

CMMSpecialEffectDXT

Handles communication and buffer manipulation between Windows Movie Maker and the video-handling class (CMMSpecialEffect or its inheriting class).

CVideoPlane

This is a tool class used by 3-D effects to draw an input video onto a single plane.

CMMSpecialEffect

This is the base class for the graphics object used in 2-D effects and transitions. The Blue Adjust sample effect uses this class directly to tint the video blue. The Melt sample transition uses a derived class, CMM3DSpecialEffect, which is suited for 3-D manipulations. When creating a 2-D effect or transition, inherit from this class and override its Execute method.

CMM3DSpecialEffect

This is the base class for 3-D effects or transitions. It creates textures and a rendering surface on the output buffer. To create new effects or transitions, override the following methods: CreateScene, RenderScene, ReleaseScene, CreateSurfaces, RestoreSurfaces, and ReleaseSurfaces. The Execute method overridden from CMMSpecialEffect, handles low-level logic; you should not override it yourself. To modify or create a new effect or transition, you should override RenderScene. CMM3DSpecialEffect does not perform the rendering for 3-D objects; this is done by CSimple3DSpecialEffect.

CSimple3DSpecialEffect

The top level class used for 3-D effect and transition rendering. It performs the rendering for the Melt sample transition. This class overrides several functions from its base class, and creates a helper object based on CVideoPlane. To create a new Direct3D-based effect or transition, you can modify or create a new class inheriting this class.

Getting Started on a New Effect

Starting with the code provided in the sample is a good way to develop your own effect or transition. To replace the Blue Adjust effect with your own, first look at the CMMSpecialEffect.cpp and CMMSpecialEffect.h files. The methods Initialize and Terminate are called once each for the lifetime of the effect, and the Execute method is called each time a new video frame is rendered. To create a new effect, you can implement a class that inherits the CMMSpecialEffect class, and override the Initialize, Execute, and Terminate methods.

The CMMSampleEffect class, which in turn inherits from the CMMSpecialEffectDXT class, calls CreateSpecialEffectByName to create a drawing object, CMMSpecialEffect. If you define a new DXT, you can modify the object by changing the behavior of the CreateSpecialEffectByName function. These classes and objects handle much of the tedious work required to create new effects.

Note The CMMSampleEffect and CMMSampleTransition classes reference a CoClass GUID, which is the same GUID specified in the add-on XML file describing new or amended effects. When developing your own effects or transitions, you should copy and rename the CMMSampleEffect and CMMSampleTransition classes and generate a new GUID to use in this class and XML file, hence ensuring the uniqueness of the GUIDs used. Use the Guidgen tool provided with Visual Studio to generate a new GUID. COM objects reference their GUIDs in the .idl file describing them, the .rgs file that contains their registration information, and the .h file generated from the .idl file. When changing GUIDs, you must search the entire project for references to the old GUID.  The XML file required by Windows Movie Maker to display the effect must also be updated to use the new GUID.

Getting Started on a New Transition

Writing a new transition usually requires more work than writing a new effect. The Melt sample used Direct3D to manipulate the image and render the result. Direct3D requires a substantial amount of initialization and execution code, which is provided in the Melt sample by the CSimple3DSpecialEffect class, which inherits from CMM3DSpecialEffect, which in turn inherits from CMMSpecialEffect. Similar to the Blue Adjust code, you should inherit the CMM3DSpecialEffect class and override the CreateScene, ReleaseScene and RenderScene methods to create your own transition. CreateScene and ReleaseScene are called once only; RenderScene is called each time a new frame is rendered.

Three other methods in the CMM3DSpecialEffect class may also be overridden if your transition needs to manage 3D vertex buffers differently than the Melt sample does. The three methods are CreateSurfaces, RestoreSurfaces, and ReleaseSurfaces.

Note The Initialize, Terminate, and Execute methods should not be overridden when you are using the CMM3DSpecialEffect class, as this class overrides these methods itself.

Also, you should copy and rename the CMMSampleTransition class, and provide it with a new GUID.

For drawing graphics, the Melt sample uses CSimple3DSpecialEffect inheriting from CMM3DSpecialEffect to create a transition, but these classes could also be used to create 3-D effects such as Blue Adjust. The only difference between an effect and a transition in Windows Movie Maker is the number of video input sources—one for an effect and two for a transition. The number of inputs is set to one by default, but the FinalConstruct method of CMMSampleTransition sets this value to two.

Note After an object is associated with an effect or transition, it cannot be changed to the other type without removing all references to its GUID from the registry. DirectShow stores the type of the effect or transition in the registry when Windows Movie Maker 2 starts up.

To create a new transition that does not use Direct3D, amend the CreateSpecialEffectByName method of the CMMSpecialEffectDXT class to create a CMMSpecialEffect object (or an object from a class that inherits from CMMSpecialEffect), avoiding any calls to Direct3D interfaces and methods.

The division of methods into the two classes, CMMSpecialEffect and CSimple3DSpecialEffect is to provide clarity to the sample. These could be combined into a single class if code brevity and optimization are important.

Passing Parameters to Your DLL

Passing in parameters from the XML file to your C++ DLL will enable users of your special effect to modify it to their tastes.

The first step is to add properties for these parameters to the .IDL file. For example, the following code exposes the Blue and MeltIntensity parameters of your object:

interface IMMSampleTFX : IDXEffect
{
[propget] HRESULT Blue([out,retval] float* pfBlue);
[propput] HRESULT Blue([in] float fBlue);
[propget] HRESULT MeltIntensity([out,retval] float* pfMeltIntensity);
[propput] HRESULT MeltIntensity([in] float fMeltIntensity);
};

Note how the IMMSampleTFX interface, which exposes the Blue and MeltIntensity parameters, is inherited by CMMSpecialEffectDXT:

class CMMSpecialEffectDXT : 
    public CDXBaseNTo1,
    public IDispatchImpl<IMMSampleTFX, &IID_IMMSampleTFX, &LIBID_MMFXLib>,
    public IObjectSafetyImpl2<CMMSpecialEffectDXT>

The next stage is to write the code for the four methods, for example:

STDMETHODIMP CMMSpecialEffectDXT::put_Blue(float fBlueAmount)
{
   m_fBlueAmount = fBlueAmount;
   return S_OK;
}

In the XML file, the Blue effect will be made available to Windows Movie Maker with the following statements:

<TransitionsAndEffects Version="1.0">
   <Effects>
      <EffectDLL guid="{294D0DE1-1B57-408d-A33F-FA708A5A28D6}">
         <Effect name="Blue Color Adjust" iconid="12">
            <Param name="Blue" value="2.0" />
         </Effect> 
      </EffectDLL>
   </Effects>
</TransitionsAndEffects>

Windows Movie Maker then uses the GUID to identify which DLL to search, the effect name to identify the effect, then the parameter name to identify which property to change. The parameter name "Blue" will identify the put_Blue method described earlier.

Debugging Your DLL

Debugging a DLL is very similar to debugging any other program; however, you must change the name of the executable file to Windows Movie Maker in the settings for your project. The simplest way to do this is to specify moviemk.exe as the executable you want to debug with. See Debugging: DLLs in the MSDN library for more information.

Changing the Blue Adjust Effect to Purple Adjust

It is possible to change the provided Blue Adjust effect to a Purple Adjust by simply adding a red parameter to the code that adjusts the amount of red in the rendered image. This effect takes advantage of existing code in the sample that modifies the red color channel. The new red parameter can be set independently in the XML to create purple (or red, or blue, or any combination of the two). This section describes how to modify the C++ and XML files to add the red parameter.

The sample Blue Adjust effect uses the DXLookupTable object (from the DXMedia SDK) to increase the amount of blue in the image.  This object is capable of color balancing, altering brightness, contrast, or gamma, and applying thresholding and posterization effects.  We will limit our change to increasing the amount of red as well as blue to create purple.

To add the red parameter, you will simply copy the blue parameter code and add similar functions and members to a new red parameter. The following steps show what code must be added.

In the file MMSpecialEffect.cpp, in the function CMMSpecialEffect::InitStandardOperations, find the following lines:

RTN_HR_IF_FAILED(m_pDXT->get_Blue(&fValue));
if (!IsEqual(fValue, 0.0f))
{
   m_fBlue = fValue;
}

Add the following snippet to get the red value:

RTN_HR_IF_FAILED(m_pDXT->get_Red(&fValue));
if (!IsEqual(fValue, 0.0f))
{
   m_fRed = fValue;
}

In the file MMSpecialEffectDXT.h, find the declaration of the get and put methods for the blue property and add declarations for identical red methods as shown in bold:

STDMETHOD(get_Blue)(float* pfBlue);
STDMETHOD(put_Blue)(float fBlue);
STDMETHOD(get_Red)(float* pfRed);
STDMETHOD(put_Red)(float fRed);

In the file MMSpecialEffectDXT.cpp, copy the definitions of the put_Blue and get_Blue methods, and add two identical methods called put_Red and get_Red, renaming all the ...Blue... values to ...Red....

In the file MMSpecialEffectDXT.h, declare a member variable m_fRedAmount identical to m_fBlueAmount, as shown in bold:

float m_fBlueAmount;
float m_fRedAmount;

In the file MMSpecialEffectDXT.cpp, in CMMSpecialEffectDXT's FinalConstruct method, initialize this new red member variable in the same place you initialize the blue member, as shown in bold:

m_fBlueAmount = 0.0f;
m_fRedAmount = 0.0f;

In the file MMSTFX.idl, find the blue property declarations and add identical red declarations as shown here:

[propget] HRESULT Blue([out,retval] float* pfBlue);
[propput] HRESULT Blue([in] float fBlue);
[propget] HRESULT Red([out,retval] float* pfRed);
[propput] HRESULT Red([in] float fRed);

Finally, to add the new Purple Color Adjust effect to the Windows Movie Maker interface, you must add the XML code to call it. Find the BlueAdjust.xml file included in the sample project. Create a copy of this file in the \AddOnTFX directory next to BlueAdjust.xml and rename the file PurpleAdjust.xml.  Open the new file, find the effect named Blue Color Adjust, change the name parameter value to "Purple Color Adjust", and add the Red parameter as shown here:

<Param name="Blue" value="2.0" />
<Param name="Red" value="1.5" />

You can keep the BlueAdjust.xml file, which will call the same TFX but simply not modify the red value, or you can merge both effects into one XML file.

The rest of the necessary code that applies the value of m_fRed to the DXLookupTable object is already provided in the sample code in the CMMSpecialEffect::InitStandardOperations method, which calls the DXMedia SetColorBalance method to modify the red channel value.

Compile your changes. When the project is built, run Windows Movie Maker, open the effects area and scroll down to find the Purple Color Adjust effect. You can try adding a green parameter yourself.

Glossary

The following terms are used in this document, or more generally when creating effects or transitions for DirectX or Windows Movie Maker.

AddOnTFX

The name of the directory where XML files are placed to extend Movie Maker transitions and effects. For example, C:\Program Files\Movie Maker\Shared\AddOnTFX. You must create this directory. 

DXT

DirectX Transform. An object built with the DirectX Media SDK and used to build special effects. Movie Maker uses DXTs that are installed on the system and referenced in an XML file.

output video buffer

The memory buffer that the effect or transition writes to for each frame.

pitch

The distance, in bytes, between two memory addresses that represent the beginning of one bitmap line and the beginning of the next bitmap line.

render

Drawing video output into the output video buffer.

special effect

The generic term for both a transition and an effect for Windows Movie Maker, used to enhance visual content.

video buffer A

The first input buffer for a transition, or the only input buffer for an effect.  Effects read each pixel in this buffer for every frame and write the result into the output buffer. For transitions this is video being transitioned FROM. Movie Maker uses 24-bit RGB natively, though 32-bit may be used in a DXT.

video buffer B   

The second input buffer in a transition. This is the video image being transitioned TO.

For More Information

  • See the DirectShow SDK documentation for more information on SMPTE wipes.
  • The MSDN library at the Microsoft Web site has articles on creating DirectX Transforms, as well as COM and ATL documentation.
  • The DirectX Transform SDK contains the documentation and objects used to create the effects and transitions. This SDK is installed as part of the DirectX 6.0 SDK, also called the DirectX Media SDK, or DirectX Media 6.0 SDK, available at the Microsoft Web site. The objects packaged with this SDK enable you to create your own transform or effect objects. The version 7 headers are included with Visual Studio .NET and with the DirectX Transform SDK, but the documentation is available only with the DirectX 7.0 SDK, which is no longer available on the Microsoft Web site.
  • Several newsgroups cover Windows Movie Maker and DirectX programming. The following two groups might be useful for different purposes:
    • microsoft.public.windowsxp.moviemaker is a newsgroup that covers Windows Movie Maker issues and might be appropriate for XML issues;
    • microsoft.public.multimedia.directx.dshow.programming is a newsgroup that covers technical aspects about DirectShow programming, including the DirectX Media SDK.