public unsafe int BufferCB(double sampleTime, IntPtr buffer, int bufferLen)
{
if (parent.NewFrame != null)
{
Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb);
BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int stride = bitmapData.Stride;
int stride2 = bitmapData.Stride;
byte * ptr = (byte *)bitmapData.Scan0.ToPointer() + (long)stride2 * (long)(height - 1);
byte * ptr2 = (byte *)buffer.ToPointer();
for (int i = 0; i < height; i++)
{
Win32.memcpy(ptr, ptr2, stride);
ptr -= stride2;
ptr2 += stride;
}
bitmap.UnlockBits(bitmapData);
if (snapshotMode)
{
parent.OnSnapshotFrame(bitmap);
}
else
{
parent.OnNewFrame(bitmap);
}
bitmap.Dispose();
}
return(0);
}