From patchwork Tue Nov 21 13:38:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammed X-Patchwork-Id: 44739 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8c2a:b0:181:818d:5e7f with SMTP id j42csp548631pzh; Tue, 21 Nov 2023 05:38:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IHCovCEvge0t6iLjOfhOnV2hedi3mxIquzXDIPGoWH7wEprpexf4/OHj9v7Fi7LX8g3NWe0 X-Received: by 2002:a17:907:72d1:b0:a00:211c:9a9a with SMTP id du17-20020a17090772d100b00a00211c9a9amr3741866ejc.5.1700573903886; Tue, 21 Nov 2023 05:38:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700573903; cv=none; d=google.com; s=arc-20160816; b=FtOo4vH+GZkxC7dWSMuZUanMR/VfBi8OwTU6gmk/xES9mdgGzz/wwEny7nujVpupTK 4UjM/Lux96O0LwSIowyXUdIZpoR36oyu0dbms0u/iN73tELm4BT9FkloODBbFlANUogu MeSw0dIrqXX6696KGldBEzVxlSqF24JbdS67OAeblWIMGyyMwm2BTCiRPOzrV457Wlw3 lDHKKIwT/NOYpOBk+2Z+q/9kIu9SF5/WE/LYxEEAz9AFS/3PeLtjspACGLjnLXxGTxND wfh40f8yfBvDxZHCKmiy0NFbJebXUolauIoUkzoGjR/Ob7Hor/XGeWa2Lmpu6U/qHfub wuZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:content-language:to:from:user-agent:mime-version :date:message-id:dkim-signature:delivered-to; bh=2n000CAvItY0vFx7FZDgC0fe3vOa1Nm9wHXXjcbVJes=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=uoq/ogW1QldCEecFhtY5ovXEoAenkbAc0RnxuuUW3wdsjaasafS93EBwfzwWvmpLZY /rj7x00j/D5W3+t+Exjns6QsHDzaYCH0ryjCVxA/YokGwTkpTilWB5bLMDv5rpCkJ3O2 VkcynDRuMO59ZrgsR0m0M+Wwd69aJbtP9Kzvorzgkx7pEMh//+S25T1+Sawe3vYXB5jw Vt+D9H/cVKPPzu4fivm7CwCkCzJig1TuxB/yuyI8ZybWJbfZqsEwVI67651+ttsJJZ9f BRXPeBXmFlH4heSSimNeA8TWJZ2ntYPF28hD7Qm5WY6aXt6WwRWH8lmn6DM2jkZ0RWJG vD6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=dH6yMjWz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id k15-20020a1709065fcf00b009a9f295d7dasi5808022ejv.593.2023.11.21.05.38.22; Tue, 21 Nov 2023 05:38:23 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=dH6yMjWz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E539C68CBB5; Tue, 21 Nov 2023 15:38:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org 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-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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2cq2AKXhZzPp 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); + /** * @}