bool ReadUpdateHeader(byte[] packet, out PacketHeader h)
    {
        Profiler.BeginSample("ReadStateUpdatePacketHeader");
        stream.Start(packet);
        var result = true;

        try {
            serializer.ReadUpdatePacketHeader(stream, out h);
        } catch (SerializeException) {
            Debug.Log("error: failed to read state update packet header");
            h.id         = 0;
            h.ack        = 0;
            h.ackBits    = 0;
            h.frame      = 0;
            h.resetId    = 0;
            h.timeOffset = 0.0f;
            result       = false;
        }
        stream.Finish();
        Profiler.EndSample();

        return(result);
    }