[vlc-devel] [PATCH 04/15] vlc_common: add helper function for explicit nanosecond to/from mtime_t conversion

Steve Lhomme robux4 at ycbcr.xyz
Mon Jun 18 08:58:14 CEST 2018

On 2018-06-16 10:53 AM, Rémi Denis-Courmont wrote:
> Le lauantaina 16. kesäkuuta 2018, 11.32.50 EEST Steve Lhomme a écrit :
>> On 2018-06-16 10:23 AM, Rémi Denis-Courmont wrote:
>>> Le lauantaina 16. kesäkuuta 2018, 10.34.18 EEST Steve Lhomme a écrit :
>>>> I used milli instead of ms so it's not confused with msftime_t. And so
>>>> micro and nano seems like logical siblings.
>>> Then keep mtime and screw this series.
>> I find mtime misleading. Especially because it assumes a certain value
>> and in many parts of the code 1000 or 1000000 is used instead of proper
>> conversion because what could possibly go wrong ?
> Well, these things regularly go wrong:
> - failing to convert, typically the caching values between ms and µs,
> - failing to expand before computation, typically from 32-bits to 64-bits.
> mtime_t is not a particularly good name, but it's anyway assumed same as
> int64_t all over the place, so the name does not matter than much.
>> With a tick (or something else) you know you have to take care of a
>> conversion in the proper time format you're handling.
> But that's exactly the point. If you use tick, jiffy or whatever other non-
> standard unit, then you have to define what the other unit is.

I see it the other way. One should not know what a tick is nor the 
precision it can have. The API around it should hide all the 
intricacies. The fact the name implies it's in microseconds lead to a 
lot of dirty code we have right now.

> That's why ns, us/µs, ms are far better names than nano, micro and milli.

I would like nsec, msec and µsec but it's not possible and using ms may 
lead to confusion. And us doesn't sound anything like µs it just looks 
the same.
>> mtime_t will stay for backward compatibility but IMO it should not be
>> used anymore.
> I don't mind changing the name to something short and correctly namespaced.
> But it would be utterly vain in any case. The code assumes int64_t in a
> variety of subtle and not-so-subtle ways, no matter the typedef alias.

This is all fixed. See https://code.videolan.org/robUx4/vlc/tree/clock/43

>>> As far as I am concerned, if you don't specify the time unit in a computer
>>> program, you are using local jiffies, not seconds. Talk about confusing.
>>> ISO C uses nsec, not nano. SI uses ms, µs and ns with us as the defacto
>>> standard transliteration of µs.
>> We could use nsec instead of nano to align with the standard. But then
>> msec could be either milliseconds or microseconds.
> Not really. VLC did confuse m for micro. But in the standards, it's always u/µ
> for micro and m for milli.

I don't like it. But if everyone agrees on this fine. I can change that 
easily in my patches.

More information about the vlc-devel mailing list