Microsoft DirectX 8.1 (C++) |
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