From patchwork Tue Feb 27 05:39:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 7753 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp2179567jaj; Mon, 26 Feb 2018 21:40:17 -0800 (PST) X-Google-Smtp-Source: AG47ELsSHOLnj9BKGb/5Hlj51cYByPos9+IhTm0Antdese7V6oxHt+Z8f4JlYrpKvEEv26HsdXVZ X-Received: by 10.28.214.144 with SMTP id n138mr515794wmg.126.1519710016999; Mon, 26 Feb 2018 21:40:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519710016; cv=none; d=google.com; s=arc-20160816; b=PTQa6Chdrb8FfBmGX22XssUqC8etJ34/WgOApyEHajq7HPCQStrM0V3Al4J+LvgRKX ZkBcH6Up2+QDgZW1L4tYnb+iaBgdi2krWpslO55aCkFVCVavXZPwTc+571Ad8NU3C/Yj ADp6DJpJAQI6p58lOYdC5kiisNpLCzct3MNOqcAkZPoUFnrEuCy/jvPIPhhqGAlXQ9dN DlYsk0HcT7v8BvYCT5GiSwFKpYR/RJhSOsfKMevx/Pnpj6a8JFiU/kQIb0LmXAyo7Xkq qxg9qVE+zx75aKvT2G457jWmBHKphUyZ3xmq5qRJZW9XDYpH+nhmJFwxgOk6ectFHMoN 0Aiw== 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:feedback-id:message-id:date:to:from :delivered-to:arc-authentication-results; bh=KASBZpF0J1pBtkIS73b/GqVR5x1EF5z4JbGO4cednOw=; b=q7hUNdB8QwEevAo2zIMlm28HYbDdc7U32coNbo8uNhgAnKH35AvcrQB7tR+9aufRds fASuz0OJlnBQLpOsbvqaitJSMh9fmUTokoMnR3MeUVHT7Hx5dwj8afGWZq5kixaHRfO3 ZEB3kW+WvyAQQpI+C5CiLonccowsHJnyttYHnr1kP+UeVCXGm2OrTyeAwtUPWz1lzoao hONgntcvNF7qcfN7C0WcdWocT1AyxSXUSY20PHQVcat65aISZ9z7lUYh+kopDbShCbKa LG25lC+e36A0ZW+Dipru/2T/mbNjHFcH73ubRBzXKh70+qqVvGNDHJg+faTnlfWjwf9l XhZw== 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 j6si4482976wrd.313.2018.02.26.21.40.15; Mon, 26 Feb 2018 21:40:16 -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 A3D1468A1E9; Tue, 27 Feb 2018 07:40:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7EA75680196 for ; Tue, 27 Feb 2018 07:40:02 +0200 (EET) X-QQ-mid: bizesmtp1t1519709978te8v59h78 Received: from localhost (unknown [47.90.47.25]) by esmtp4.qq.com (ESMTP) with id ; Tue, 27 Feb 2018 13:39:38 +0800 (CST) X-QQ-SSF: 01100000000000F0FKF0 X-QQ-FEAT: VTinAODFVqRXJ0y6jU/GtVwzEhbh854wIau2ipfiIA6N2CIuZXSbdQRP2ph7M lovvBDUbOEccVBDkTSslbvoM7xf3c9aDqHVjvUpzjBwGfFHec0YlWfoUArWyQ6/Cl2yZXJU tMWzNY7s/ActpDJsMRrUeqqT9P+h7Kma2IVQeLb0/qgQ78vPYJdVeyxTEUFoZKpZaxkstrC 6YxikTk2D2i1xHUUvGS7K+n+7KO6P95FYRJWakioL/6tVSCP9esgV1Sb0EUGZ+FDm2KlgIz tMXWno+FP0DmXb X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Feb 2018 13:39:33 +0800 Message-Id: <20180227053933.14789-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:chinaffmpeg.org:qybgforeign:qybgforeign1 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH] avformat/hlsenc: add reference stream index for split segment 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: Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" fix ticket: #7044 Get the first video stream to reference for split segment when there have more than one video stream Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index ff064732a1..8567227885 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -129,6 +129,7 @@ typedef struct VariantStream { int nb_entries; int discontinuity_set; int discontinuity; + int reference_stream_index; HLSSegment *segments; HLSSegment *last_segment; @@ -2155,8 +2156,10 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) * st->time_base.num / st->time_base.den; vs->dpp = (double)(pkt->duration) * st->time_base.num / st->time_base.den; } else { - if (pkt->duration) { - vs->duration += (double)(pkt->duration) * st->time_base.num / st->time_base.den; + if (pkt->duration) { + if (pkt->stream_index == vs->reference_stream_index) { + vs->duration += (double)(pkt->duration) * st->time_base.num / st->time_base.den; + } } else { av_log(s, AV_LOG_WARNING, "pkt->duration = 0, maybe the hls segment duration will not precise\n"); vs->duration = (double)(pkt->pts - vs->end_pts) * st->time_base.num / st->time_base.den; @@ -2497,6 +2500,11 @@ static int hls_init(AVFormatContext *s) for (j = 0; j < vs->nb_streams; j++) { vs->has_video += vs->streams[j]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO; + /* Get one video stream to reference for split segments + * so use the first video stream index. */ + if (vs->has_video == 1) { + vs->reference_stream_index = j; + } vs->has_subtitle += vs->streams[j]->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE; }