Available in LEADTOOLS Multimedia toolkits. |
ILMVUserCallback Interface
The ILMVUserCallback interface is a user-defined interface. It must be registered by calling the put_ReceiveProcObj method of the ILMVCallback interface. This interface has one method.
Parameters
pData |
a valid pointer to the frame data, passed in a long variable. |
lWidth |
width of the frame |
lHeight |
height of the frame |
lBitCount |
bits per pixel of the frame |
lSize |
size of the frame buffer, in bytes |
bTopDown |
indicates whether the image in the passed buffer (pData) is top-down (1) or bottom-up (0). |
Description
This method is called for each frame received by the Video Callback Filter. The user can modify each frame by making changes on the frame's data.
Return
After working on the frame data, this function can return one of the following values:
Value |
Meaning |
VDCALBK_ERR_OK |
Success. the filter will continue normally be delivering the processed frame. |
VDCALBK_ERR_DROP |
Instructs the filter not to deliver the frame. The filter will drop the frame and continue normally with the next frame in the stream. |
VDCALBK_ERR_DELIVERLASTFRAME |
Instructs the filter to deliver the previous frame--the last one delivered. The filter saves the last frame it delivers downstream in case the user wants to deliver the same frame more than once. |
Note for C/C++ users: you can simply cast pData to a pointer to unsigned char.
Note for .NET users: For more examples on how to use the frame data in .NET applications, look at the sample code from ILMAUserCallback2 Interface.
Note for .NET users: These callbacks are implemented in .NET as a function without a return value. In order to be able to return a value other than VDCALBK_ERR_OK from your app, you need to throw a HRESULT exception before returning from ReceiveProc. One way do do this is as in the following example:
public class ReturnValueException : Exception
{
public ReturnValueException(object HResultValue)
{
HResult = (int)HResultValue;
}
}
public class LEADCallbackPlay : LMVCallbackLib.ILMVUserCallback
{
public void ReceiveProc(int pData, int lWidth, int lHeight,
int lBitCount, int lSize, int bTopDown)
{
' you need to throw an error only if you
want to return anything other that VDCALBK_ERR_OK
' throw new ReturnValueException(LMVCallbackLib.VdCalBkErrConstants.VDCALBK_ERR_DROP);
}
}