16ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa/* 2c8949ecf819facd9d71402e7b4aa483ed225aa10Lajos Molnar * Copyright (C) 2017 The Android Open Source Project 36ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 46ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Licensed under the Apache License, Version 2.0 (the "License"); 56ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * you may not use this file except in compliance with the License. 66ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * You may obtain a copy of the License at 76ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 86ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * http://www.apache.org/licenses/LICENSE-2.0 96ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 106ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Unless required by applicable law or agreed to in writing, software 116ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * distributed under the License is distributed on an "AS IS" BASIS, 126ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * See the License for the specific language governing permissions and 146ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * limitations under the License. 156ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 166ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 176ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasapackage android.hardware.media.omx@1.0; 186ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 196ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasaimport android.hardware.media@1.0::types; 206ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 216ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa// Aliases 226ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasatypedef uint32_t BufferId; 236ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 246ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa/** 2526497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa * Ref: system/core/include/utils/Errors.h 2626497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa * Ref: bionic/libc/kernel/uapi/asm-generic/errno-base.h 2726497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa * Ref: bionic/libc/kernel/uapi/asm-generic/errno.h 2826497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa * Ref: frameworks/av/include/media/stagefright/MediaError.h 2926497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa * Ref: frameworks/av/media/libstagefright/omx/OMXUtils.cpp: StatusFromOMXError 3026497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa */ 3126497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasaenum Status : int32_t { 3226497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa OK = 0, 3326497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa NO_ERROR = 0, 3426497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa 3526497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa NAME_NOT_FOUND = -2, 36120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa WOULD_BLOCK = -11, 3726497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa NO_MEMORY = -12, 38c8949ecf819facd9d71402e7b4aa483ed225aa10Lajos Molnar ALREADY_EXISTS = -17, 39120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa NO_INIT = -19, 40d13c84bce78c362e78db90bad457ae5cf50d269ePawin Vongmasa BAD_VALUE = -22, 41120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa DEAD_OBJECT = -32, 42120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa INVALID_OPERATION = -38, 43120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa TIMED_OUT = -110, 4426497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa ERROR_UNSUPPORTED = -1010, 4526497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa UNKNOWN_ERROR = -2147483648, 46120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa 47120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa BUFFER_NEEDS_REALLOCATION = 0x1, 48120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa RELEASE_ALL_BUFFERS = 0x2, 4926497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa}; 5026497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa 5126497205484ba80b41dd9df51ca190d785e92cb9Pawin Vongmasa/** 526ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/av/include/media/IOMX.h: omx_message 536ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 546ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Data structure for an OMX message. This is essentially a union of different 556ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * message types. 566ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 576ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasastruct Message { 586ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 596ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 606ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * There are four main types of messages. 616ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 626ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa enum Type : uint32_t { 636ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa EVENT, 646ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa EMPTY_BUFFER_DONE, 656ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa FILL_BUFFER_DONE, 666ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa FRAME_RENDERED, 676ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 686ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 696ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 706ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * @see OMX_EVENTTYPE in the OpenMax IL standard. 716ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 726ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa struct EventData { 736ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t event; // TODO: if there are common core events, convert to an enum or point to std 746ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t data1; 756ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t data2; 766ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t data3; 776ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t data4; 786ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 796ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 806ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa struct BufferData { 816ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa BufferId buffer; 826ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 836ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 846ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa struct ExtendedBufferData { 856ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa BufferId buffer; 866ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t rangeOffset; 876ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t rangeLength; 886ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t flags; // TODO: if common flags exist, define an enum of point to std 896ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint64_t timestampUs; 906ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 916ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 926ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa struct RenderData { 936ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint64_t timestampUs; 946ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa int64_t systemTimeNs; 956ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 966ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 976ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa union Data { 986ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if type == EVENT 996ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa EventData eventData; 1006ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1016ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if type == EMPTY_BUFFER_DONE 1026ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa BufferData bufferData; 1036ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1046ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if type == FILL_BUFFER_DONE 1056ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa ExtendedBufferData extendedBufferData; 1066ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1076ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if type == FRAME_RENDERED 1086ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa RenderData renderData; 1096ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 1106ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1116ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1126ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * The type of the message. 1136ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1146ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa Type type; 1156ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1166ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1176ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * The fence associated with the message. 1186ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1196ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa Fence fence; 1206ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1216ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1226ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * The union of data, discriminated by type. 1236ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1246ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa Data data; 1256ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa}; 1266ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1276ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa/** 1286ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/native/include/ui/GraphicBuffer.h 1296ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: system/core/include/system/window.h 1306ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/native/include/binder/IMemory.h 1316ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/native/libs/binder/IMemory.cpp 1326ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/av/include/media/OMXBuffer.h 1336ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 1346ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Data structure for buffer information. This is essentially a union of 1356ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * different buffer types. 1366ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1376ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasastruct CodecBuffer { 1386ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1396ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1406ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * There are four main types of buffers. 1416ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 142d26dc50abbad068cd1a673f204fa538c1c61bdb2Steven Moreland enum Type : int32_t { 1436ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa INVALID = 0, 1446ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET, 1456ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa SHARED_MEM, 1466ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa ANW_BUFFER, 147120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa NATIVE_HANDLE, 1486ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 1496ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1506ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa struct PresetAttributes { 151120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa uint32_t rangeOffset; 1526ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa uint32_t rangeLength; 1536ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 1546ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1556ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa union Attributes { 1566ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if bufferType == PRESET 1576ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PresetAttributes preset; 1586ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1596ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if bufferType == SHARED_MEM 160120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa // No additional attributes. 1616ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1626ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if bufferType == ANW_BUFFER 163cba23c66310331d9cae00ed4726642c73410a6faPawin Vongmasa AnwBufferAttributes anwBuffer; 1646ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1656ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // if bufferType == NATIVE_HANDLE 1666ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa // No additional attributes. 1676ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa }; 1686ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1696ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1706ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Type of the buffer. 1716ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1726ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa Type type; 1736ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1746ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 1756ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Attributes that can be put into a union. 1766ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1776ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa Attributes attr; 1786ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1796ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa /** 180120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa * Used only for types ANW_BUFFER and NATIVE_HANDLE. 1816ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 1826ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * (A native handle cannot be put into a union as HIDL currently does not 1836ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * support discriminated unions.) 1846ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 1856ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa handle nativeHandle; 1866ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 187120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa /** 188120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa * Used only for type SHARED_MEM. 189120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa */ 190120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa memory sharedMemory; 191120c4da82a39f77ce2471a0ab761cfeab1f72390Pawin Vongmasa 1926ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa}; 1936ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 1946ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa/** 1956ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Ref: frameworks/av/include/media/IOMX.h 1966ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * 1976ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa * Enumeration of port modes. 1986ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa */ 199d26dc50abbad068cd1a673f204fa538c1c61bdb2Steven Morelandenum PortMode : int32_t { 2006ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET_START = 0, 2016ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET_BYTE_BUFFER, 2026ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET_ANW_BUFFER, 2036ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET_SECURE_BUFFER, 2046ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa PRESET_END, 2056ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa DYNAMIC_START = 100, 2066ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa DYNAMIC_ANW_BUFFER, 2076ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa DYNAMIC_NATIVE_HANDLE, 2086ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa DYNAMIC_END 2096ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa}; 2106ec37b9e507df9de9cb9608a44c44b4a3efd34acPawin Vongmasa 2119e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa/** 2129e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa * Ref: frameworks/native/include/media/hardware/VideoAPI.h 2139e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa * 2149e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa * Framework defined color aspects. These are based mainly on ISO 23001-8 spec. As this standard 2159e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa * continues to evolve, new values may be defined in the future. Use OTHER for these future values 2169e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa * as well as for values not listed here, as those are not supported by the framework. 2179e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa */ 2189e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasastruct ColorAspects { 2199e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa enum Range : uint32_t { 2209e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa UNSPECIFIED, // Unspecified 2219e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa FULL, // Full range 2229e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa LIMITED, // Limited range (if defined), or not full range 2239e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2249e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa OTHER = 0xff, // Not one of the above values 2259e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa }; 2269e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2279e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa // Color primaries 2289e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa enum Primaries : uint32_t { 2299e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa UNSPECIFIED, // Unspecified 2309e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT709_5, // Rec.ITU-R BT.709-5 or equivalent 2319e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT470_6M, // Rec.ITU-R BT.470-6 System M or equivalent 2329e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT601_6_625, // Rec.ITU-R BT.601-6 625 or equivalent 2339e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT601_6_525, // Rec.ITU-R BT.601-6 525 or equivalent 2349e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa GENERIC_FILM, // Generic Film 2359e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT2020, // Rec.ITU-R BT.2020 or equivalent 2369e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2379e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa OTHER = 0xff, // Not one of the above values 2389e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa }; 2399e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2409e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa // Transfer characteristics 2419e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa enum Transfer : uint32_t { 2429e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa UNSPECIFIED, // Unspecified 2439e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa LINEAR, // Linear transfer characteristics 2449e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa SRGB, // sRGB or equivalent 2459e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa SMPTE170M, // SMPTE 170M or equivalent (e.g. BT.601/709/2020) 2469e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa GAMMA22, // Assumed display gamma 2.2 2479e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa GAMMA28, // Assumed display gamma 2.8 2489e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa ST2084, // SMPTE ST 2084 for 10/12/14/16 bit systems 2499e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa HLG, // ARIB STD-B67 hybrid-log-gamma 2509e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2519e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa // values unlikely to be required by Android follow here 2529e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa SMPTE240M = 0x40, // SMPTE 240M 2539e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa XVYCC, // IEC 61966-2-4 2549e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT1361, // Rec.ITU-R BT.1361 extended gamut 2559e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa ST428, // SMPTE ST 428-1 2569e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2579e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa OTHER = 0xff, // Not one of the above values 2589e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa }; 2599e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2609e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa // YUV <-> RGB conversion 2619e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa enum MatrixCoeffs : uint32_t { 2629e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa UNSPECIFIED, // Unspecified 2639e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT709_5, // Rec.ITU-R BT.709-5 or equivalent 2649e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT470_6M, // KR=0.30, KB=0.11 or equivalent 2659e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT601_6, // Rec.ITU-R BT.601-6 625 or equivalent 2669e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa SMPTE240M, // SMPTE 240M or equivalent 2679e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT2020, // Rec.ITU-R BT.2020 non-constant luminance 2689e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa BT2020CONSTANT, // Rec.ITU-R BT.2020 constant luminance 2699e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2709e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa OTHER = 0xff, // Not one of the above values 2719e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa }; 2729e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 2739e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa Range range; 2749e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa Primaries primaries; 2759e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa Transfer transfer; 2769e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa MatrixCoeffs matrixCoeffs; 2779e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa}; 2789e321eb5b6209638e1b54f281781622b256fe66ePawin Vongmasa 279