From patchwork Fri Mar 23 22:42:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 8131 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp947929jad; Fri, 23 Mar 2018 15:43:06 -0700 (PDT) X-Google-Smtp-Source: AG47ELvCqFeJaPmZRy22ODXSIAkQknj6Iqx6l73WTBf1CYAxR78e7ooqnOUkaQJKhseBcS6s5wYG X-Received: by 10.28.63.66 with SMTP id m63mr10465210wma.102.1521844986846; Fri, 23 Mar 2018 15:43:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521844986; cv=none; d=google.com; s=arc-20160816; b=hTReQNNwwAsewKydq07MUEcFsrlLUUnv96ZWqZ5PuZl1znH+mm5PMfgBouzihaSW8j 304U/3VrI7GL/oHNyp4cKWKvlaeUupfY0XFALyA9Q8cxIeVOxUUE5ILgj5mfF/Fp2t16 v0bee60xd6SxLGNHs7L1hY+hL70ImeawOI/4CWx5md20IjHwiO8PJJPMBOcuOfcRGCxz fDGUC58BEV6AWiDxjfa7xPPlZjyMYT8yTlP3QdkgY4A8U5UNCzc/jxjE7D6fuElE9s61 /DgnKY1hJ6YkJNpTuAdlUwF3JuNt3MytCailfdiK6048UUypNNo6X/gSVomYj9Wm71Gs s3xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to:arc-authentication-results; bh=jo6GuVTNk8ekMz9B/Ov03Ha3BSqZMhafiNTK/71Rqxg=; b=KcpzMKLZ7zD4o7SNUNLGnjAPXziAOgwzPcgzJHh5xzK7I9MIvFRaSP6gNG5qUblP0E pbmg0LPcrXE+ZhSHaUn4WjBv6bZff8zTh/3OB+FdX763iM4H4m+ogLvmC3MtJwrM47si Y1ebhwn3PWfOWPvwoucnjx9BHKmSb/D6kK2LhextrMVV0w6kApHy23OQ0HNIoLk85njl ODODNSdu3eQ97p115GvgEJbnCMpy7lF8/Patln/SkxRsFQOvZ0WjdCtBQlF+wLba/3wV 7eWcYRRyKlhU0Awttpv11/jmYyiIYZ7410gKHX/+jocJsVfiOrt6muIaW+pUbP/AhjyI p9Bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=CCC6KTDr; 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=QUARANTINE 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 y20si7474468wrc.416.2018.03.23.15.43.03; Fri, 23 Mar 2018 15:43:06 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=CCC6KTDr; 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=QUARANTINE 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 65B66687EC8; Sat, 24 Mar 2018 00:42:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5BD406807F0 for ; Sat, 24 Mar 2018 00:42:39 +0200 (EET) Received: by mail-lf0-f68.google.com with SMTP id y2-v6so20468909lfc.5 for ; Fri, 23 Mar 2018 15:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=L5sjMDHg0essbnSn3BQChzF7dt1BY7kQGgsm4Vogw6Y=; b=CCC6KTDraPyg9kmnBDfVDXEeWQkohb28qbnwxdSE6M7qDVIYc9RcNP+1Qk0fniiUKm eR+IJMm1jpeILyv6ii/31nzjLjg5H6AOEpxaOPb/ypDvDOKQ8aUUFzRmyHlAC347YYu7 28zAKN8Y78Y329jO1HSSbOxJP7IUyERWF5F1bH1KrMsc2fgD5jmg2QwRk3f+3EUaOqO7 3sdEbTN8VZOLz/Rq9F9U2V/MBHsM+1LnSyLM1t60aDiCHy3AlJU5FhQR7v9yq2mHfGwW MzSwzBcp6a9KI7I26kcagNNtnCywwyXHc3EKutVHrtKkeOoUJHYuTE7l+HGaj1llBXtL j3lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=L5sjMDHg0essbnSn3BQChzF7dt1BY7kQGgsm4Vogw6Y=; b=G2wiqCVvSM24rmyo94lVA57WiV0/8oICcGZ5YFeY+IpmtfiaJ8uUI4uIVrFPhMi5Py gR+fkE+o0T6kw+10SZWCHMOXMZjWqKNwRtVNQQnHkK1FudoqsHxqOYSE5KAlHBERvwuT llGePYdSOGheSAHW3Km/dM/R+A6KVwEfBfCkPfHJVVTlgoxriRaF50KgVfOShocvuEy1 gcqXYaCUG1vFO8jqCCtM/iSwZda5XGFu31DqqDO0mC8DDl6mI1oegV3adsb6bT+4YAI/ 87J9FJorojjsHjFLdKg5WPOL2FmKCOlJdaQQJUuA0FFff6rW93bOOBpZMqLe4IEXIu0r kkJw== X-Gm-Message-State: AElRT7H8Xdr925DMT3g7ZaOOEiMm8fvoSygirEbWGy5xjST/8SqYy2Uq U079n9apJZ2cgN/nVC8eldpG0Wvj X-Received: by 2002:a19:17e4:: with SMTP id 97-v6mr10950644lfx.103.1521844974502; Fri, 23 Mar 2018 15:42:54 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id s1sm394264lji.92.2018.03.23.15.42.52 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 23 Mar 2018 15:42:53 -0700 (PDT) From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 24 Mar 2018 00:42:50 +0200 Message-Id: <20180323224251.29626-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.14.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] hlsenc: use stream's maximum bit rate as fall-back advertised rate 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jan Ekström Enables having proper bit rate values being written into the master playlist in case of hard-constrained VBR where the maximum bit rate utilized is known before hand. Does the same thing as movenc.c, for example. Signed-off-by: Jan Ekström --- libavformat/hlsenc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index b7c6fbde6a..07569dbff1 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1174,6 +1174,17 @@ static int get_relative_url(const char *master_url, const char *media_url, return 0; } +static int64_t get_stream_bit_rate(AVStream *stream) { + AVCPBProperties *props = (AVCPBProperties*)av_stream_get_side_data(stream, AV_PKT_DATA_CPB_PROPERTIES, NULL); + + if (stream->codecpar->bit_rate) + return stream->codecpar->bit_rate; + else if (props) + return props->max_bitrate; + + return 0; +} + static int create_master_playlist(AVFormatContext *s, VariantStream * const input_vs) { @@ -1300,9 +1311,9 @@ static int create_master_playlist(AVFormatContext *s, bandwidth = 0; if (vid_st) - bandwidth += vid_st->codecpar->bit_rate; + bandwidth += get_stream_bit_rate(vid_st); if (aud_st) - bandwidth += aud_st->codecpar->bit_rate; + bandwidth += get_stream_bit_rate(aud_st); bandwidth += bandwidth / 10; ccgroup = NULL;