From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id E7A914C0F4
	for <ffmpegdev@gitmailbox.com>; Tue,  1 Apr 2025 17:20:05 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C3EA5687DD1;
	Tue,  1 Apr 2025 20:17:01 +0300 (EEST)
Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com
 [209.85.214.171])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BFB58687DCB
 for <ffmpeg-devel@ffmpeg.org>; Tue,  1 Apr 2025 20:16:58 +0300 (EEST)
Received: by mail-pl1-f171.google.com with SMTP id
 d9443c01a7336-22548a28d0cso157137655ad.3
 for <ffmpeg-devel@ffmpeg.org>; Tue, 01 Apr 2025 10:16:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1743527817; x=1744132617; 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=wYO/ny41AHqAreqxgA31y9WtlVZN69nd9NmNEsah4fw=;
 b=FEDNTBB8gQDiVYqFJ8/+SFf463Bk5Eax0voWCM6h98pce39+t2pwVn4Man3ALm5dOm
 Cb69q9O/4UK/tpt1riScnefTlwHu0OqeKRsmcNWwPzdYBeowAss4+jLw0vyvWlmcMbPB
 gy4FQbZrSBdqUSbqmrnGQFavXfyemoJv/9dOgbG4xsXFLRo+jqRZGLLxAxWY0d8pnw79
 i/WhGXYtaKnZ5HUpXWcVUmrFBl93W7xnqPfjaagmUt93jG7CZqxS4V99D4Md4O9HK8rG
 L+sWJ9U2qhAwgHeg43u5xnA9rO43vSiieRA1Flvaol3KfCzC4jzqcd6X6QndlwRwoAcQ
 36Ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743527817; x=1744132617;
 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=wYO/ny41AHqAreqxgA31y9WtlVZN69nd9NmNEsah4fw=;
 b=EDrtTEgqlwWOhrT5qp45JOo5+x0PXqAfFK/ywf4Dc5XwOVdqLATUBgRXw2OXoBgoG6
 rvLW5y2u3CaAAlenG7coScKIQYSOmxVF/dGAV56aCsFkOTleQGN/Wo1fMHorI8jjCTp0
 kU0+BNj9T+ZurpP/xP26CN+8ZlslnrZQuSPaOQKzls8Oh9ulDsIHTOxImOXs0lC+g0yh
 FFv7Rq6X8ub00I75Q2poVlqc3NWNWMpvnHUWpVYcnTkMZ3qlCeU9Om/cyiwW4W4DhaNq
 koBvGFuZdYxsFrbt6at2Nw1ky6AytDPhznhr1azHJUTB2/ePuK+GgtFMlf5WaCiVp2CR
 kJ7Q==
X-Gm-Message-State: AOJu0Yx8GZQps2SRlW71/ktBfy1MEozT8g7ZqpzvSvl3oAaiEPiroVJ4
 zpyPr79GOvshhCBlULKcGiLDcixFymEf8WrRcHGoGh5CWJq/cvYes1JOzN9RK9s=
X-Gm-Gg: ASbGncsNG00tHj1oamTmxFOG4CXssnz1+T9+7BY0m05yA7M/prIQmMJTkDYxQV9K7Ln
 ChV6HfLVXicNi6NoK+9lX2PZ6CNtuRcn6/JfXe0V4aP+dmVWxt0RQjvPnOYWaVKhvnnFF6craTT
 Zm7Xo0qH7RC8WyOkDmka6uZqvZV8D9NzdokGJtyRCnUeLhRrp7I4Ffoci1eAh4XhbGNVg9HnV0/
 XEpIgXv/ySmudVSfWVOZjfJmD+kCifKh8i9AYedla1cbGOg81Ou2/8JFd6x8jjsGA+WMHT/ZSe7
 vPL20Sgph36R7Q+8hMSpbo5JKXXyuS5/wBs0q7esayhbLCkIvEOS4UZfaUo20UB7SBeO6Le3AvN
 n
X-Google-Smtp-Source: AGHT+IFJDBX7aix780S98gXSjeA/0w+UeR6eluTU/t+JO/8hx3h0oD2TQVtfACuy5ccOwXsrzCMZOw==
X-Received: by 2002:a17:902:e745:b0:220:e655:d77 with SMTP id
 d9443c01a7336-2292f9f403bmr234525335ad.36.1743527816878; 
 Tue, 01 Apr 2025 10:16:56 -0700 (PDT)
Received: from localhost.localdomain ([124.79.129.75])
 by smtp.gmail.com with ESMTPSA id
 d9443c01a7336-2291eee0bafsm90902495ad.90.2025.04.01.10.16.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Apr 2025 10:16:56 -0700 (PDT)
From: toqsxw@gmail.com
X-Google-Original-From: toqsxw@outlook.com
To: ffmpeg-devel@ffmpeg.org
Date: Wed,  2 Apr 2025 01:16:13 +0800
Message-ID: <20250401171616.1378-16-toqsxw@outlook.com>
X-Mailer: git-send-email 2.44.0.windows.1
In-Reply-To: <20250401171616.1378-1-toqsxw@outlook.com>
References: <20250401171616.1378-1-toqsxw@outlook.com>
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH v1 16/19] avcodec/vvc/sei: add
 decode_frame_field_info
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Wu Jianhua <toqsxw@outlook.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250401171616.1378-16-toqsxw@outlook.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

From: Wu Jianhua <toqsxw@outlook.com>

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 libavcodec/vvc/sei.c | 26 ++++++++++++++++++++++++++
 libavcodec/vvc/sei.h |  1 +
 2 files changed, 27 insertions(+)

diff --git a/libavcodec/vvc/sei.c b/libavcodec/vvc/sei.c
index 85a07dad3f..a029306abd 100644
--- a/libavcodec/vvc/sei.c
+++ b/libavcodec/vvc/sei.c
@@ -127,6 +127,27 @@ static int decode_content_light_level_info(H2645SEIContentLight *h, const SEIRaw
     return 0;
 }
 
+static int decode_frame_field_info(H274SEIFrameFieldInfo *h, const SEIRawFrameFieldInformation *s)
+{
+    if (s->ffi_source_scan_type > 3)
+        return AVERROR_INVALIDDATA;
+
+    h->present = 1;
+    if (s->ffi_field_pic_flag) {
+        if (s->ffi_bottom_field_flag)
+            h->picture_struct = AV_PICTURE_STRUCTURE_BOTTOM_FIELD;
+        else
+            h->picture_struct = AV_PICTURE_STRUCTURE_TOP_FIELD;
+    } else {
+        h->display_elemental_periods = s->ffi_display_elemental_periods_minus1 + 1;
+    }
+
+    h->source_scan_type = s->ffi_source_scan_type;
+    h->duplicate_flag   = s->ffi_duplicate_flag;
+
+    return 0;
+}
+
 int ff_vvc_sei_decode(VVCSEI *s, const H266RawSEI *sei, const struct VVCFrameContext *fc)
 {
     H2645SEI *c  = &s->common;
@@ -155,6 +176,9 @@ int ff_vvc_sei_decode(VVCSEI *s, const H266RawSEI *sei, const struct VVCFrameCon
         case SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO:
             return decode_content_light_level_info(&s->common.content_light, payload);
 
+        case SEI_TYPE_FRAME_FIELD_INFO:
+            return decode_frame_field_info(&s->frame_field_info, payload);
+
         default:
             av_log(fc->log_ctx, AV_LOG_DEBUG, "Skipped %s SEI %d\n",
                 sei->nal_unit_header.nal_unit_type == VVC_PREFIX_SEI_NUT ?
@@ -169,6 +193,7 @@ int ff_vvc_sei_decode(VVCSEI *s, const H266RawSEI *sei, const struct VVCFrameCon
 int ff_vvc_sei_replace(VVCSEI *dst, const VVCSEI *src)
 {
     dst->picture_hash.present = 0;        // drop hash
+    dst->frame_field_info.present = 0;    // drop field info
     return ff_h2645_sei_ctx_replace(&dst->common, &src->common);
 }
 
@@ -177,6 +202,7 @@ void ff_vvc_sei_reset(VVCSEI *s)
     ff_h2645_sei_reset(&s->common);
     ff_h274_hash_freep(&s->hash_ctx);
     s->picture_hash.present = 0;
+    s->frame_field_info.present = 0;
 }
 
 int ff_vvc_sei_verify_hash(VVCSEI *s, const AVFrame *frame, const int coded_width, const int coded_height)
diff --git a/libavcodec/vvc/sei.h b/libavcodec/vvc/sei.h
index a8aedc2837..8d19f22bb3 100644
--- a/libavcodec/vvc/sei.h
+++ b/libavcodec/vvc/sei.h
@@ -36,6 +36,7 @@
 typedef struct VVCSEI {
     H2645SEI common;
     H274SEIPictureHash picture_hash;
+    H274SEIFrameFieldInfo frame_field_info;
 
     H274HashContext *hash_ctx;
 } VVCSEI;
-- 
2.44.0.windows.1

_______________________________________________
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".