Microsoft DirectX 8.1 (C++)

IMediaObject::ProcessInput

The ProcessInput method delivers a buffer to the specified input stream.

Syntax

HRESULT ProcessInput(
    DWORD dwInputStreamIndex,
    IMediaBuffer* pBuffer,
    DWORD dwFlags, 
    REFERENCE_TIME rtTimestamp, 
    REFERENCE_TIME rtTimelength 
);

Parameters

dwInputStreamIndex

Zero-based index of an input stream on the DMO.

pBuffer

Pointer to the buffer's IMediaBuffer interface.

dwFlags

Bitwise combination of zero or more flags from the DMO_INPUT_DATA_BUFFER_FLAGS enumeration.

rtTimestamp

Time stamp that specifies the start time of the data in the buffer. If the buffer has a valid time stamp, set the DMO_INPUT_DATA_BUFFERF_TIME flag in the dwFlags parameter. Otherwise, the DMO ignores this value.

rtTimelength

Reference time specifying the duration of the data in the buffer. If this value is valid, set the DMO_INPUT_DATA_BUFFERF_TIMELENGTH flag in the dwFlags parameter. Otherwise, the DMO ignores this value.

Return Value

Returns an HRESULT value. Possible values include those in the following table.

Return Code Description
DMO_E_INVALIDSTREAMINDEX Invalid stream index.
DMO_E_NOTACCEPTING Data cannot be accepted.
S_FALSE No output to process.
S_OK Success.

Remarks

If the DMO does not process all the data in the buffer, it keeps a reference count on the buffer. It releases the buffer once it has generated all the output, unless it needs to perform lookahead on the data. (To determine whether a DMO performs lookahead, call the IMediaObject::GetInputStreamInfo method.)

If this method returns DMO_E_NOTACCEPTING, call the IMediaObject::ProcessOutput method until the input stream can accept more data. To determine whether the stream can accept more data, call the IMediaObject::GetInputStatus method.

If the method returns S_FALSE, no output was generated from this input and the application does not need to call ProcessOutput. However, a DMO is not required to return S_FALSE in this situation; it might return S_OK.

See Also