Internally, when we're collecting M2M data, the user gets a slider that they can move around at will. It's responsive enough that there's no meaningful lag between where the system thinks the position of the slider is and what the user sees. As the video plays, the browser fires timeupdate
events at its convenience--the docs say "the event frequency is dependent on the system load, but will be thrown between about 4Hz and 66Hz (assuming the event handlers don't take longer than 250ms to run). User agents are encouraged to vary the frequency of the event based on the system load and the average cost of processing the event each time, so that the UI updates are not any more frequent than the user agent can comfortably handle while decoding the video".
Our event handlers sample the dial every time this event fires, appending pairs to a list. This results in a lot more than four events per second--which is how we ultimately store the data. So, before the data gets sent to the server, a process runs that resamples the data to 250ms intervals.
Basically, it looks at each quarter second and finds the pair of events that most closely bracket it, then it interpolates (linearly) between the values to get a value corresponding to the tick. It's these values that go to the server and get stored as the respondent's M2M data.
So, there's implicitly a low-pass filter here that's discarding some high-frequency data. Since we end up with 250ms intervals, we're assuming there's nothing "interesting" that happens faster than about 500ms, and probably more like 1s.
The other thing that happens is when we display the data, we have two plots we can show. One is the (weighted) average of a selected group of respondents over time (this is the heavy line that can be turned on and off with the "Average" switch in the UI). The other is what we call "momentum", which is a bit idiosyncratic.
The momentum line has separate "up" and "down" components. The "up" line is computed as the (weighted) percentage of respondents whose rating is higher in this tick than in the immediately previous tick, but excluding those who were already at the maximum in the previous tick. The "down" line is defined symmetrically. This is vaguely related to the first derivative of the average.