<br />

Calculators communicate by sending and receiving packets. Typically a single
packet is sent along each input stream at each input timestamp. A packet can
contain any kind of data, such as a single frame of video or a single integer
detection count.

## Creating a packet

Packets are generally created with `mediapipe::MakePacket<T>()` or
`mediapipe::Adopt()` (from packet.h).

    // Create a packet containing some new data.
    Packet p = MakePacket<MyDataClass>("constructor_argument");
    // Make a new packet with the same data and a different timestamp.
    Packet p2 = p.At(Timestamp::PostStream());

or:

    // Create some new data.
    auto data = absl::make_unique<MyDataClass>("constructor_argument");
    // Create a packet to own the data.
    Packet p = Adopt(data.release()).At(Timestamp::PostStream());

Data within a packet is accessed with `Packet::Get<T>()`