[FFmpeg-devel] [PATCH] avformat/dump: Change precision of stream start offsets
Marton Balint
cus at passwd.hu
Tue Apr 22 22:25:49 EEST 2025
On Tue, 22 Apr 2025, Gyan Doshi wrote:
>
>
> On 2025-04-22 02:22 am, softworkz . wrote:
>>
>>> -----Original Message-----
>>> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
>>> Marton Balint
>>> Sent: Montag, 21. April 2025 22:18
>>> To: FFmpeg development discussions and patches <ffmpeg-
>>> devel at ffmpeg.org>
>>> Subject: Re: [FFmpeg-devel] [PATCH] avformat/dump: Change precision of
>>> stream start offsets
>>>
>>>
>>>
>>> On Mon, 21 Apr 2025, softworkz . wrote:
>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
>>>>> Marton Balint
>>>>> Sent: Montag, 21. April 2025 21:32
>>>>> To: FFmpeg development discussions and patches <ffmpeg-
>>>>> devel at ffmpeg.org>
>>>>> Subject: Re: [FFmpeg-devel] [PATCH] avformat/dump: Change precision
>>> of
>>>>> stream start offsets
>>>>>
>>>>>
>>>>>
>>>>> On Mon, 21 Apr 2025, softworkz . wrote:
>>>>>
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of
>>>>> Gyan
>>>>>>> Doshi
>>>>>>> Sent: Montag, 21. April 2025 06:51
>>>>>>> To: ffmpeg-devel at ffmpeg.org
>>>>>>> Subject: Re: [FFmpeg-devel] [PATCH] avformat/dump: Change
>>> precision
>>>>> of
>>>>>>> stream start offsets
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 2025-04-21 01:41 am, softworkz wrote:
>>>>>>>> From: softworkz <softworkz at hotmail.com>
>>>>>>>>
>>>>>>>> Changing this to 6 digits to align with other
>>>>>>>> printed times
>>>>>>>>
>>>>>>>> Signed-off-by: softworkz <softworkz at hotmail.com>
>>>>>>>> ---
>>>>>>>> avformat/dump: Change precision of stream start offsets
>>>>>>>>
>>>>>>>> Changing this to 6 digits to align with other printed times
>>>>>>>>
>>>>>>>> Signed-off-by: softworkz softworkz at hotmail.com
>>>>>>>>
>>>>>>>> Published-As:
>>> https://github.com/ffstaging/FFmpeg/releases/tag/pr-
>>>>>>> ffstaging-72%2Fsoftworkz%2Fsubmit_start_offsets-v1
>>>>>>>> Fetch-It-Via: git fetch https://github.com/ffstaging/FFmpeg pr-
>>>>>>> ffstaging-72/softworkz/submit_start_offsets-v1
>>>>>>>> Pull-Request: https://github.com/ffstaging/FFmpeg/pull/72
>>>>>>>>
>>>>>>>> libavformat/dump.c | 2 +-
>>>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/libavformat/dump.c b/libavformat/dump.c
>>>>>>>> index 8c7db7b275..1bd0424f3d 100644
>>>>>>>> --- a/libavformat/dump.c
>>>>>>>> +++ b/libavformat/dump.c
>>>>>>>> @@ -680,7 +680,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
>>>>>>>>
>>>>>>>> if (st->start_time != AV_NOPTS_VALUE && st->start_time !=
>>> 0
>>>>> &&
>>>>>>> st->time_base.den && st->time_base.num) {
>>>>>>>> const double stream_start = av_q2d(st->time_base) *
>>> st-
>>>>>>>> start_time;
>>>>>>>> - av_log(NULL, AV_LOG_INFO, ", Start-Time %.3fs",
>>>>>>> stream_start);
>>>>>>>> + av_log(NULL, AV_LOG_INFO, ", Start-Time %.6fs",
>>>>>>> stream_start);
>>>>>>>
>>>>>>> The camel case is incongruous with the formatting of the text
>>> next
>>>>> To
>>>>>>> It.
>>>>>> Hi Gyan,
>>>>>>
>>>>>> as far as I'm seeing it, captions/labels are title case and values
>>>>> are
>>>>>> lower case. I would consider "Start-Time" to be a caption/label.
>>>>> Let's
>>>>>> look at an example:
>>>>>>
>>>>>> Stream #0:0[0x8fd]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>>>>> yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], Level
>>> 40,
>>>>> 25 fps, 50 tbr, 90k tbn, Start-Time 32476.588s
>>>>>> Stream #0:1[0x907](dut): Audio: mp2 ([3][0][0][0] / 0x0003),
>>> 48000
>>>>> Hz, stereo, fltp, 256 kb/s, Start-Time 32476.706s
>>>>>> Stream #0:2[0x908](dut): Audio: ac3 (AC-3 / 0x332D4341), 48000
>>> Hz,
>>>>> 5.1(side), fltp, 448 kb/s, Start-Time 32476.643s
>>>>>> Stream #0:3[0x909](GOS): Audio: mp2 ([3][0][0][0] / 0x0003),
>>> 48000
>>>>> Hz, stereo, fltp, 256 kb/s, Start-Time 32476.674s (visual impaired)
>>>>> (descriptions)
>>>>>> Stream #0:4[0x962](dut): Subtitle: dvb_subtitle ([6][0][0][0] /
>>>>> 0x0006), Start-Time 32476.588s
>>>>>> Stream #0:5[0x963](dut): Subtitle: dvb_subtitle ([6][0][0][0] /
>>>>> 0x0006), Start-Time 32476.719s (hearing impaired)
>>>>>
>>>>> I think Gyan means fps, tbr or tbn. These are all lowercase and
>>>>> abbreviations.
>>>> Yes, I understood that. But these are units, not labels.
>>>>
>>>>
>>>>> The one-line stream info should be as compact as
>>>>> possible.
>>>> Agreed.
>>>>
>>>>> So we should make it shorter, and we should lose the "s" unit as
>>>>> well.
>>>> I'm afraid, but omitting the unit makes no sense to me.
>>>>
>>>> Why?
>>> Because it is redundant. You always print the start time in seconds,
>>> users
>>> will have no problem guessing the time measurement unit of timestamps.
>>> E.g. see the status line of ffplay or mpv. Timestamps or time
>>> differences miss the measurement unit, and nobody complianed...
>> It's redundant only for those who know what it is. Everybody else will
>> need to guess whether it's s or ms or us and whether it's in the
>> time base of the stream or not.
>>
>> With the same argument, you can omit kb/s, fps, tbr, tbn etc.
>> (user can infer the units from the order and count of values)
>>
>> This is something that I totally hate when applications are doing it,
>> and I need to dig down deep into the source code for getting a
>> definitive answer. Letting users "guess" is not ok IMO.
>>
>>
>>>>> Something like:
>>>>>
>>>>> "in 1234.567"
>>>> What means "in"?
>>> in is short for inpoint.
>>>
>>>> Maybe "offset" if it's gotta be short..?
>>> Or simply "start", if you don't like "in".
>> It's not about liking, it's just that "in" doesn't ring any bell for me in
>> that context.
>>
>> The problem with start is that it could also mean the timestamp value
>> where the stream (incl. container) starts, so "start-offset" or
>> "stream-start" would be more clear imo, even though I wouldn't completely
>> reject having just "Start".
>>
>>
>> Regarding the casing:
>>
>> Example:
>> Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR
>> 1:1 DAR 16:9], Level 42, 60 fps, 60 tbr, 1k tbn, Start-Time 2.790s
>> (default)
>>
>> Why is "Level" capitalized? This fits into my understanding that I
>> explained before (Labels are capitalized) - how does it fit into the claim
>> that it should all be lower case?
>
> The formatting and presentation should be consistent. Neither (format) start
> or duration indicate units so better to keep it that way. If we do change it,
> it should be for all.
> start-offset wouldn't work since this is printing the absolute first pts of a
> stream.
> stream-start is not necessary since this is being printed within the line for
> an individual stream, so 'start' is fine.
> The Case is a nitpick. Not a blocker. It just looked out of place.
Agreed.
Thanks,
Marton
More information about the ffmpeg-devel
mailing list