From patchwork Wed Jan 11 18:57:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 39968 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bc95:b0:ad:ade2:bfd2 with SMTP id fx21csp4979184pzb; Wed, 11 Jan 2023 10:57:25 -0800 (PST) X-Google-Smtp-Source: AMrXdXuB4WoMM2x6u/XZs+weY8lPp8LkSejqKgp6I+t3SjhZWLHWD8LuocTY/lxaf19op49EiBQ3 X-Received: by 2002:a17:907:c011:b0:7c0:e5ca:411c with SMTP id ss17-20020a170907c01100b007c0e5ca411cmr61018365ejc.17.1673463444879; Wed, 11 Jan 2023 10:57:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673463444; cv=none; d=google.com; s=arc-20160816; b=oIWcj4ccaGkiJ0928UT+rpgt0H6eoumdLQQnfwTa04abmx2kShF9/lpRLKtpDBy4oK zTgQDF2qGNS8oiWg8cDNwCZKy/xB+akdA48UMw7cg0RuY3SPt1eekLuCML5k9Y0+7uSv 8zFvucTvr5MeWVP+mbm5pccg7YZD0N6x2o82B2GyHt9RgoKKs8GR1ts/XTcVAEDKCjxR R6ji3LbL69nKGoHK14rUY+AgJWG8PRsz0rbET7p1cmwMvi9Bb9mKcyli11ypqTuNqG6w 3LgUJfr3A1W3ijGLCisodfeq0aCbqz7hYHLxWnpolgb/68u4iWTv1xIklSVEyjhicKkZ Wwog== 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:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=E+D4M6LnNGMgQydinUEX9e5e8UhWa2KSBhfbTAVLln4=; b=KW3XSQElD5eXwCkcGUghTk1Hkc1t6aNoePOL+ULuv3Gxptboy6gUb/z4yLi05eVqon MrCbzi+KZ9l/FQ0LDJQVMv0hO8J+3aa7+t6Kg3NbGhCJcFVCuowbVi15gKZbcM7FrwRl TIBn8bIy2rAiDZLJAurW/QpeXhqi3Y0mnXUro+6h9VT1jVdxbNGO0H53pGqJoBI8gnaG 0lPQCzf5W/CQl9ZrOpqsnlxLCYM4YpQimC9SFvmcsZdgV6bab6B6UBoLDzKME7DMzzyI 1yeES/F1g1JDy24x3LnTW2ZrkN9iKFpZjFYdSEDSlYUJAYN4i6i3gBtD21Yr9c7fxKzj DvGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=aqdQgXPI; 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 ht13-20020a170907608d00b007ba713e241dsi17258221ejc.894.2023.01.11.10.57.23; Wed, 11 Jan 2023 10:57:24 -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=aqdQgXPI; 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 C556F68BCE8; Wed, 11 Jan 2023 20:57:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E30D68BC64 for ; Wed, 11 Jan 2023 20:57:14 +0200 (EET) Received: by mail-lf1-f47.google.com with SMTP id j17so24988122lfr.3 for ; Wed, 11 Jan 2023 10:57:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=9A3Ufglc5t9rENPtlXdms5MqDCUoU1+sX3glo/yQzWY=; b=aqdQgXPI/U+JC/6p2/krDWon8869xl5M/mnTaoTlSEW8mIHakvJQiUzreGZqf4Xg8q KOMbPt1LgFqpg+1D/jEQSm/bzy37QGRomnD+9FRkwGMtgLpJZkui9yMO80EO1k2WVxov DbUDzmIiql8LS2ywroNSgnhzDctYRHqLB1CH3RAqEgnG52OQ/+EQNpc9KHfFGc6B0Cca SXCncAD0nNtUphukU9NXN2gzxIkOAl3T1V5AHTRkEakU/qlWBAw+y1Pq/XOBjeF9MUBc pcSCtzrlmyaH+g0JjGKYIrZFTLtdcfqdOuSmAqBIqcwdgufJsSfY3lSpOMOqGrSfGo80 my0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9A3Ufglc5t9rENPtlXdms5MqDCUoU1+sX3glo/yQzWY=; b=4BOVqPDfEzVEH4gfWco/+hlPzd2txdBuqIy5I73Y5NAO1ESZoi0sPwbjQqwfTj8Z+S IGmBo34pqf16yFFxEnCaL2RE/Ph0OICAqjlCyfIjGqks3HctlAVMhcM5yfkcuE8tVFzI bYxI66+3PbmUK/Xwn2vnA6okNbtZ9yMHitGE1GGdsLmYnVJpsCqCgQKVnWTgxobhj4l/ vGTAwJicUb+P/cVBodf11ePrlJ0VpNyMSLF+ePOdutU5hpPODT98IGcgGTwQxvK3NNFa H6sFrDMpWUDLOlzJ7ps7PEHUtJgOYtF1fUuSd+RB0jIiHysgl+QSdyvfwLwpGp+4kxXx KC8w== X-Gm-Message-State: AFqh2kpoiphsn6dOBXQrQH2DJPy2s+7JSKcQdljkTejnK+zsX1Ihx1yh Cf+joqoiui4abEX2Cw9QzCwUUlVyTOg= X-Received: by 2002:ac2:43b5:0:b0:4cb:40ba:4ae8 with SMTP id t21-20020ac243b5000000b004cb40ba4ae8mr7731184lfl.34.1673463433611; Wed, 11 Jan 2023 10:57:13 -0800 (PST) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j5-20020a05651231c500b004b5480edf67sm2842017lfe.36.2023.01.11.10.57.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Jan 2023 10:57:12 -0800 (PST) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 11 Jan 2023 20:57:04 +0200 Message-Id: <20230111185707.22132-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230110211949.8195-1-jeebjp@gmail.com> References: <20230110211949.8195-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/4] avcodec/cbs_{h2645, sei}: add support for Ambient Viewing Environment SEI 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: QdXbSFO/kull Defined by H.274, this SEI message is utilized by iPhones to save the nominal ambient viewing environment for the display of recorded HDR content. --- libavcodec/cbs_h2645.c | 6 ++++++ libavcodec/cbs_sei.h | 6 ++++++ libavcodec/cbs_sei_syntax_template.c | 17 +++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 4ee06003c3..80e48829af 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1500,6 +1500,12 @@ static const SEIMessageTypeDescriptor cbs_sei_common_types[] = { sizeof(SEIRawAlternativeTransferCharacteristics), SEI_MESSAGE_RW(sei, alternative_transfer_characteristics), }, + { + SEI_TYPE_AMBIENT_VIEWING_ENVIRONMENT, + 1, 0, + sizeof(SEIRawAmbientViewingEnvironment), + SEI_MESSAGE_RW(sei, ambient_viewing_environment), + }, SEI_MESSAGE_TYPE_END, }; diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h index c7a7a95be0..1c327a4689 100644 --- a/libavcodec/cbs_sei.h +++ b/libavcodec/cbs_sei.h @@ -65,6 +65,12 @@ typedef struct SEIRawAlternativeTransferCharacteristics { uint8_t preferred_transfer_characteristics; } SEIRawAlternativeTransferCharacteristics; +typedef struct SEIRawAmbientViewingEnvironment { + uint32_t ambient_illuminance; + uint16_t ambient_light_x; + uint16_t ambient_light_y; +} SEIRawAmbientViewingEnvironment; + typedef struct SEIRawMessage { uint32_t payload_type; uint32_t payload_size; diff --git a/libavcodec/cbs_sei_syntax_template.c b/libavcodec/cbs_sei_syntax_template.c index 0ef7b42ed9..6a7cc36dda 100644 --- a/libavcodec/cbs_sei_syntax_template.c +++ b/libavcodec/cbs_sei_syntax_template.c @@ -144,6 +144,23 @@ static int FUNC(alternative_transfer_characteristics) return 0; } +static int FUNC(ambient_viewing_environment) + (CodedBitstreamContext *ctx, RWContext *rw, + SEIRawAmbientViewingEnvironment *current, + SEIMessageState *state) +{ + static const uint16_t max_ambient_light_value = 50000; + int err; + + HEADER("Ambient Viewing Environment"); + + u(32, ambient_illuminance, 1, MAX_UINT_BITS(32)); + u(16, ambient_light_x, 0, max_ambient_light_value); + u(16, ambient_light_y, 0, max_ambient_light_value); + + return 0; +} + static int FUNC(message)(CodedBitstreamContext *ctx, RWContext *rw, SEIRawMessage *current) {