From patchwork Sun Oct 29 11:11:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Peter_Gro=C3=9Fe?= X-Patchwork-Id: 5740 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp1472291jah; Sun, 29 Oct 2017 04:11:52 -0700 (PDT) X-Google-Smtp-Source: ABhQp+S1bd47CWsbkMmhG17Uv43uqXa8XagYyOcLPEFmlut69QV0a4MODTsmxdNukTFbwzfQnzBw X-Received: by 10.28.152.76 with SMTP id a73mr1103049wme.127.1509275512635; Sun, 29 Oct 2017 04:11:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509275512; cv=none; d=google.com; s=arc-20160816; b=ckeYYK06eR6AIu9kWAEVhxYZxHXWgToXjn6w2fdiQapNBGPMxlUyt/TmIDMN3A71IM qAXAtIoJBhHWQmZQGYlrV3h8eTXImjIVDnKffOyln9eg06nk9ka6pezeSNL+Wyt576ds 3ebv5UMAce4LOLAmrefphO47MirM5CoN6vyMLqhw64V8Uy19YpTFuKjxnSLsE89OOT6V Wvgn4wyN1kQKVn9AqXjjPKDf8Dmqh6khR8u2zsNOa2hpb2tNJKePlyagPjH9ETD7dyQK fCJn04jfZ/ulrIuEIgdBvRofsaOpJYDZEoHvOOiT6d8RNVaoMo819+AUBTx70IGxPjT/ StiA== 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:arc-authentication-results; bh=ARXkenRgH87WWlA3wxCHYhuPiUER5+semYcvPAOtfbA=; b=l5cvA7YQujXWt6ahQaGaxpEMDKeUBhosLIYeVDENTxieYrKDp8+35rlrfnfom5Tmxz f4m/FDOkYADcbL26kXUl16AiAN7e+e3u7aLkf3p5bjuPcXt+b/hkGcahyjxnEzh1LwQr F22dwcpXLPQG7Nkpyohq/+EO5FRYGbTjzILUeaugzeGgz9k3nJ8Tfw2b5WOzvXo8PsQn RUQB9cDI81lw0tjakinw7GSCeVENBS4b6aqO55bEeNGcAyfAS9Ev7ELZZaSUDv7o/LGq +rle4LmoE6Ma7O9bR+6Aly53QfUxYXaRL15Z1VuIRb+eKFR9F8ItgI3P4vDbUGotRKs8 IBow== 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 j48si9914496wra.537.2017.10.29.04.11.52; Sun, 29 Oct 2017 04:11:52 -0700 (PDT) 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 306E6689EB5; Sun, 29 Oct 2017 13:11:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from james.theweblords.de (james.theweblords.de [217.11.55.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B12FA689CE4 for ; Sun, 29 Oct 2017 13:11:35 +0200 (EET) Received: (qmail 20651 invoked by uid 210); 29 Oct 2017 11:11:44 -0000 X-Qmail-Scanner-Diagnostics: from x4d07d30c.dyn.telefonica.de (petronios@theweblords.de@x4d07d30c.dyn.telefonica.de) by james (envelope-from , uid 201) with qmail-scanner-2.10st (mhr: 1.0. spamassassin: 3.4.1. perlscan: 2.10st. Clear:RC:1(77.7.211.12):. Processed in 0.076876 secs); 29 Oct 2017 11:11:44 -0000 Received: from x4d07d30c.dyn.telefonica.de (HELO montepegro.fem.tu-ilmenau.de) (petronios@theweblords.de@77.7.211.12) by james.theweblords.de with ESMTPA; 29 Oct 2017 11:11:44 -0000 From: =?UTF-8?q?Peter=20Gro=C3=9Fe?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 29 Oct 2017 12:11:39 +0100 Message-Id: <20171029111139.8293-1-pegro@friiks.de> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171027013820.GC6009@nb4> References: <20171027013820.GC6009@nb4> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavformat/mov.c: use calculated dts offset when seeking in streams X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Jonas Licht , =?UTF-8?q?Peter=20Gro=C3=9Fe?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jonas Licht Subtract the calculated dts offset from the requested timestamp before seeking. This fixes an error "Error while filtering: Operation not permitted" observed with a short file which contains only one key frame and starts with negative timestamps. Then, av_index_search_timestamp() returns a valid negative timestamp, but mov_seek_stream bails out with AVERROR_INVALIDDATA. Fixes ticket #6139. Signed-off-by: Jonas Licht Signed-off-by: Peter Große --- Compared to the other seek results in this test, the values are not that far off. libavformat/mov.c | 6 ++++-- tests/ref/seek/extra-mp4 | 16 ++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 2ee67561e4..60a0f4ccf4 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -6882,10 +6882,12 @@ static int mov_seek_fragment(AVFormatContext *s, AVStream *st, int64_t timestamp static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp, int flags) { MOVStreamContext *sc = st->priv_data; - int sample, time_sample; + int sample, time_sample, ret; unsigned int i; - int ret = mov_seek_fragment(s, st, timestamp); + timestamp -= sc->time_offset; + + ret = mov_seek_fragment(s, st, timestamp); if (ret < 0) return ret; diff --git a/tests/ref/seek/extra-mp4 b/tests/ref/seek/extra-mp4 index c25544c095..c17ce4003c 100644 --- a/tests/ref/seek/extra-mp4 +++ b/tests/ref/seek/extra-mp4 @@ -28,10 +28,10 @@ ret: 0 st: 0 flags:0 dts: 50.633333 pts: 50.733333 pos:5926157 size: 13 ret: 0 st: 0 flags:0 dts: 50.666667 pts: 50.666667 pos:5927464 size: 150 ret: 0 st: 0 flags:0 dts: 50.700000 pts: 50.700000 pos:5927614 size: 176 ret: 0 st:-1 flags:1 ts: 153.470835 -ret: 0 st: 0 flags:1 dts: 153.466667 pts: 153.500000 pos:15867700 size: 96169 -ret: 0 st: 0 flags:0 dts: 153.500000 pts: 153.533333 pos:15963869 size: 785 -ret: 0 st: 0 flags:0 dts: 153.533333 pts: 153.633333 pos:15964654 size: 3135 -ret: 0 st: 0 flags:0 dts: 153.566667 pts: 153.566667 pos:15967789 size: 859 +ret: 0 st: 0 flags:1 dts: 151.966667 pts: 152.000000 pos:15705355 size:146924 +ret: 0 st: 0 flags:0 dts: 152.000000 pts: 152.100000 pos:15852279 size: 1355 +ret: 0 st: 0 flags:0 dts: 152.033333 pts: 152.033333 pos:15853634 size: 211 +ret: 0 st: 0 flags:0 dts: 152.066667 pts: 152.066667 pos:15853845 size: 217 ret: 0 st: 0 flags:0 ts: 76.365000 ret: 0 st: 0 flags:1 dts: 77.833333 pts: 77.866667 pos:8659657 size: 41182 ret: 0 st: 0 flags:0 dts: 77.866667 pts: 77.966667 pos:8700839 size: 4197 @@ -83,10 +83,10 @@ ret: 0 st: 0 flags:0 dts: 101.333333 pts: 101.433333 pos:11049548 size: ret: 0 st: 0 flags:0 dts: 101.366667 pts: 101.366667 pos:11053072 size: 562 ret: 0 st: 0 flags:0 dts: 101.400000 pts: 101.400000 pos:11053634 size: 599 ret: 0 st:-1 flags:0 ts: 25.306672 -ret: 0 st: 0 flags:1 dts: 27.400000 pts: 27.433333 pos:2674605 size:127383 -ret: 0 st: 0 flags:0 dts: 27.433333 pts: 27.466667 pos:2801988 size: 68 -ret: 0 st: 0 flags:0 dts: 27.466667 pts: 27.500000 pos:2802268 size: 1754 -ret: 0 st: 0 flags:0 dts: 27.500000 pts: 27.533333 pos:2804022 size: 4071 +ret: 0 st: 0 flags:1 dts: 25.300000 pts: 25.333333 pos:2607246 size: 40273 +ret: 0 st: 0 flags:0 dts: 25.333333 pts: 25.433333 pos:2647519 size: 2959 +ret: 0 st: 0 flags:0 dts: 25.366667 pts: 25.366667 pos:2650478 size: 197 +ret: 0 st: 0 flags:0 dts: 25.400000 pts: 25.400000 pos:2650675 size: 230 ret: 0 st:-1 flags:1 ts: 128.200839 ret: 0 st: 0 flags:1 dts: 127.833333 pts: 127.866667 pos:13514072 size: 67382 ret: 0 st: 0 flags:0 dts: 127.866667 pts: 127.966667 pos:13581454 size: 2936