Re: [PATCH] v4l: Cast timestamp tv_usec to singned

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 25, 2021 at 11:29 AM Stanimir Varbanov
<stanimir.varbanov@xxxxxxxxxx> wrote:
>
> Some of the MPEG4 standards allows negative timestamps. Correct
> tv_usec cast to s32.
>
> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@xxxxxxxxxx>

Can you clarify what exactly is allowed in MPEG4? Normally we require
a normalized timestamp to come from user space in other kernel interfaces,
i.e. an arbitrary .tv_sec value that may or may not be negative, plus
a sub-second .tv_usec between 0 and 999999, or a .tv_nsect between 0
and 999999999 to indicate the time after the last full second.

E.g. a negative timestamp of -1.0001 seconds would be represented as
.tv_sec = -2, .tv_usec = 999900.

What is the range defined in MPEG4? It might be necessary to check
for the specific range and reject anything outside of that, in particular
if MPEG4 also allows positive microsecond values larger than 999999.

         Arnd

>  include/media/v4l2-common.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
> index 3eb202259e8c..1ed61416003a 100644
> --- a/include/media/v4l2-common.h
> +++ b/include/media/v4l2-common.h
> @@ -544,11 +544,11 @@ static inline u64 v4l2_buffer_get_timestamp(const struct v4l2_buffer *buf)
>  {
>         /*
>          * When the timestamp comes from 32-bit user space, there may be
> -        * uninitialized data in tv_usec, so cast it to u32.
> +        * uninitialized data in tv_usec, so cast it to s32.
>          * Otherwise allow invalid input for backwards compatibility.
>          */
>         return buf->timestamp.tv_sec * NSEC_PER_SEC +
> -               (u32)buf->timestamp.tv_usec * NSEC_PER_USEC;
> +               (s32)buf->timestamp.tv_usec * NSEC_PER_USEC;
>  }
>



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux