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