From patchwork Wed May 24 08:31:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Sabatini X-Patchwork-Id: 3725 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.10.2 with SMTP id 2csp188778vsk; Wed, 24 May 2017 01:31:26 -0700 (PDT) X-Received: by 10.28.228.212 with SMTP id b203mr5281189wmh.119.1495614686862; Wed, 24 May 2017 01:31:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495614686; cv=none; d=google.com; s=arc-20160816; b=SteFxuNXeuAGmnhONiAg5YlqbztyDJRrCtt7Z49fJpnq81C1arVO54Eo8A23sWvxMW /XdibuWpHbnUSkVgCHNTgJYzr6x9+n0vO8mwyYe2k2c+7JympPwyTDLto8TIrfMXQMDV uz5hmlUtxkAsK+QCD2rjjyKjuW9bLYYISTmp8eHDedj97XJtryvgCmREAJT2Agi9YZUL 8ruXR3GTi1GPhoibdpw6w4nDNELioNa1ovF2KWCZVdaPgSFgbLPp1s/hzAdFw+nlPCg6 0OlgRPomXEnePr3K7Y3xR7GEW9VotlgZ/F9EMkkkY0IwCdfPn72ZYmIQBAol0kLXpmEz HL6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:user-agent :in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:to:from:date:dkim-signature :delivered-to:arc-authentication-results; bh=Oc680sahAmWPba3i47zB12YXOamJyRGV513gQ3ucZ00=; b=Tdl4GgCCSqG6dL6CoIZ0vP9SM3/wtkm5A2NSEv0iR0bxraS3Y4q850TrH/Dmhoam1u rnTOKC99CXibXJG4sSgUEyQ2vy4EO3K4bh/WNJ1bN5/7AaYk9Z5/eeTX26mtrgTs7wpy ECGy6TlI9x1ySVTJBQ2EvdBpE4RHq9Z7Ft2wlRz7zlg4HuYWrm4nx/vf036ypxWF5WSy 9FOyfdnjR3enyvuz3Kfu11k4AaiQJ6M5/C4wKBrIBxVXjrIV5c9DzfmL3BAMGPCLCuLn ofmi7QKlmPVUa2f5pV96/H/Z/JAj0KVQ+XRrWR+kr6ZChuBGAuVQ2cuXZRh7zAL+OgYT lF/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.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; 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 a15si3788224wme.139.2017.05.24.01.31.25; Wed, 24 May 2017 01:31:26 -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; 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 CADD4689A6B; Wed, 24 May 2017 11:31:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4EA4E689983 for ; Wed, 24 May 2017 11:31:15 +0300 (EEST) Received: by mail-wm0-f42.google.com with SMTP id d127so58489592wmf.0 for ; Wed, 24 May 2017 01:31:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=bwMAyQYneLGytEn1nA63y0xOBRnM2SBw4S44PNHaysE=; b=K2pNDnt7JtMFO7hOLP2Z3zu6Mp/5TaKFzC64jUiSe4ykiH2a+dfELjYZaxN804ZfcM 7zwmpoXl4rr8QnIofmyjwue5dzcjh7G+t0Dbv9oAjXrkOfEAMydqnc+vhrdvncrL4m8J iadukeyRuVmZyAiqFhdgdvD2c75BN5e1k/6nTWJpwR2YV+gr8xxuCEBxH7Z6eY4qdX6u 0FM+liIfEmpTQr1yME0/ygjoN4yqqW3OybTqZhfmRTOsAMh/6M+7KYY1Cv2g7YkU8ZNk wwgSMrgRhvtNdM99flUyntJpVVPCb1fZ4RKPj6i2MOPcZ5wLChLkMsf6YHDEDkqSluIX Mx5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=bwMAyQYneLGytEn1nA63y0xOBRnM2SBw4S44PNHaysE=; b=D/m0SzGl+QZjxrjLArQEOAMREWcs3T3v/nNMkMSPY7Wh7H49ByLknI53dtWrlxL7K3 asGsBCituriPzBTFO2//pJEzRAJNQ7708b2SkXXhQ0OSh23ibf0EJmj8QqIuE2GRtWdU weyRjJPLJNNlzk3B6ZQIde9eLBn1sDNrlJFk9uvjMDmZSPyhS85Gj7Mv4R7Dpczc4L/6 NrKi2NngpqAT9KfDvnBl78dM7JrWsRyvbcA0cbkBMnXZDP9xQ0CP26NZoSaGu3Y+27xt 0SD5RYzrzNIe9r16KO1RWBTDdkTA041iUuY6iIBKqq0W/qtiO8vRRGALcXVfZpkHURWQ fyHg== X-Gm-Message-State: AODbwcAFdb8IEQYE7riXf9bczxapD0Lm1AF0xHbtCaVOS+1tDtBOcbU7 IIMHccLymlXQx5ZV X-Received: by 10.223.135.213 with SMTP id c21mr22367658wrc.10.1495614675219; Wed, 24 May 2017 01:31:15 -0700 (PDT) Received: from barisone (net-188-152-196-102.cust.dsl.teletu.it. [188.152.196.102]) by smtp.gmail.com with ESMTPSA id x133sm4872711wme.0.2017.05.24.01.31.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 May 2017 01:31:14 -0700 (PDT) Received: by barisone (Postfix, from userid 1000) id 50EEE1A82AB; Wed, 24 May 2017 10:31:10 +0200 (CEST) Date: Wed, 24 May 2017 10:31:10 +0200 From: Stefano Sabatini To: FFmpeg development discussions and patches Message-ID: <20170524083110.GC7027@barisone> Mail-Followup-To: FFmpeg development discussions and patches References: <1495535328-32223-1-git-send-email-stefasab@gmail.com> <20170523130731.GC14874@sunshine.barsnick.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20170523130731.GC14874@sunshine.barsnick.net> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [FFmpeg-devel] [PATCH] lavc/mpegvideo_enc: allow to force low_delay by increasing strict_std_compliance 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" On date Tuesday 2017-05-23 15:07:31 +0200, Moritz Barsnick encoded: > On Tue, May 23, 2017 at 12:28:48 +0200, Stefano Sabatini wrote: > > - if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { > > + if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO && > > + s->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { > > av_log(avctx, AV_LOG_ERROR, > > - "low delay forcing is only available for mpeg2\n"); > > + "low delay forcing is only available for mpeg2, increase strict_std_compliance to force it\n"); > > Mathematically speaking, you need to decrease, not increase it (so that > it makes s->strict_std_compliance >= FF_COMPLIANCE_NORMAL false). > > #define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. > #define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. > #define FF_COMPLIANCE_NORMAL 0 > #define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions > #define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. > > The text is also confusing (while correct) in that you'll be "forcing > the forcing (of low delay)". > > Perhaps something like: > "[...] set strict_std_compliance to 'unofficial' or lower in order to > allow it", or "enable it nevertheless". (I'm too lazy to check for > other wordings.) This sounds fine. Patch amended. Thanks. From 536d88be287613a3a49dd60c1023c2418e9b8810 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Tue, 23 May 2017 12:22:41 +0200 Subject: [PATCH] lavc/mpegvideo_enc: allow low_delay for non MPEG2 codecs depending on strict_std_compliance Forcing low_delay can be useful, even if not officially supported. --- libavcodec/mpegvideo_enc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index db241c8..bef9a28 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -671,9 +671,11 @@ FF_ENABLE_DEPRECATION_WARNINGS } if (s->avctx->flags & AV_CODEC_FLAG_LOW_DELAY) { - if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { + if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO && + s->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { av_log(avctx, AV_LOG_ERROR, - "low delay forcing is only available for mpeg2\n"); + "low delay forcing is only available for mpeg2, " + "set strict_std_compliance to 'unofficial' or lower in order to allow it\n"); return -1; } if (s->max_b_frames != 0) { -- 1.9.1