From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id E31774C034 for ; Mon, 5 Jan 2026 22:47:24 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'1EMTk+J/0T7mHiH4jaWgSfr64JbUGIXP5BWhPf+k3qU=', expected b'AtapXCPG3p0MxkaWqjyjJTd42SYmAtYpxqo4nKe1Ceo=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1767653236; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=1EMTk+J/0T7mHiH4jaWgSfr64JbUGIXP5BWhPf+k3qU=; b=emgdaOv5xBzWrtMb72e2IQgFGNIqbisBi3RN128jsTwUDO9dEiwHHibQjFEnD/37kCiR9 O4k5vZAObMuzuelYcMRXzBnKz4By+meOPmE0jy+5vgWJ2mhJYOyzHaw/HCuCUQLgk4PcWZR w4eWUfFkIOr6obxg8QdnSe2kS+VNy8vvn0TR6xgN5lXOs5WC+JXErDFrKCfElwn2Bk0rrLn B9LV3PPYWlifGZohr5BGy/4IvARNiGrShdS3/u01IaFf0PestWC6bARteolF/My4WeBEkMc 01QYYx3VmPUfrF8Mr2LnCoD4cTnWWQaZZ2F7ohgz9a36HHcEMN+/i4Y0xTfg== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 2DEB6690CE5; Tue, 6 Jan 2026 00:47:16 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1767653222; b=j6nAA4Rf4iSgPDtbaw7qyEkfUIKEqOLgrRvFb0+ba6rKJdBCiEIZ8+fnkKP3pGChFKGfa SITchOofDJtGVU6mPB2CKIszhcLEDruQjyBXtRWYQszNDOxaijon6Vdyl/hFt008W6lfw5p FYFQ/2LAZgVPira3P7agTlWK8P+WGcjewCqCD9j45sDhsKBkiJkt9U44KqlGizw/AdqKOeD TVNup9plxzI8X45PczOyLibwt3Tw5Vb6ZhIGVj4diUuyAVKgQwuj7J9H03Sr0I1wZPh0mIZ C1vEev4IYK1wKUjwtczMgiw9fe1XeMJo/0atjMTWQv9MNePskbtUQfqHIeCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1767653222; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=ceKYJBu51XkwKWokHN6aeImd3GQ2Lf08lCDhOv6iowU=; b=aPhhHQrvyENc1szJM9hZrSXXw/aj1vjrbjd2OqVqx8cbVaGj0PdjS9CscnjyFhmfb+J1Q NrO/C8w0nNfM1YhzafQgKmEK7zLaziEZcn7fx8II1wFRZI6BZYYLjKNOe0Z/+RmFhx4C5vA LTKAFXbCpIqU9froS/M4eAX5q89Or50ENnuYstCX4pUkDRe0GywKTnlJmkNJRtvYhbx8S+3 ZRcRTFcsYi8kHrSOxgqbR2J1MhyTW+xdV8pn/cWbKcejX4Qvc4LYbCPNaSSztV0jDV1vTpB nW1HeyOHo2YJVoqeeau6Mv3Kt9Nwyx9TJejcdjaFpUDR2dz+9FymuwSp6lyQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1767653214; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=AtapXCPG3p0MxkaWqjyjJTd42SYmAtYpxqo4nKe1Ceo=; b=AIr/PdtZmO7doEPxWiHr19XwsVuHwUS6T3FsDGwJgRnalV4UlHzuGkgJVVhKfr6pb1ga6 k4mcTGj4pvSCwpbbp9sF3MF9kHrAYOyISv5pqmtPm0gDayuKqnEmpZ0xvKuXHIZwI9GcMWw dfYwPWZXebp/T/3LBMbcO+XYBTssayT9RG+O6ISZWyBMB+Ug3LFjPAHKYDgYKbAFQ1MFxbO eWa/GK/E0gFrbxx98lx+sCzCmaPCkcBKxRBFgcSbun6DbH7uf30ZOeJdHpz+dNuG7gy0SFd 31KzD9S6JDEXXXPLulzBTrS/Myqk6/B6PeZsQsyTjma8Xo11jAEDjvgRHC3Q== Received: from de3a2b3407a2 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 024DC68FB83 for ; Tue, 6 Jan 2026 00:46:53 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Mon, 05 Jan 2026 22:46:53 -0000 Message-ID: <176765321421.25.15684643618964112305@4457048688e7> Message-ID-Hash: F43SSX6IVVKAEOKC3NKOMN6ZQEKMTEYF X-Message-ID-Hash: F43SSX6IVVKAEOKC3NKOMN6ZQEKMTEYF X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] fftools/ffmpeg_demux: Fix readrate sleep calculation (PR #21386) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: desmondliu via ffmpeg-devel Cc: desmondliu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21386 opened by desmondliu URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21386 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21386.patch Calculation of max_pts and limit_pts may overflow because adding (int64_t + int64_t + float) results in a float that easily overflows. This can trigger a very long av_usleep(). >>From aec3a8741e2304f4e9caf64017c418240a31fc37 Mon Sep 17 00:00:00 2001 From: Desmond Liu Date: Mon, 5 Jan 2026 13:34:24 -0800 Subject: [PATCH] fftools/ffmpeg_demux: Fix readrate sleep calculation Calculation of max_pts and limit_pts may overflow because adding (int64_t + int64_t + float) results in a float that easily overflows. This can trigger a very long av_usleep(). --- fftools/ffmpeg_demux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index cb79dd7611..193967fce1 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -525,7 +525,7 @@ static void readrate_sleep(Demuxer *d) pts = av_rescale(ds->dts, 1000000, AV_TIME_BASE); now = av_gettime_relative(); wc_elapsed = now - d->wallclock_start; - max_pts = stream_ts_offset + initial_burst + wc_elapsed * d->readrate; + max_pts = stream_ts_offset + initial_burst + (int64_t)(wc_elapsed * d->readrate); lag = FFMAX(max_pts - pts, 0); if ( (!ds->lag && lag > 0.3 * AV_TIME_BASE) || ( lag > ds->lag + 0.3 * AV_TIME_BASE) ) { ds->lag = lag; @@ -539,7 +539,7 @@ static void readrate_sleep(Demuxer *d) ds->lag = ds->resume_wc = ds->resume_pts = 0; if (ds->resume_wc) { elapsed = now - ds->resume_wc; - limit_pts = ds->resume_pts + elapsed * d->readrate_catchup; + limit_pts = ds->resume_pts + (int64_t)(elapsed * d->readrate_catchup); } else { elapsed = wc_elapsed; limit_pts = max_pts; -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org