From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 455C741337 for ; Tue, 21 Nov 2023 13:38:22 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A7C2D68CBAE; Tue, 21 Nov 2023 15:38:18 +0200 (EET) Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0F66A68BAE0 for ; Tue, 21 Nov 2023 15:38:12 +0200 (EET) Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-507973f3b65so7801640e87.3 for ; Tue, 21 Nov 2023 05:38:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700573890; x=1701178690; darn=ffmpeg.org; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=T0ZrEJ+kMFmUeaSMsoaFhMJZUt18RMoued7pcosHjI8=; b=dH6yMjWzv8CbzmAyzqek1M8sGS3KnmU/kxvd80g6gmAHeb6dLfEgW2fNxcVL10cGgA lyFhsx+7jSRCgBeHzqQF3h7ZPJRCkvsVhad0+9m4uvVLUN4iMFmA8XLnN1vqwSWpAjsa AW4Z5Et07biW0AAqLGvfe9V+v3Oz8rmiE658BOhV7PR8giJy0/eAkyowNEV4mu2dI+Zl tKLiK+4l727r+E9z9ZGN2Ykm4QRfs/V63HX3oGmLLkiPTc4vKz8loN1MmP8tjg7PZUe2 VMFNAdm5W9H0mZ+Xa1Aw572pincVzxUaK2xuR1Hkf9YS3jFdNm68BkBY9RGWuMfRy/C4 E6Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700573890; x=1701178690; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=T0ZrEJ+kMFmUeaSMsoaFhMJZUt18RMoued7pcosHjI8=; b=pjhiZAmENa44rPgM2Hd5piSxK7VItZzJGrRN/Jd14NPYZAg2NI3u4i8YvrSXaWtyVL Xn6WdDQvYNAmo1kdlcKbkBLqzOVnDAwZQKVPQkJF5ljpF4fFST61Ti3oRa/6Wr5jnYLu Srl7RCf6fxGPz0aoN5WY7AfmCTM52svk+jls+YLFta+PXX7ABrkjzCX0wY2vXzWpEsav Fup9kd+KMe2X8LFvoy65lwwTCqLOJgwtYMFyU8CLC/JU6QKqsbZ3oEEWea3N9oe8AJaR QKj6BogsWby1t5SC74/4AWnP47emw8e69xBJMThm8w+h+/JtlgjvqIfz1RfAM6NbLGRT ne5Q== X-Gm-Message-State: AOJu0Ywms4zAhR8BU692Cz0x0r80eWblRSVTym8r1BIC4g8CR/FeagGu JO9Ap2mGoQ9VxJERw7oRwJyZFFvGyzY= X-Google-Smtp-Source: AGHT+IG/MXg7sORwWvQcBfaJhn0zEsuc1kUFKN8oCfMv4vLY/bwoiPLxPA0cflwFK0mIkK73lWk6Tg== X-Received: by 2002:ac2:5988:0:b0:509:441d:9bea with SMTP id w8-20020ac25988000000b00509441d9beamr7690301lfn.20.1700573890281; Tue, 21 Nov 2023 05:38:10 -0800 (PST) Received: from [192.168.1.36] ([95.12.112.237]) by smtp.gmail.com with ESMTPSA id h18-20020a05600c351200b004063ea92492sm17352896wmq.22.2023.11.21.05.38.09 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Nov 2023 05:38:09 -0800 (PST) Message-ID: Date: Tue, 21 Nov 2023 16:38:08 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Muhammed To: ffmpeg-devel@ffmpeg.org Content-Language: en-US Subject: [FFmpeg-devel] [PATCH] fix rounding errors in .ass subtitles format timings X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Signed-off-by: mohad12211 --- fftools/ffmpeg_mux.c | 2 ++ libavcodec/avpacket.c | 9 +++++++++ libavcodec/packet.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c index 30c0330..7c9f03c 100644 --- a/fftools/ffmpeg_mux.c +++ b/fftools/ffmpeg_mux.c @@ -92,6 +92,8 @@ static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt) pkt->pts = pkt->dts; pkt->duration = av_rescale_q(pkt->duration, pkt->time_base, ost->st->time_base); + } else if (ost->type == AVMEDIA_TYPE_SUBTITLE && ost->par_in->codec_id == AV_CODEC_ID_ASS) { + av_packet_rescale_ts_end(pkt, pkt->time_base, ost->st->time_base); } else av_packet_rescale_ts(pkt, pkt->time_base, ost->st->time_base); pkt->time_base = ost->st->time_base; diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index e29725c..3926590 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -524,6 +524,15 @@ int av_packet_make_writable(AVPacket *pkt) return 0; } +void av_packet_rescale_ts_end(AVPacket *pkt, AVRational src_tb, AVRational dst_tb) +{ + int64_t old_pts = pkt->pts; + pkt->pts = av_rescale_q(pkt->pts, src_tb, dst_tb); + if (pkt->dts != AV_NOPTS_VALUE) + pkt->dts = av_rescale_q(pkt->dts, src_tb, dst_tb); + pkt->duration = av_rescale_q(pkt->duration + old_pts, src_tb, dst_tb) - pkt->pts; +} + void av_packet_rescale_ts(AVPacket *pkt, AVRational src_tb, AVRational dst_tb) { if (pkt->pts != AV_NOPTS_VALUE) diff --git a/libavcodec/packet.h b/libavcodec/packet.h index b19409b..49be5cd 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -839,6 +839,8 @@ int av_packet_make_writable(AVPacket *pkt); */ void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); +void av_packet_rescale_ts_end(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); + /** * @} */ -- 2.42.1 My proposed fix for https://trac.ffmpeg.org/ticket/10659 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".