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);
        }