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_ */