From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 0C8234AF95 for ; Sat, 25 May 2024 11:36:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3C1B968D545; Sat, 25 May 2024 14:36:24 +0300 (EEST) Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F052A68D4FB for ; Sat, 25 May 2024 14:36:16 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1716636976; bh=rRcW545h/xEo431/jKObJhKk0poDHVJ29JSOzwem0Fg=; h=From:To:Cc:Subject:Date:From; b=ZOvuR1Vw8dMgJEreilkYiObgr1Iyevw8A3QeT2S0jXfDOCXgsyEYF/TTIVwHaNrNQ 2N20EVP3sXJ4ROM9zz9vI7ZsZrt63OMlbjUeJlYtFyEu9yuf33Ev4J3pIP2yvE9vpv tSFPllPijuBI3zZPxB1rkrVr3ESOH5nnR5NX0dso= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 44DEC417DE; Sat, 25 May 2024 13:36:16 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 25 May 2024 13:36:12 +0200 Message-ID: <20240525113612.17093-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.45.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/h2645_sei: loosen up min luminance requirements 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: Niklas Haas Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Niklas Haas The H.265 specification is quite clear on this case: > When min_display_mastering_luminance is not in the range of 1 to > 50000, the nominal maximum display luminance of the mastering display > is unknown or unspecified or specified by other means not specified in > this Specification. And so the current code is correct in marking luminance data as invalid if min luminance is set to 0. However, this breaks playback of at least several real-world Blu-ray releases, for example La La Land, Planet of the Apes, and quite possibly a lot more. These come with ostensibly valid max_luminance tags (1000 nits), but min_luminance set to 0. Loosen up this requirement by guarding it behind FF_COMPLIANCE_STRICT. We still reject blatantly invalid metadata (wrong value range on luminance, max set to 0, max below min, min above 50 nits etc.), so this shouldn't cause any unintended regressions. Fixes: https://github.com/mpv-player/mpv/issues/14177 --- libavcodec/h2645_sei.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 1deb76c765..7c83747cd0 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -619,11 +619,15 @@ static int h2645_sei_to_side_data(AVCodecContext *avctx, H2645SEI *sei, metadata->min_luminance.num = sei->mastering_display.min_luminance; metadata->min_luminance.den = luma_den; - metadata->has_luminance &= sei->mastering_display.min_luminance >= 1 && - sei->mastering_display.min_luminance <= 50000 && + metadata->has_luminance &= sei->mastering_display.min_luminance <= 50000 && sei->mastering_display.min_luminance < sei->mastering_display.max_luminance; + /* Real (blu-ray) releases in the wild come with minimum luminance + * values of 0.000 cd/m2, so permit this edge case */ + if (avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT) + metadata->has_luminance &= sei->mastering_display.min_luminance >= 1; + if (metadata->has_luminance || metadata->has_primaries) av_log(avctx, AV_LOG_DEBUG, "Mastering Display Metadata:\n"); if (metadata->has_primaries) { -- 2.45.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".