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

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

 




On 3/25/21 12:51 PM, Arnd Bergmann wrote:
> 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.

Sure, I will try to collect some more info. Thanks!

> 
> 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;
>>  }
>>

-- 
regards,
Stan



[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