Don't keep max values around, just use the total bytes available for data to see if the new values make sense.
This allows for example for easy rotation of frames without having to re-allocate memory.
Add generic accessors for validity and timestamp.