unsafe void Update() { int frame = FPinInFrame[0]; byte *outPix = (byte *)FImage.Data.ToPointer(); fixed(ulong *inPix = &FPayload.Data[0]) { ulong *mov = inPix; if (FPayload.Balanced) { byte high = frame % 2 == 0 ? (byte)255 : (byte)0; byte low = high == (byte)255 ? (byte)0 : (byte)255; frame /= 2; for (uint y = 0; y < FPayload.Height; y++) { for (uint x = 0; x < FPayload.Width; x++) { *outPix++ = (*mov++ & (ulong)1 << frame) == ((ulong)1 << (int)frame) ? high : low; } } } else { for (uint y = 0; y < FPayload.Height; y++) { for (uint x = 0; x < FPayload.Width; x++) { *outPix++ = (*mov++ & (ulong)1 << frame) == ((ulong)1 << (int)frame) ? (byte)255 : (byte)0; } } } } FOutput.Send(FImage); }