text/event+json, proprio/json) are UTF-8; binary modalities (image/jpeg, audio/pcm, pointcloud/xyz32, tensor/raw) are raw bytes per their schema. The payload is exactly the modality’s encoding and nothing else (AWP-DAT-007).
Per-frame metadata beyond the fixed header travels in the extension block, or as named JSON fields in the inline binding:
A JPEG frame therefore never carries its tick inside the JPEG bytes; the decoder reads it from the extension block and passes the payload to the image decoder untouched. SDKs surface
tick, ts_sim_ns, and ts_send_ns uniformly regardless of binding, and compute a frame’s staleness as the agent’s synchronized clock minus ts_mono_ns (AWP-CLK-008).