Re: [PATCH v9 6/6] media: uvcvideo: Fix hw timestamp handling for slow FPS

From: Sergey Senozhatsky
Date: Wed Mar 15 2023 - 23:09:19 EST


On (23/03/15 14:30), Ricardo Ribalda wrote:
> In UVC 1.5 we get a single clock value per frame. With the current
> buffer size of 32, FPS slowers than 32 might roll-over twice.
>
> The current code cannot handle two roll-over and provide invalid
> timestamps.
>
> Revome all the samples from the circular buffer that are more than two
> rollovers old, so the algorithm always provides good timestamps.
>
> Note that we are removing values that are more than one second old,
> which means that there is enough distance between the two points that
> we use for the interpolation to provide good values.
>
> Tested-by: HungNien Chen <hn.chen@xxxxxxxxxxxxx>
> Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>

Reviewed-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>

[..]
> + if (clock->count > 0 && clock->last_sof > sample->dev_sof) {
> + /*
> + * Remove data from the circular buffer that is older than the
> + * last overflow. We only support one overflow per circular
> + * buffer.
> + */
> + if (clock->last_sof_overflow != -1) {
> + clock->count = (clock->head - clock->last_sof_overflow
> + + clock->count) % clock->count;

A minor nit: there is a tab between `clock->count)` and `% clock->count` :)