From patchwork Fri Feb 4 23:00:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Keshav Varma X-Patchwork-Id: 34128 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp3823337iov; Fri, 4 Feb 2022 15:01:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJwT26atxUPjk8dN0SOT8n+3GGpHWYUtcEO4tS+jKrf/Ow5IqB9hE3hDvZQEhM8urtLYXfwR X-Received: by 2002:a17:907:1c02:: with SMTP id nc2mr981505ejc.661.1644015680918; Fri, 04 Feb 2022 15:01:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644015680; cv=none; d=google.com; s=arc-20160816; b=hdVXLoPu80zptjWrtnONO31SsRFlpTIdKZHgu5K+tt5fNJc8MJJhiAwX2BHNP+0KYo vo+qDaa5pJ6/CTrDNhh4+qBd/asM9/XT2JgKE/2VaHke5vrI+fZa9iaaURVfgCWSOQ9T boXE0ciRmdART5oCPb6dSNTiw9juKTmYvIS3mpppAhPPXKQMaW6bi7PyET6aFo/aRH+B +LrfxTfvxeTBdnZGkf2m9/g7VHHLRZ6tCsfYjhw5eJj6+YaSO+Gb2yJsJiZD+4vSOXQN w7gWRdRTxBlRRDDq3gN9m2Xt/LQf1Wlwo7I06WaO7kTv+KqiAOkjy8lbu8pLOPFkr+84 H/gA== 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:to:message-id:date:from:mime-version :dkim-signature:delivered-to; bh=YXHd8nKgiBInfgMrCX61UVgffrJ+P3FDQJWvkf5Yv3w=; b=NY+wzPCmsEYU7H890WlUrA+HENk7+IrMArdnFWFyajEONiDLBHneFz69xFKl/gr9O7 Hp/h7H61HDgqUDzPHkxR4WJn4R7fffJX5GjsUP7lyiMvIQXsE2y8AxGH0TX3Uqd3WXwZ 8OoJFVtj94qJWww2pBzGmLNKoY/eAHdDche1J0H0mcHzVx0l3GQvEPm0qKj7iFoQIMlG 1W23dcpr3vRXW9bfbja7G8XDosipp+A3o4XLNaxKlsSWiBJFXfugd/pB8NdtkljG64ge HBQ5Ci9bcu1WGnK+UTv/6pexQAJVaGriHYBMnflwlay2B4Y8jGW1aws7IRXg0oQklIKq /Iig== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=IRrrhdr6; 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 s10si2306438edd.190.2022.02.04.15.01.20; Fri, 04 Feb 2022 15:01:20 -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=20210112 header.b=IRrrhdr6; 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 B23CF68B2AF; Sat, 5 Feb 2022 01:01:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C398668B1F5 for ; Sat, 5 Feb 2022 01:01:08 +0200 (EET) Received: by mail-pj1-f54.google.com with SMTP id y5-20020a17090aca8500b001b8127e3d3aso7458479pjt.3 for ; Fri, 04 Feb 2022 15:01:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=nXvGXG65b9TiptmzO25sgMZRMkJXh/hYzth3i0g46mQ=; b=IRrrhdr6LYyeLnMEMbTdEPcXnUnyE3xw1Fq+l/mpOsCCxNDpekJt1NQbYk0Uv022Mi MtPQpVbwsQMD6cOedn8jjAviZhjK+srCkUTy9G2Y83fGHUnQ8k/Iq+QwkPcCR0aK4t5o oPHa8G04NnsTB5kSmXUtsZOoDT6Rdr0KgfoteWafL9ag2wJGxPxbavTx+CCxN4RIVsjK xWlk9RcNEgSz7FkzmAzMZL1d82qRmpDmA4cpTN8KzS+RtOKHZYxcyKjzWju/234IxmIp oN+ncjsmrA/8f5AignA/tIy+6oe+FyQIgA+0U131Ag9AUgBTZy7Df/jNlTADLaQ2xtfM fkcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=nXvGXG65b9TiptmzO25sgMZRMkJXh/hYzth3i0g46mQ=; b=iIe/TBGkJbQh9IvhCXB19v9aZNhfs6HzFD6VUn6xNRnV3RFKg5nkNXhUuLlhIBqqZe oINwkgKO+h7IB6T6j7UQrRS9PknW+T7ol7zDtXi2FpnNM21/SfnTn1pDK05sp+jQx4FT O4LrCTPjDB928N3KJGZ+221u+axmW8JbzyFO9K4Lq6D9zvjpzyIIKdkrLG9kftV5tWGU Iigz2Dd4srnS9MgRiCDCwTICg8xO37yqb/k8ddmRDzbIzJTwI45/ccZplw9eIQg/xUi0 vLOGzf4Tpa0SIKxbaWRcKS3rVNXC/jEPls4br3G2wmuEbxdVYHT9NXWXyVkbLyaXqsHq Kcdw== X-Gm-Message-State: AOAM530+ua2fu3DzFspJo6PB4VwuX3tShGv1TpapxO+Zi0TJxSvRvkP6 40psWZztmsEpp0O0XNF0+Hn8BCficSohomE32ipudiqCc5uRug== X-Received: by 2002:a17:902:d4cb:: with SMTP id o11mr5261690plg.43.1644015666046; Fri, 04 Feb 2022 15:01:06 -0800 (PST) MIME-Version: 1.0 From: Keshav Varma Date: Fri, 4 Feb 2022 15:00:55 -0800 Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] Correctly set low_delay_hrd_flag when rewriting fixed_frame_rate_flag in h264_metadata bitstream filter X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: p1/8cks4aiJO After changes like ef13faf, the h264_metadata bitstream filter stopped working when using the fixed_frame_rate_flag option on an input stream that doesn't contain VUI because the default inferred value of low_hrd_delay_flag seems to be 1. ffmpeg used to raise a warning, but proceeded anyway but now aborts after the other fixes since the output is rightfully invalid. I believe this change makes the bitstream filter conform to page 403 of the ITU spec: "When fixed_frame_rate_flag is equal to 1, low_delay_hrd_flag shall be equal to 0. When low_delay_hrd_flag is not present, its value shall be inferred to be equal to 1 − fixed_frame_rate_flag." Signed-off-by: Keshav Varma Signed-off-by: Keshav Varma --- libavcodec/h264_metadata_bsf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) -- 2.31.1 diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index 9df99cbae3..59a7eba546 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -228,7 +228,13 @@ static int h264_metadata_update_sps(AVBSFContext *bsf, sps->vui.timing_info_present_flag = 1; need_vui = 1; } - SET_VUI_FIELD(fixed_frame_rate_flag); + + // Set fixed frame rate flag and update low_delay_hrd_flag to match + if (ctx->fixed_frame_rate_flag >= 0) { + sps->vui.fixed_frame_rate_flag = ctx->fixed_frame_rate_flag; + sps->vui.low_delay_hrd_flag = 1 - sps->vui.fixed_frame_rate_flag; + } + if (ctx->zero_new_constraint_set_flags) { sps->constraint_set4_flag = 0; sps->constraint_set5_flag = 0;