_MFT_OUTPUT_DATA_BUFFER_FLAGS enumeration (mftransform.h)

Defines flags for the IMFTransform::ProcessOutput method.

Syntax

typedef enum _MFT_OUTPUT_DATA_BUFFER_FLAGS {
  MFT_OUTPUT_DATA_BUFFER_INCOMPLETE = 0x1000000,
  MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE = 0x100,
  MFT_OUTPUT_DATA_BUFFER_STREAM_END = 0x200,
  MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE = 0x300
} ;

Constants

 
MFT_OUTPUT_DATA_BUFFER_INCOMPLETE
Value: 0x1000000
The MFT can still generate output from this stream without receiving any more input. Call ProcessOutput again to process the next batch of input data.
MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE
Value: 0x100
The format has changed on this output stream, or there is a new preferred format for this stream. When this flag is set, the MFT clears the media type for the stream. The ProcessOutput method returns MF_E_TRANSFORM_STREAM_CHANGE and generates no output for any stream. Further calls to IMFTransform::ProcessInput or ProcessOutput will fail until the client sets a new media type.
MFT_OUTPUT_DATA_BUFFER_STREAM_END
Value: 0x200
The MFT has removed this output stream. The output stream must have the MFT_OUTPUT_STREAM_REMOVABLE flag. (See IMFTransform::GetOutputStreamInfo.)

When the MFT removes an output stream, the MFT returns this status code on the next call to ProcessOutput after the last output sample has been produced. When the MFT returns this status code, it does not modify any sample contained in the pSample member of the MFT_OUTPUT_DATA_BUFFER structure, nor does it allocate a new sample if pSample is NULL.

After this status code is returned, the stream identifier for this output stream is no longer valid. The client should no longer provide an MFT_OUTPUT_DATA_BUFFER structure for that stream when it calls ProcessOutput.

The ProcessOutput method does not return MF_E_TRANSFORM_STREAM_CHANGE when a stream ends, unless there is a change in another stream that requires this return code.
MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE
Value: 0x300
There is no sample ready for this stream. This flag might be set if the MFT has multiple output streams that produce data at different times. It sets this flag for each stream that is not ready to produce data. It does not modify the output sample contained in the pSample member of the MFT_OUTPUT_DATA_BUFFER structure, nor does it allocate a new sample is pSample is NULL.

If no streams are ready to produce output, the MFT does not set this flag. Instead, the ProcessOutput method returns MF_E_TRANSFORM_NEED_MORE_INPUT.

Remarks

The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

// Correct.
if (Buffer.dwStatus == MFT_OUTPUT_DATA_BUFFER_STREAM_END)
{
    ...
}

// Incorrect.
if ((Buffer.dwStatus & MFT_OUTPUT_DATA_BUFFER_STREAM_END) != 0)
{
    ...
}

Requirements

Requirement Value
Minimum supported client Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 [desktop apps | UWP apps]
Header mftransform.h

See also

Media Foundation Enumerations

Media Foundation Transforms