From patchwork Tue Mar 1 03:54:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ye Chuan X-Patchwork-Id: 34554 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:d078:0:0:0:0 with SMTP id x24csp3328340nkx; Mon, 28 Feb 2022 19:55:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJx1mOXih1XBQmF+VjyaUQseb+J8GNBKp/NT+0UW/4eTEexPdghj2auilaz7buviYHzdV5Zs X-Received: by 2002:aa7:dd9a:0:b0:410:b875:ab95 with SMTP id g26-20020aa7dd9a000000b00410b875ab95mr22288877edv.248.1646106906727; Mon, 28 Feb 2022 19:55:06 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e8-20020a1709061e8800b006d076e0adc5si7705854ejj.157.2022.02.28.19.55.05; Mon, 28 Feb 2022 19:55:06 -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=@hotmail.com header.s=selector1 header.b=DoSLtMHQ; arc=fail (body hash mismatch); 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=NONE dis=NONE) header.from=hotmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 64DDE68B132; Tue, 1 Mar 2022 05:55:01 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08olkn2056.outbound.protection.outlook.com [40.92.45.56]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 693BC68B08A for ; Tue, 1 Mar 2022 05:54:55 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cdaVFULEehkxW/FTSm5vsislvbrS0SV8J+cJ5TuKBN9ABZQ1ffjnShxoKILjOBUm8KrzYiaYeW8oxrPc83zPl7BqNweeuJL9tDfeM773mWAzDhHmmg8BO/w31jRmnjnJ1Ts5eezcXSQkAjCJvPyUtjoqZpNIx7ag0Lrn6n/ku8lROnJCt5Eoy6OZ09pB0WRSkXCzEbLVc04jRPyHg3M4bNoqMf+2OeHhInoGGatINM2yy4lxcCUKJDPXTzcCZxKWaE5qtHxI9XXKJArUj7aNZxEtg+Qv6kOdsXRnoC/FLSBVCoBJvqAlcX6PQYF58oWrc4wBEqVok5JNE2sWiXzG5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+1mXUlbLk0s9gVkSvggGRFHE9zV60D/WWEHvHwjQp9g=; b=VlcMjEwtfaKkm7rQUyePMluOg/Z4hzKQvjvpmZphYoiQUBYzwmehSe17bwypzYXMWF8ehUUGQRHvfHbRHURT0V+OcQGqQJmm9hdKbDdnFZQwOjq6TOKKaHYBZcVqBUKTCGWTYeiuwtKi+3MapSe2G7Ibbh5PXLTAVHio/tmZfoi6rqE1hh7lwXaSv9Nivem0UykgYNJxYpg0lZL9n5qYm+FwVZTPegMNhRvVYm/MAziIdbHjD0IOKlfykiyxh5XL9M9KvTMGKP/omhkbPOOwtFxjHrgHU9WKqVcmy7QM2S2FwJOI7+1bhgBnGB50syzT0H3aeWXHaTUZ4ZunTyB7sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+1mXUlbLk0s9gVkSvggGRFHE9zV60D/WWEHvHwjQp9g=; b=DoSLtMHQHnlUKP7zTQf8Q2ettOExJBpLls7mdy8gJ9bRZdyahrc2pt82NURo88BXoTUHyaNq0QfouTgj/q+vszNyCt4iKMUxDofkquF1Z2knCgmCFi3y215PALOn2a7E2E8WneEmCkTHWfol8SuN7+CWye6tcweFLlUl5JMrRoxUBHK+gvMYRf1/s+NToCqF/lva328NS4lzTvneRGvwV7/vX2OjslkwdCkFULn/iYRacuUQVhvfy2+TgehZVa1cBbQPh3VDkct6EcuNQiJMG38d9voW8jApUYKdemFWQ5AKRUsye6lKH+Mz4dbi9HK6hl6ZuhKlcOUPaHAt72ZvHQ== Received: from SA1PR17MB5122.namprd17.prod.outlook.com (2603:10b6:806:1b5::9) by DM8PR17MB4982.namprd17.prod.outlook.com (2603:10b6:8:29::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26; Tue, 1 Mar 2022 03:54:52 +0000 Received: from SA1PR17MB5122.namprd17.prod.outlook.com ([fe80::c532:34c4:902:d206]) by SA1PR17MB5122.namprd17.prod.outlook.com ([fe80::c532:34c4:902:d206%5]) with mapi id 15.20.5017.026; Tue, 1 Mar 2022 03:54:52 +0000 From: Ye Chuan To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] libavformat/concatdev.c use the unified time base Thread-Index: AQHYLR+TVNhQSccE0UuPgqCEFfTJ+w== Date: Tue, 1 Mar 2022 03:54:52 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [MYSE8nxdRbM/qGMv/RE1CJOS11YSH7LM] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b4e20790-f8bd-47c5-fcad-08d9fb373d88 x-ms-traffictypediagnostic: DM8PR17MB4982:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5q0lUuZn5/HE+5yAQEKaWV16mG5CMKUbji9NvPNSLel5WzYziMdO8sRmgefabw+fZhKAYnp+nR41+3s/T0SgjwE33noFln/pltMNZZ9gyRhSfjOPkAtvz63YOP3j1z03g0iLzBN1SJcvDf0ZTCN/bUWLV3G+JrV97Sak60MNAphGXjlOZuAcMRUxImW4TWUobk622gyoakG2/qjfr1iC1CuonBc/OMz+pm5G1fwvEjv1hgUmH4Bk7cWjAd/jhRHlCYdkWB7XlSEClQT2k1CuAZ3XgzTiFz0akF+QWpPZxqgBQMU0KkY23gdKGBGGzjahN5hsrjEP0DZ8SiB+SNJcNhh0Ky0x5VXpLezPWNDINTa38lCxJvK7Cf1CNrdBfNVA0TJCYvnqTR45l4FeuloBSnIRZ2o4ALSvxFBfKCiCdZsThMGP8ws0iUIVsaURWSo7FgNC5mNsqNGLm82C9WDSG/AIdzhtNQI+TCM9RbFVWPZRcTwsnXfKcOQ+25nJimd7Ba4r1ChmlKKbs/mGqZid/TiJV2hk1KY35UTOAMA5rszuaUqc5im3X+ZQ8grHkLYb/6LyADlpMIVQzTQlDgwP8A== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: g2hEg7DB/Wx1kELNjv0+NCXAwNSytdblXWaqca2yMYNAu7+kTNBJYk46/bedppuSq1Xr5vJSC1uhC+uIL/p0yG2RMjpfj5/JMqNhjiLE9ZRpQtHF9cooSzz1eysgOUwgdP/bao3pJP2v6V6SP0DojX8ZCVzeZud2KIxOKHj1gfLUkfVi73GjurrdVHWKcEvihdFz72z9eZ94U+N6SVr6//f/UX7lvOctOrNZnFSoDHTKOusCL2TKPEwaS4EsZBIbvEYhJgb6rFLDfGDMyOKmT61PINuptYs5GQ1OU+qYTGyXJhHpWUNj1OAhIt88bAIcrVFw8FONH8AJB2uJIJ7zcJjiK7kGWLj1rpseCXcj6RQj0L4mDUk5nzalYH/ZAPtHkoeJO8CaIHuxZSqmgdpRYLlt8eVR3diVGLy/cfgnCBIl0FqIsUKW/dcBU99QB34phqLrstYjxfhEFZRsvqeVzfqe0bYPnfO5Upcg5iIdqmj6NhvzOauRJl89yWKaVPS4kMsO6LoszImBkFIJMPgPvf4D2rT8QJbien8IVOk9DatlQTQQkbiLjDcT3XmBznnlymrg8thfi4dVIiAlJ6evUfg0CV1af6QEq08FE7sRq7i6GTbhv7F5U2WhdIXEX59MstxxXYn8nLQVX6LwuA/WxLEK7nUsq4QVnMxhXHLqNqK4e3ml67oJgqBjITU0ka1tS10nDzloPqyLkumH4ppJqOmcOQZsrv2yv2BlkcVwZhvdmYy+tj5cJgDomyBNd3deR4/9+0g7CVUWeOxk7ff55Oj4bgtd1k6aQtdmPc+IiRV9Pp1NH/Q/VM1f2B1LZfW2XB72ETrkIzyXUsVoehf/KDmIdNXwxgIfATQo73iBgsl0Ovr5Sx+rH5xC4sAtWHwwWKDmVt95c6WsoDtIqh3jA/wITzv7PAouqoAXavGPKfNJBo/QCvkNle3DuIV/YW6Gm4kEy84UZAz7JpILPApbWlJS365ou1jZr4meJiDszDk= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-c704e.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5122.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: b4e20790-f8bd-47c5-fcad-08d9fb373d88 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2022 03:54:52.3328 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR17MB4982 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] libavformat/concatdev.c use the unified time base 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: XzlmOCHcZ3rP in some case, the input files have different time base even though they share the same codec and codec parameters, so when we replace the packet, we need use the unified time base instead of it of each stream own, which may lead to wrong pts/dts of the output packet. Signed-off-by: Chuan Ye > --- libavformat/concatdec.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -- 2.30.1 (Apple Git-130) diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 0603c6e254..f7067d5059 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -740,6 +740,7 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) ConcatStream *cs; AVStream *st; FFStream *sti; + AVRational output_tb; if (cat->eof) return AVERROR_EOF; @@ -782,13 +783,15 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); + /* replace the pkt base on the time base of target output stream */ + output_tb = avf->streams[cs->out_stream_index]->time_base; delta = av_rescale_q(cat->cur_file->start_time - cat->cur_file->file_inpoint, AV_TIME_BASE_Q, - cat->avf->streams[pkt->stream_index]->time_base); + output_tb); if (pkt->pts != AV_NOPTS_VALUE) - pkt->pts += delta; + pkt->pts = av_rescale_q(pkt->pts, st->time_base, output_tb) + delta; if (pkt->dts != AV_NOPTS_VALUE) - pkt->dts += delta; + pkt->dts = av_rescale_q(pkt->dts, st->time_base, output_tb) + delta; av_log(avf, AV_LOG_DEBUG, " -> pts:%s pts_time:%s dts:%s dts_time:%s\n", av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base));