From patchwork Fri Jan 26 17:14:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 45844 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:8786:b0:199:de12:6fa6 with SMTP id ph6csp100044pzb; Fri, 26 Jan 2024 09:14:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IHnMhnu64OduJB0ckUN/XcwaZw7SG4a5ZfMAifF68813EzBEQf9dYuiZN7YF1WxrQIv5fZL X-Received: by 2002:a17:906:e54:b0:a30:be5e:c8e7 with SMTP id q20-20020a1709060e5400b00a30be5ec8e7mr946493eji.44.1706289282065; Fri, 26 Jan 2024 09:14:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1706289282; cv=none; d=google.com; s=arc-20160816; b=DjakJtX3UGXOq2nEyxMkx1tFrBKMQy7layFcUhYsvFj87enQ9ItBiWK6c2UCXweKr+ 7Zf1ASEelVaTOrFkhiz55MjGIUeGNuxWhu7vShEIjVkvVMpVR6ryTBnsXyjE2GMOXy28 M89K2MsrHnO6vLzRR+oQa1DHLdyAusrl2rUWtOyssbA8pfeNcoOXd93teGF0mk817ind oONuA8iapbmNtZuHtwbA5NsyArY/uqsPX5243ubwzyhOz2LH1xLiyEmO4hPAZI2UT2Wn cUeyFlIajMeS62DycFfACxFy7y5+B9yyWov6k8Pc+B9UNFHY3ihqeRPNZIvYypdoCpLI im0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=yMy+xj7QNFkABlFNm1hgecbQ6BLW9RCwQ9T7sM5wuTY=; fh=zgMS+X4RExv2k7fU8QdWClnqVJdqO/9UbUuBS5xxJDs=; b=v//SmCNHs6qWo01jXQlMb3bk4yxS+Wkd2l1dMp0zxD1sk077Sf38Mw+mEodFMFxJID zBZ6XwE5ds4qJ2eBl4hhGQnf2l/nOI/x0MgoCJbQERIIlUOcz8jUS2MIiR/sQdMF+OE/ ayXvkZMtGsjn2B4zZPfeoKoyS3czfjRfYiVAadh6SuPykvfifMH4481Xzlo/O1bcYGJm 7/goJlbKURi8oxXDrdHNx2CbZFlqq75JrxsK1iOmaxuTxw+8YG9JKRtMg7y6jGqxeUfH Sn9jd9KYWdlKVq6wWEpie3i3mMulHHbdSzm0+28++SQGmU96On39QTVq7TFSJNxkODoE q7Gg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c22-20020a17090603d600b00a28e8e72e8dsi785980eja.997.2024.01.26.09.14.41; Fri, 26 Jan 2024 09:14:42 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 215A568D16A; Fri, 26 Jan 2024 19:14:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-1.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 37AF368D0B5 for ; Fri, 26 Jan 2024 19:14:24 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-1.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 30D1B21604; Fri, 26 Jan 2024 17:14:23 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Fri, 26 Jan 2024 18:14:20 +0100 Message-Id: <20240126171420.239759-2-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240126171420.239759-1-nicolas.gaullier@cji.paris> References: <20240126171420.239759-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/concatdec: fix seek with dts 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 Cc: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JPpj+GuevGt9 Use same heuristic as in fftools. Signed-off-by: Nicolas Gaullier --- libavformat/concatdec.c | 17 +++++++- tests/ref/fate/concat-demuxer-simple2-lavf-ts | 40 ++++++++++++++++++- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index ffa8ade25b..96de9117fe 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -384,7 +384,22 @@ static int open_file(AVFormatContext *avf, unsigned fileno) if ((ret = match_streams(avf)) < 0) return ret; if (file->inpoint != AV_NOPTS_VALUE) { - if ((ret = avformat_seek_file(cat->avf, -1, INT64_MIN, file->inpoint, file->inpoint, 0)) < 0) + int64_t seek_timestamp = file->inpoint; + if (!(cat->avf->iformat->flags & AVFMT_SEEK_TO_PTS)) { + int dts_heuristic = 0; + int i; + for (i=0; iavf->nb_streams; i++) { + const AVCodecParameters *par = cat->avf->streams[i]->codecpar; + if (par->video_delay) { + dts_heuristic = 1; + break; + } + } + if (dts_heuristic) { + seek_timestamp -= 3*AV_TIME_BASE / 23; + } + } + if ((ret = avformat_seek_file(cat->avf, -1, INT64_MIN, seek_timestamp, seek_timestamp, 0)) < 0) return ret; } return 0; diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts b/tests/ref/fate/concat-demuxer-simple2-lavf-ts index 548cab01c6..329b42fbe9 100644 --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts @@ -126,6 +126,24 @@ audio|0|177970|1.977444|177970|1.977444|2351|0.026122|209|N/A|K__ audio|0|180321|2.003567|180321|2.003567|2351|0.026122|209|N/A|K__ video|1|174764|1.941822|171164|1.901822|3600|0.040000|12678|347800|___|MPEGTS Stream ID|224 video|1|178364|1.981822|174764|1.941822|3600|0.040000|24711|361336|K__ +video|1|125182|1.390911|121582|1.350911|3600|0.040000|12398|254552|___|MPEGTS Stream ID|224 +video|1|128782|1.430911|125182|1.390911|3600|0.040000|13455|267336|___|MPEGTS Stream ID|224 +audio|0|99515|1.105722|99515|1.105722|2351|0.026122|209|308508|K__|MPEGTS Stream ID|192 +audio|0|101866|1.131844|101866|1.131844|2351|0.026122|209|N/A|K__ +audio|0|104217|1.157967|104217|1.157967|2351|0.026122|209|N/A|K__ +audio|0|106568|1.184089|106568|1.184089|2351|0.026122|209|N/A|K__ +audio|0|108919|1.210211|108919|1.210211|2351|0.026122|209|N/A|K__ +audio|0|111270|1.236333|111270|1.236333|2351|0.026122|209|N/A|K__ +audio|0|113621|1.262456|113621|1.262456|2351|0.026122|209|N/A|K__ +audio|0|115972|1.288578|115972|1.288578|2351|0.026122|209|N/A|K__ +audio|0|118323|1.314700|118323|1.314700|2351|0.026122|209|N/A|K__ +audio|0|120674|1.340822|120674|1.340822|2351|0.026122|209|N/A|K__ +audio|0|123025|1.366944|123025|1.366944|2351|0.026122|209|N/A|K__ +audio|0|125376|1.393067|125376|1.393067|2351|0.026122|209|N/A|K__ +audio|0|127727|1.419189|127727|1.419189|2351|0.026122|209|N/A|K__ +audio|0|130078|1.445311|130078|1.445311|2351|0.026122|209|N/A|K__ +video|1|132382|1.470911|128782|1.430911|3600|0.040000|13836|281624|___|MPEGTS Stream ID|224 +video|1|135982|1.510911|132382|1.470911|3600|0.040000|12163|295912|___|MPEGTS Stream ID|224 video|1|139582|1.550911|135982|1.510911|3600|0.040000|12692|311516|___|MPEGTS Stream ID|224 video|1|143182|1.590911|139582|1.550911|3600|0.040000|10824|325052|___|MPEGTS Stream ID|224 video|1|146782|1.630911|143182|1.590911|3600|0.040000|11286|336144|___|MPEGTS Stream ID|224 @@ -142,10 +160,28 @@ audio|0|153588|1.706533|153588|1.706533|2351|0.026122|209|N/A|K__ audio|0|155939|1.732656|155939|1.732656|2351|0.026122|209|N/A|K__ video|1|150382|1.670911|146782|1.630911|3600|0.040000|12678|347800|___|MPEGTS Stream ID|224 video|1|153982|1.710911|150382|1.670911|3600|0.040000|24711|361336|K__ +video|1|146782|1.630911|143182|1.590911|3600|0.040000|12755|98700|___|MPEGTS Stream ID|224 +video|1|150382|1.670911|146782|1.630911|3600|0.040000|12023|111860|___|MPEGTS Stream ID|224 +audio|0|124200|1.380000|124200|1.380000|2351|0.026122|208|152844|K__|MPEGTS Stream ID|192 +audio|0|126551|1.406122|126551|1.406122|2351|0.026122|209|N/A|K__ +audio|0|128902|1.432244|128902|1.432244|2351|0.026122|209|N/A|K__ +audio|0|131253|1.458367|131253|1.458367|2351|0.026122|209|N/A|K__ +audio|0|133604|1.484489|133604|1.484489|2351|0.026122|209|N/A|K__ +audio|0|135955|1.510611|135955|1.510611|2351|0.026122|209|N/A|K__ +audio|0|138306|1.536733|138306|1.536733|2351|0.026122|209|N/A|K__ +audio|0|140657|1.562856|140657|1.562856|2351|0.026122|209|N/A|K__ +audio|0|143008|1.588978|143008|1.588978|2351|0.026122|209|N/A|K__ +audio|0|145359|1.615100|145359|1.615100|2351|0.026122|209|N/A|K__ +audio|0|147710|1.641222|147710|1.641222|2351|0.026122|209|N/A|K__ +audio|0|150061|1.667344|150061|1.667344|2351|0.026122|209|N/A|K__ +audio|0|152412|1.693467|152412|1.693467|2351|0.026122|209|N/A|K__ +audio|0|154763|1.719589|154763|1.719589|2351|0.026122|209|N/A|K__ +video|1|153982|1.710911|150382|1.670911|3600|0.040000|14098|124268|___|MPEGTS Stream ID|224 +video|1|157582|1.750911|153982|1.710911|3600|0.040000|13329|139120|___|MPEGTS Stream ID|224 video|1|161182|1.790911|157582|1.750911|3600|0.040000|12135|155852|___|MPEGTS Stream ID|224 video|1|164782|1.830911|161182|1.790911|3600|0.040000|12282|168448|___|MPEGTS Stream ID|224 video|1|168382|1.870911|164782|1.830911|3600|0.040000|24786|181420|K__|MPEGTS Stream ID|224 video|1|171982|1.910911|168382|1.870911|3600|0.040000|17440|206988|___|MPEGTS Stream ID|224 video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|___|MPEGTS Stream ID|224 -0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 0 -1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 1|CPB properties|0|0|0|49152|-1 +0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|117|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 0 +1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|68|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 1|CPB properties|0|0|0|49152|-1