From patchwork Wed Jan 3 03:44:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mymoeyard@gmail.com X-Patchwork-Id: 7095 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.79.195 with SMTP id r64csp15426507jad; Tue, 2 Jan 2018 19:46:43 -0800 (PST) X-Google-Smtp-Source: ACJfBosH1jPAjMzoJIGyf+RBZXD4tOOV3FUN0N9hSYaLvrhJ/lO/McME/y+NP0AV/SUjUCZOSHdy X-Received: by 10.28.157.7 with SMTP id g7mr236592wme.89.1514951203654; Tue, 02 Jan 2018 19:46:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1514951203; cv=none; d=google.com; s=arc-20160816; b=E20fDUYegt6/bHMqH143yo2XXhkRp5C77Uf1aek2ejfNzfV6eaOezMTt7Y1s8STy9v WfP54NlBY3gaoORQ5CCNKmT4pe0f87Yq79a4vXw2gvgPB/C3OC8YCRS3UCnZIs5CkjKv SiwKlHVkQFpL/hIjODxREetBT5ZL3pgb/GchFR/4XJc2YtMeO4Ga5pavlH98SlfbXiJt JQt0H4YGTSyIFjHMrfgesnIgPMIMgpZGRWxbnyiogAT/UhdwVR/fr7iIJlnIhZPjQWzT dVz9VC2nr3voxmfXsuP29PMiy7jr/ewnZhjG0BiJEKRnPQYscED+tbBOL3EHQATiDbNw ojeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=/JYDcCyLi0zpcr5OigBRrLZHXhpgu9hd7iRWA1cJGM8=; b=OmHNmr4INFgCFApeP8haxO/E4w4zeEqGZrNcjiHxAWANiMvs+w4KN8EcasVQKMQmze BTW+mfG6wxnIC6H9ASN5L7+8fjWHXgdQMg8aoTvk0kbmz9sjZwbNrR9ddzE/bq/vdL/Q MyGi+zlqn7Ij6Ag/y/b6X48wE/pe9EPU8CXClDA/Ko7j/VQYf4HJPZ7fEBtbwSvg8hoj 8Rk5rm9RHhvFIaOYuWDFGA+uE5Hh9oCuC96oGT8yPRgprmTMihTWG4EDfFl5OAmycmj2 ut0fWV5z/hE6D1hdtmKod9U1ZhHGQJpNzdJH14NWp1X3arf4cmhI0NspqGKLFGSHUCP3 1MvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=prBuYpFa; 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=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 o98si148024wrb.278.2018.01.02.19.46.42; Tue, 02 Jan 2018 19:46:43 -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=20161025 header.b=prBuYpFa; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 561CC6882DB; Wed, 3 Jan 2018 05:46:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f67.google.com (mail-pg0-f67.google.com [74.125.83.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B062B687EAF for ; Wed, 3 Jan 2018 05:46:18 +0200 (EET) Received: by mail-pg0-f67.google.com with SMTP id j4so249625pgp.1 for ; Tue, 02 Jan 2018 19:46:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=oLtVbobmh6/3mij9OUxNEMXpfvaMnd9sxNRutJgZEfs=; b=prBuYpFaZh7F3XBxkfOVA9cgIdMbXrz2u4wnpHG+iLh8RMikb6JqXhwohhl++8oB1w yoyvbXJTVo6zzvEIG7s94K0rK8ISFG7N5vGTX8shAoRlSpqegq22KIkaHLFEiNKuq6Nu tcRnF1J+6MY1cUN6e4umEtD8yitI4kKHbw6ibFFRvNznkd1q3WZJagB6PUMuIGMPsW7G ArmosmKeTsEIwtol8gE5vppFtJJI5uWIMKPiGtm7nUzkiqknHalOa4jWMiVvkOOonxgw HVP5hDk8Y21zEUOLMfKS+geEu78prZlIgeOoKDcwJreeURnLn0mD/z25aU3dsohV79Kz d03A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=oLtVbobmh6/3mij9OUxNEMXpfvaMnd9sxNRutJgZEfs=; b=gbAjpc7yvSVz5PFXTS7/rECFz/U9Z0KaqTryvTiUBhZiL4Z3HDZrEZsfCSrWilXnY6 nJnRlFhc9q35FHDpsTLXtyTeuIyBztK7jpS+jxFXXjiYQgAb5vgR9bixDz4Bhu8w59+l 65TTNnjIIEbStUVLqOpdaX9ghEr8jY3NodlaybL19Xjo5D5w4E01hUn4hu9NUJnTgxtb +/Kh7TBTr17KfA5Sw3n8aJZCb9uhQK4/8LRr7a/GLiNux8rcefn9WS1Rs9saXCHNFDqs 9DK1YRKWcvX9Ebxzj7fErZ68Wyq4L95d6Nses+l1SEreRH8UiEt/LN8cb2KmnpQrNR48 I/Tw== X-Gm-Message-State: AKGB3mLgf692EivvAfs8YRXs0vWWlYqJEN/WJiUvLUKuI8ruZBRLT23a LjmLkagn8M9zqp8+9dePfiU4tQ== X-Received: by 10.101.78.16 with SMTP id r16mr160246pgt.101.1514951193476; Tue, 02 Jan 2018 19:46:33 -0800 (PST) Received: from localhost.localdomain (172.96.202.160.16clouds.com. [172.96.202.160]) by smtp.gmail.com with ESMTPSA id e9sm213933pfl.138.2018.01.02.19.46.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Jan 2018 19:46:32 -0800 (PST) From: mymoeyard@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 2 Jan 2018 22:44:47 -0500 Message-Id: <1514951087-9400-1-git-send-email-mymoeyard@gmail.com> X-Mailer: git-send-email 1.7.1 Subject: [FFmpeg-devel] [PATCH v2, 2/2] avformat/hls: fix start time seek error 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: Wu Zhiqiang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Wu Zhiqiang Calculate first_timestamp based on first packet timestamp. Some m3u8 have streams that second one has smaller timestamp in first packet of this stream. Start/seek from start time may fail due to EIO error. It should be based on start_time of AvFormatContext. Signed-off-by: Wu Zhiqiang --- libavformat/hls.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 069e7b06e9..125f68ca4e 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -2110,10 +2110,8 @@ static int hls_read_packet(AVFormatContext *s, AVPacket *pkt) pkt_ts = AV_NOPTS_VALUE; - if (c->first_timestamp == AV_NOPTS_VALUE && - pkt_ts != AV_NOPTS_VALUE) - c->first_timestamp = av_rescale_q(pkt_ts, - get_timebase(pls), AV_TIME_BASE_Q); + c->first_timestamp = s->start_time != AV_NOPTS_VALUE ? s->start_time : 0; + } if (pls->seek_timestamp == AV_NOPTS_VALUE)