xref: /aosp_15_r20/external/libopenapv/src/oapv_metadata.h (revision abb65b4b03b69e1d508d4d9a44dcf199df16e7c3)
1*abb65b4bSAndroid Build Coastguard Worker /*
2*abb65b4bSAndroid Build Coastguard Worker  * Copyright (c) 2022 Samsung Electronics Co., Ltd.
3*abb65b4bSAndroid Build Coastguard Worker  * All Rights Reserved.
4*abb65b4bSAndroid Build Coastguard Worker  *
5*abb65b4bSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*abb65b4bSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions are met:
7*abb65b4bSAndroid Build Coastguard Worker  *
8*abb65b4bSAndroid Build Coastguard Worker  * - Redistributions of source code must retain the above copyright notice,
9*abb65b4bSAndroid Build Coastguard Worker  *   this list of conditions and the following disclaimer.
10*abb65b4bSAndroid Build Coastguard Worker  *
11*abb65b4bSAndroid Build Coastguard Worker  * - Redistributions in binary form must reproduce the above copyright notice,
12*abb65b4bSAndroid Build Coastguard Worker  *   this list of conditions and the following disclaimer in the documentation
13*abb65b4bSAndroid Build Coastguard Worker  *   and/or other materials provided with the distribution.
14*abb65b4bSAndroid Build Coastguard Worker  *
15*abb65b4bSAndroid Build Coastguard Worker  * - Neither the name of the copyright owner, nor the names of its contributors
16*abb65b4bSAndroid Build Coastguard Worker  *   may be used to endorse or promote products derived from this software
17*abb65b4bSAndroid Build Coastguard Worker  *   without specific prior written permission.
18*abb65b4bSAndroid Build Coastguard Worker  *
19*abb65b4bSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20*abb65b4bSAndroid Build Coastguard Worker  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*abb65b4bSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*abb65b4bSAndroid Build Coastguard Worker  * ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23*abb65b4bSAndroid Build Coastguard Worker  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24*abb65b4bSAndroid Build Coastguard Worker  * CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25*abb65b4bSAndroid Build Coastguard Worker  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*abb65b4bSAndroid Build Coastguard Worker  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27*abb65b4bSAndroid Build Coastguard Worker  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28*abb65b4bSAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29*abb65b4bSAndroid Build Coastguard Worker  * POSSIBILITY OF SUCH DAMAGE.
30*abb65b4bSAndroid Build Coastguard Worker  */
31*abb65b4bSAndroid Build Coastguard Worker 
32*abb65b4bSAndroid Build Coastguard Worker #ifndef _OAPV_METADATA_H_
33*abb65b4bSAndroid Build Coastguard Worker #define _OAPV_METADATA_H_
34*abb65b4bSAndroid Build Coastguard Worker 
35*abb65b4bSAndroid Build Coastguard Worker #include "oapv_def.h"
36*abb65b4bSAndroid Build Coastguard Worker 
37*abb65b4bSAndroid Build Coastguard Worker /* oapv metadata container magic code */
38*abb65b4bSAndroid Build Coastguard Worker #define OAPVM_MAGIC_CODE 0x4150314D /* AP1M */
39*abb65b4bSAndroid Build Coastguard Worker 
40*abb65b4bSAndroid Build Coastguard Worker /* Metadata payload */
41*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_mdp oapv_mdp_t;
42*abb65b4bSAndroid Build Coastguard Worker struct oapv_mdp {
43*abb65b4bSAndroid Build Coastguard Worker     u32         pld_type; /* u(8) */
44*abb65b4bSAndroid Build Coastguard Worker     u32         pld_size; /* u(8) */
45*abb65b4bSAndroid Build Coastguard Worker     void       *pld_data;
46*abb65b4bSAndroid Build Coastguard Worker     oapv_mdp_t *next;
47*abb65b4bSAndroid Build Coastguard Worker };
48*abb65b4bSAndroid Build Coastguard Worker 
49*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md oapv_md_t;
50*abb65b4bSAndroid Build Coastguard Worker struct oapv_md {
51*abb65b4bSAndroid Build Coastguard Worker     int         md_num;
52*abb65b4bSAndroid Build Coastguard Worker     u32         md_size; /* u(32) */
53*abb65b4bSAndroid Build Coastguard Worker     oapv_mdp_t *md_payload;
54*abb65b4bSAndroid Build Coastguard Worker };
55*abb65b4bSAndroid Build Coastguard Worker 
56*abb65b4bSAndroid Build Coastguard Worker typedef struct oapvm_ctx oapvm_ctx_t;
57*abb65b4bSAndroid Build Coastguard Worker struct oapvm_ctx {
58*abb65b4bSAndroid Build Coastguard Worker     u32       magic; // magic code
59*abb65b4bSAndroid Build Coastguard Worker     oapv_md_t md_arr[OAPV_MAX_NUM_METAS];
60*abb65b4bSAndroid Build Coastguard Worker     int       group_ids[OAPV_MAX_NUM_METAS];
61*abb65b4bSAndroid Build Coastguard Worker     int       num;
62*abb65b4bSAndroid Build Coastguard Worker };
63*abb65b4bSAndroid Build Coastguard Worker 
64*abb65b4bSAndroid Build Coastguard Worker /* Filler metadata */
65*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_fm oapv_md_fm_t;
66*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_fm {
67*abb65b4bSAndroid Build Coastguard Worker     u8 *ff_byte; /* f(8) */
68*abb65b4bSAndroid Build Coastguard Worker };
69*abb65b4bSAndroid Build Coastguard Worker 
70*abb65b4bSAndroid Build Coastguard Worker /* Recommendation ITU-T T.35 metadata*/
71*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_t35 oapv_md_t35_t;
72*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_t35 {
73*abb65b4bSAndroid Build Coastguard Worker     u32 itu_t_t35_country_code;           /* b(8) */
74*abb65b4bSAndroid Build Coastguard Worker     u32 itu_t_t35_country_code_extension; /* b(8) */
75*abb65b4bSAndroid Build Coastguard Worker     u8 *itu_t_t35_payload;
76*abb65b4bSAndroid Build Coastguard Worker };
77*abb65b4bSAndroid Build Coastguard Worker 
78*abb65b4bSAndroid Build Coastguard Worker /* Mastering display colour volum metadata*/
79*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_mdcv oapv_md_mdcv_t;
80*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_mdcv {
81*abb65b4bSAndroid Build Coastguard Worker     u16 primary_chromaticity_x[3];  /* u(16) */
82*abb65b4bSAndroid Build Coastguard Worker     u16 primary_chromaticity_y[3];  /* u(16) */
83*abb65b4bSAndroid Build Coastguard Worker     u16 white_point_chromaticity_x; /* u(16) */
84*abb65b4bSAndroid Build Coastguard Worker     u16 white_point_chromaticity_y; /* u(16) */
85*abb65b4bSAndroid Build Coastguard Worker     u32 max_mastering_luminance;    /* u(32) */
86*abb65b4bSAndroid Build Coastguard Worker     u32 min_mastering_luminance;    /* u(32) */
87*abb65b4bSAndroid Build Coastguard Worker };
88*abb65b4bSAndroid Build Coastguard Worker 
89*abb65b4bSAndroid Build Coastguard Worker /* Content light level information*/
90*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_cll oapv_md_cll_t;
91*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_cll {
92*abb65b4bSAndroid Build Coastguard Worker     u16 max_cll;  /* u(16) */
93*abb65b4bSAndroid Build Coastguard Worker     u16 max_fall; /* u(16) */
94*abb65b4bSAndroid Build Coastguard Worker };
95*abb65b4bSAndroid Build Coastguard Worker 
96*abb65b4bSAndroid Build Coastguard Worker /* User defined metadata */
97*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_usd oapv_md_usd_t;
98*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_usd {
99*abb65b4bSAndroid Build Coastguard Worker     u8  uuid[16]; /* u(128) */
100*abb65b4bSAndroid Build Coastguard Worker     u8 *user_defined_data_payload;
101*abb65b4bSAndroid Build Coastguard Worker };
102*abb65b4bSAndroid Build Coastguard Worker 
103*abb65b4bSAndroid Build Coastguard Worker /* Undefined metadata */
104*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_md_ud oapv_md_ud_t;
105*abb65b4bSAndroid Build Coastguard Worker struct oapv_md_ud {
106*abb65b4bSAndroid Build Coastguard Worker     u8 *undefined_data_payload;
107*abb65b4bSAndroid Build Coastguard Worker };
108*abb65b4bSAndroid Build Coastguard Worker 
109*abb65b4bSAndroid Build Coastguard Worker #endif /* _OAPV_METADATA_H_ */