From patchwork Thu Mar 28 01:56:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: arch1t3cht X-Patchwork-Id: 47554 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp1001979pzb; Wed, 27 Mar 2024 17:57:16 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUSlI9s4/9HNW0VqGrU7WwjnIfJn6NCpJzua1kNBy3SPD8/VNg2M9s9Y8YJCA5LjwJo8oL6AAA95BWwWVTGFJET7wzzCG7blaxOFQ== X-Google-Smtp-Source: AGHT+IEGt9c2jbFCPd1DoFuS7K4wFRJSIYrSrMaN1LLBjKDoGxV9QsYMSu5sv65PAAQCI6hchNTo X-Received: by 2002:a05:651c:204:b0:2d6:93fa:ce20 with SMTP id y4-20020a05651c020400b002d693face20mr1118782ljn.0.1711587436656; Wed, 27 Mar 2024 17:57:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711587436; cv=none; d=google.com; s=arc-20160816; b=IuVcWIMzNErAO2VgHpyrsVmvVRW/DgHsiP4KsLgxqEcl2FKgbLOt2mQuVcW7OJrgEK o/Eb8RY0UxbZxcxsLZVgacNsYBNldcQKiRbOXNopm1Dnm5LGjELR6Vyap2NjGu76PhjG UhxNNBKDTIWxdu4buHx1luciOqyVb51Su8I+ryI0j/tX4uWXOhEDo7fkHcykKAhWcDbs mpVkXHRInBvs+wyCsJ7497kq3T4Lf3E2Xvzh8xTLiM23r9YpYioroppK9v58Il3HyMAZ StE9ymWfK1bRhS+OK3s09R8/zmO/tbi1W12SBdIG0IkH85d0Do5i0J1zWpOo/TKR0lo6 MBeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=fG9/t9PgB9w9x9Peb8b52TQohc8O31DnUi2/g+9vMYM=; fh=XsdWKN0opuHSNCojBF7BP827TmsQHYQ+NMHkr9PA7m4=; b=MyZwoaB1IstniWnwobYf6Jwte1KY4Q1jGhrF1QcVJ3Kf4+2RSK60qgHgYQo4AHUNBw mHpsk28g4BDscdtaaNSdBGNQoZ9/BNG+jwmATYyUkXCmcjbApjXqSENOesKjThPP71WZ YggtRZZz0RqwOkRM++Z5n0H7/vgoGbkaryWrkMJn5iWDFTcY011eWrBrSYA/NIcBLOIm XA4OZuLkZ2CL1llS+DBQQbmJSsA9J9iRS3cFqRVU0qCtIH1uDhLdeYu6duFZ6zM19JqV r+9mQFu+wXfbxgMsWRMc0VdyiaqTu2nA69O/Wtk0teRJ4vidmD0kI6lz8617GxW4fwVU mLnQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=mPsN7GAE; 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 c16-20020a50f610000000b0056c4f80c7casi182584edn.271.2024.03.27.17.57.16; Wed, 27 Mar 2024 17:57:16 -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=20230601 header.b=mPsN7GAE; 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 997D068D5B2; Thu, 28 Mar 2024 02:57:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BF41368D5A7 for ; Thu, 28 Mar 2024 02:56:59 +0200 (EET) Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-34261edaf7eso245608f8f.1 for ; Wed, 27 Mar 2024 17:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711587419; x=1712192219; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YNLG9b3f3FNfvjfXxfP89Nxl1z0Si9jDVkxRlML6pUo=; b=mPsN7GAE/JDPBS+wAoz7b/mjIiFkq9dJLl/Ml3BAsT35VwWaMGvoHLHRDZUKcKcIfh yBYPQMU0zcprvwl4Cx07OZjNn5vsVwUDoX3c5YPfPvr/uei+nshDWWVv0LyVt36TiJ3a vjIsH8RdsE7GttG6rpennFgU3f4QUO65G5E16ZgRBVON53ya0EgB9ya1JkPPwvhjaFzQ k8vUteS541yB3qv/HiDWWem4V/OzVFwWt54V+LqXKYR+04RoWtmhf8Ec+5pAP8rxrFNE rwSpIwtWH/YZhkBXIQkgzA/u/X4KtTybJg9QZWxgKwx3hli0+tJ1xmf+zce2w5MCNpvn 3sgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711587419; x=1712192219; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YNLG9b3f3FNfvjfXxfP89Nxl1z0Si9jDVkxRlML6pUo=; b=B/Xgwjk2YFUoDEeJ+sBusm8J9h/Q0KDRNx4kF3+hI031r1C3+CGaTOyGWQq3j6Ktsq mPpU9N5uptS1iSmQowtlzFp/WQ5+f1PHRFsWfw+GOK8ZsARIbtVE3R8fxDW2U4awwGrx pWTPZu4gekedgVVserCgVeYETBSqbdgJg4vZPk0z46sg2GtQrcm6jB/DFeUaILkU+n3k TXdRonCHbUgaIo+1xBovJtAuaWizu4MKbOyIk9MCUuC73ZxMU4a0hodnOHxQk0YDW1hm sZEKhHbpeN3+CWm6CzgxyaYqGkKcCIGtXbIYZ+8X49Tw822yGohDsp1mlT9o9WHTZQO3 241g== X-Gm-Message-State: AOJu0YyJEa1w3XhEsulObl1BPy8iI52qQuz9LCD61yNnE0xRV6UEBlkj BOkra+5ZFJxXwwTxHCKQMjbBOIfQ6HAL9HCJsS3Em7GmbxGt13H8Q2p1FOKN X-Received: by 2002:a05:6000:541:b0:341:c454:7ad8 with SMTP id b1-20020a056000054100b00341c4547ad8mr934364wrf.13.1711587418983; Wed, 27 Mar 2024 17:56:58 -0700 (PDT) Received: from localhost.localdomain (dynamic-078-055-195-187.78.55.pool.telefonica.de. [78.55.195.187]) by smtp.gmail.com with ESMTPSA id m28-20020a056000181c00b00341d186a2dbsm325529wrh.14.2024.03.27.17.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 17:56:58 -0700 (PDT) From: arch1t3cht To: ffmpeg-devel@ffmpeg.org Date: Thu, 28 Mar 2024 02:56:37 +0100 Message-ID: <20240328015639.1425494-2-arch1t3cht@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240328015639.1425494-1-arch1t3cht@gmail.com> References: <20240328015639.1425494-1-arch1t3cht@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/h264dec: Properly mark frames as recovered when draining 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 Cc: arch1t3cht Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Nye41508fMTO When decoding starts at a SEI recovery point very shortly before the end of the video stream, there can be frames which are decoded before the recovery point's frame is output and which will only be output once the draining has started. Previously, these frames would never be set as recovered. This commit copies the logic from h264_select_output_frame to send_next_delayed_frame to properly mark such frames as recovered. Fixes ticket #10936. Signed-off-by: arch1t3cht --- libavcodec/h264dec.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index b4973fce29..8503ea018a 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -1013,6 +1013,9 @@ static int send_next_delayed_frame(H264Context *h, AVFrame *dst_frame, h->delayed_pic[i] = h->delayed_pic[i + 1]; if (out) { + h->frame_recovered |= out->recovered; + out->recovered |= h->frame_recovered & FRAME_RECOVERED_SEI; + out->reference &= ~DELAYED_PIC_REF; ret = finalize_frame(h, dst_frame, out, got_frame); if (ret < 0)