From patchwork Fri Dec 8 00:14:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 6593 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp8950543jah; Thu, 7 Dec 2017 16:14:58 -0800 (PST) X-Google-Smtp-Source: AGs4zMbRVKwaY+npJQwof3wWUckpTWE0zdANMrz2eWUsOg5BZed5a+TF2AB/C6U2lAjvNfSn1HIA X-Received: by 10.28.128.214 with SMTP id b205mr2782971wmd.82.1512692098453; Thu, 07 Dec 2017 16:14:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512692098; cv=none; d=google.com; s=arc-20160816; b=Kr+TtONQCaV/kyDQQUiOWaOAer9PZQSrKAh6jroSyd8hnwtYKbVFqWnDx1kQmgYvQd l07keUgEmSDqeGJdybUpTaD+9IX4rnxavBfwCDgy+f+jT0/zzb2XHb17doYE6wt75oXr WHGF3sh0EnKQORyo74fB7YSC6ur4WWC/66+jg7xEYtksMxUnyfkl+dukgisekJzYzXHf yJSIfSIpoW9e0UXzORSZE7qzM3SSSB3ie13O0Send0zZC5GIf/ZYaM+7EgJY3xwiLRHU QjtfwYqenAlRf37CYrLu/vypzQZTEDXYhFkijm+uLx6Rpy+uJJKd9vJQvAoHWbE0YgMt WeEA== 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=G9Qzje9gsV8THiiWXGTN9GC4z4ZQQQiQH/SW2XTYnAs=; b=geXHhMqtaAUhiLnhK47LLNedjumUrD2r5P9HgNpVeWZOyFk1X7HmiaEASC28afGkcn l79Gm4dumEoBG3+3RUCR6ozllCFsOMp+RugvZBdEFuCvXHOjWllwloABOpyp12XZPTyW jaL67ichQc7OzBna6HCzZYfozRjFSs0rwVl5qbLhaP14zYgPN/fesxZdAJLNeJpt9T/h de7/8IvmmROcvfqkwc9pCDS2R0jjJlgnH/KArFVKmwaPkcXj/zvBIgWnw/h2OQbycQMz kal8mmqCvUY4E1GSH0r6nrsGdlMcG8ll5lM1bYisoaunBiH8ugAelw30shY9jZ3lzUNM iyqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=wxnTy7+x; 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 p12si4480505wrh.443.2017.12.07.16.14.58; Thu, 07 Dec 2017 16:14:58 -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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=wxnTy7+x; 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 40E0E68A3EA; Fri, 8 Dec 2017 02:14:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f169.google.com (mail-pf0-f169.google.com [209.85.192.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A65868A3D7 for ; Fri, 8 Dec 2017 02:14:44 +0200 (EET) Received: by mail-pf0-f169.google.com with SMTP id v26so5929264pfl.7 for ; Thu, 07 Dec 2017 16:14:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=cG++OuRE/nZsQrB29VZ6qJ/xkI7gkfBPRTQdfl+iIfk=; b=wxnTy7+xBFHA9Ni6xI9MeBnDJv8J2WQU1UbPlQBMRuAG6gM68KvRaZU9x+NnVN1awd D7IgQAf+v/kQK86zujlZElhmsW/dN5zpSS6NUUkSCPzXqBJnWMbjJmCraViHjy0lo1dw 9dY7QyfsiMbeCZz/xz3yDBaiBD+9Mo1wdC88eLGbM5P1HUIcoOtnYs2TFCklCeYNpjRb XEIt2z9o5u5zSjLaIaZmMpgtt7nQnjhwv+I+ciTYsKrfqhWeJqTEiSZMi9UEOKIKvMJ3 PxQnqxhWlsFGxZr2/zdWicpkOhLN116VqAsJvRcGVGmJ+tKsFwpgWOLbauzhjD0kzo7q 5fzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=cG++OuRE/nZsQrB29VZ6qJ/xkI7gkfBPRTQdfl+iIfk=; b=h96C7tCtJOHt1CrkJrmysyJkApGHILfjaY0Jy7A8y0RqT5bEsU+CSTpsLZaAyi4HYb 4ViqUMXFfv843Xb16vh4CO8mgy3Oir4hFCMtzn9N7DoihEzIQqIjkEfPATa4Zkfx8Jn+ 52zkQbZg/CoftbgRCERESu/etEFk4Qvt+YxcTH7IC4sBGkVPbKcPaoYjkru+E5IAerVj ZoEKjKxvlXG/PKCgyirg7j7LTk4RpIXrRTT0OcF/DXAr4GoiBkbPexh0PGdMdPGmjmKl dfopQHkXvGKUYFQJDO5fVSnTdhdf2EqfcledAsoOZT4iZuGs2PaElRQ6RmtbQhkPlW/3 8VoQ== X-Gm-Message-State: AJaThX4Z1bdxPn0b9ebnntsPIgw7/05zpUYQmLbP7DmO4dgQNvycD01o UpPWVNS91LUtOPQYeCqqtZ+jyvOM X-Received: by 10.101.74.73 with SMTP id a9mr27226208pgu.444.1512692089060; Thu, 07 Dec 2017 16:14:49 -0800 (PST) Received: from localhost.localdomain (c-69-181-54-242.hsd1.ca.comcast.net. [69.181.54.242]) by smtp.gmail.com with ESMTPSA id g2sm10850793pfc.130.2017.12.07.16.14.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Dec 2017 16:14:48 -0800 (PST) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Thu, 7 Dec 2017 16:14:40 -0800 Message-Id: <20171208001440.46440-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH] libavformat/hlsenc: add AVFMT_VARIABLE_FPS flag to mimic mpegtsenc 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: lq@chinaffmpeg.org, Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Previously, using a filter that changed frame_rate/time_base would work as expected with mpegtsenc, but duplicate frames when used with hlsenc (which uses mpegtsenc underneath). For instance, using https://tmm1.s3.amazonaws.com/720p.ts: $ ffmpeg -i 720p.ts -c:v libx264 -an -filter:v "yadif=mode=send_field:deint=interlaced" -f mpegts -y single.ts $ ffmpeg -i 720p.ts -c:v libx264 -an -filter:v "yadif=mode=send_field:deint=interlaced" -f hls -hls_time 30 -y segment.m3u8 One would expect single.ts and segment0.ts to be identical, however comparing them shows: single.ts: 120 fps, 59.94 tbr, 90k tbn, 239.76 tbc segment0.ts: 120 fps, 119.88 tbr, 90k tbn, 239.76 tbc Without AVFMT_VARIABLE_FPS set, ffmpeg.c was duplicating frames in the hlsenc case and generating segments with double the r_frame_rate. After this commit, the two muxers generate identical output. --- libavformat/hlsenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 7dc8f4237b..d256498244 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -2335,7 +2335,7 @@ AVOutputFormat ff_hls_muxer = { .audio_codec = AV_CODEC_ID_AAC, .video_codec = AV_CODEC_ID_H264, .subtitle_codec = AV_CODEC_ID_WEBVTT, - .flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, + .flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | AVFMT_ALLOW_FLUSH, .write_header = hls_write_header, .write_packet = hls_write_packet, .write_trailer = hls_write_trailer,