[FFmpeg-devel] [PATCH v2 1/2] fftools/ffmpeg: fix progress log message in case pts is not available
Tobias Rapp
t.rapp at noa-archive.com
Tue Feb 27 09:49:19 EET 2018
On 27.02.2018 01:12, Michael Niedermayer wrote:
> On Mon, Feb 26, 2018 at 05:09:04PM +0100, Tobias Rapp wrote:
>> Move time string formatting into inline function. Also fixes out_time
>> sign prefix for progress report.
>>
>> Signed-off-by: Tobias Rapp <t.rapp at noa-archive.com>
>> ---
>> fftools/ffmpeg.c | 48 +++++++++++++++++++++++++++++++-----------------
>> 1 file changed, 31 insertions(+), 17 deletions(-)
>>
>> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
>> index 32caa4b..0097a7d 100644
>> --- a/fftools/ffmpeg.c
>> +++ b/fftools/ffmpeg.c
>> @@ -1518,6 +1518,27 @@ static int reap_filters(int flush)
>> return 0;
>> }
>>
>> +static inline char *pts_to_hms_str(char *buf, int64_t pts, unsigned int digits)
>
> char buf[AV_TS_MAX_STRING_SIZE]
>
> or the buf size should be passed too, in fact this might be better anyway
Will change.
>> +{
>> + const char *hours_sign;
>> + int hours, mins;
>> + double secs;
>> +
>> + if (pts == AV_NOPTS_VALUE) {
>> + snprintf(buf, AV_TS_MAX_STRING_SIZE, "N/A");
>> + } else {
>> + hours_sign = (pts < 0) ? "-" : "";
>> + secs = (double)FFABS(pts) / AV_TIME_BASE;
>> + mins = (int)secs / 60;
>> + secs = secs - mins * 60;
>> + hours = mins / 60;
>> + mins %= 60;
>
> This is not the same code, also with double it can produce inexact
> results and results differing between platforms
I changed secs to double to handle the cases with different number of
sub-second digits more easily. Would it be OK to output two digits after
the decimal point in both cases? The progress report contains the
precise out_time_ms value anyway.
Regards,
Tobias
More information about the ffmpeg-devel
mailing list