In-Place DMOs
A version of this page is also available for
4/8/2010
Certain data transformations can be accomplished by directly modifying the data. This is known as in-place processing. Many audio and video effects can be done in place.
In-place processing is more efficient than copying data to another buffer.
To process data in-place, make a single call to the IMediaObjectInPlace::Process method, rather than separate calls to ProcessInput and ProcessOutput. Pass an array of bytes that contains the input data. When the method returns, the byte array contains the output data.
A DMO that supports IMediaObjectInPlace must still support all of the IMediaObject methods. You can choose whether to use in-place processing or create separate input and output buffers. However, do not mix the two types of processing. If you call Process, do not call ProcessInput or ProcessOutput, and vice-versa.
An in-place DMO might create some additional output after the input stops. This is known as an effect tail. For example, a reverb effect continues after the input reaches silence. If the DMO produces an effect tail, the application must call the Process method with zeroed input buffers until the tail is completely processed.
For more information, see IMediaObjectInPlace::Process.