13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (C) 2021 HiHope Open Source Organization . 33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 53d0407baSopenharmony_ci * You may obtain a copy of the License at 63d0407baSopenharmony_ci * 73d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83d0407baSopenharmony_ci * 93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123d0407baSopenharmony_ci * See the License for the specific language governing permissions and 133d0407baSopenharmony_ci * limitations under the License. 143d0407baSopenharmony_ci */ 153d0407baSopenharmony_ci 163d0407baSopenharmony_ci#ifndef VideoExt_h 173d0407baSopenharmony_ci#define VideoExt_h 183d0407baSopenharmony_ci 193d0407baSopenharmony_ci#include <OMX_IVCommon.h> 203d0407baSopenharmony_ci#include <codec_omx_ext.h> 213d0407baSopenharmony_citypedef enum OMX_RANGE { 223d0407baSopenharmony_ci RangeUnspecified, 233d0407baSopenharmony_ci RangeFull, 243d0407baSopenharmony_ci RangeLimited, 253d0407baSopenharmony_ci RangeOther = 0xff, 263d0407baSopenharmony_ci} OMX_RANGE; 273d0407baSopenharmony_ci 283d0407baSopenharmony_citypedef enum OMX_PRIMARIES { 293d0407baSopenharmony_ci PrimariesUnspecified, 303d0407baSopenharmony_ci PrimariesBT709_5, // Rec.ITU-R BT.709-5 or equivalent 313d0407baSopenharmony_ci PrimariesBT470_6M, // Rec.ITU-R BT.470-6 System M or equivalent 323d0407baSopenharmony_ci PrimariesBT601_6_625, // Rec.ITU-R BT.601-6 625 or equivalent 333d0407baSopenharmony_ci PrimariesBT601_6_525, // Rec.ITU-R BT.601-6 525 or equivalent 343d0407baSopenharmony_ci PrimariesGenericFilm, // Generic Film 353d0407baSopenharmony_ci PrimariesBT2020, // Rec.ITU-R BT.2020 or equivalent 363d0407baSopenharmony_ci PrimariesOther = 0xff, 373d0407baSopenharmony_ci} OMX_PRIMARIES; 383d0407baSopenharmony_ci 393d0407baSopenharmony_citypedef enum OMX_TRANSFER { 403d0407baSopenharmony_ci TransferUnspecified, 413d0407baSopenharmony_ci TransferLinear, // Linear transfer characteristics 423d0407baSopenharmony_ci TransferSRGB, // sRGB or equivalent 433d0407baSopenharmony_ci TransferSMPTE170M, // SMPTE 170M or equivalent (e.g. BT.601/709/2020) 443d0407baSopenharmony_ci TransferGamma22, // Assumed display gamma 2.2 453d0407baSopenharmony_ci TransferGamma28, // Assumed display gamma 2.8 463d0407baSopenharmony_ci TransferST2084, // SMPTE ST 2084 for 10/12/14/16 bit systems 473d0407baSopenharmony_ci TransferHLG, // ARIB STD-B67 hybrid-log-gamma 483d0407baSopenharmony_ci TransferSMPTE240M = 0x40, // SMPTE 240M 493d0407baSopenharmony_ci TransferXvYCC, // IEC 61966-2-4 503d0407baSopenharmony_ci TransferBT1361, // Rec.ITU-R BT.1361 extended gamut 513d0407baSopenharmony_ci TransferST428, // SMPTE ST 428-1 523d0407baSopenharmony_ci TransferOther = 0xff, 533d0407baSopenharmony_ci} OMX_TRANSFER; 543d0407baSopenharmony_ci 553d0407baSopenharmony_citypedef enum OMX_MATRIXCOEFFS { 563d0407baSopenharmony_ci MatrixUnspecified, 573d0407baSopenharmony_ci MatrixBT709_5, // Rec.ITU-R BT.709-5 or equivalent 583d0407baSopenharmony_ci MatrixBT470_6M, // KR=0.30, KB=0.11 or equivalent 593d0407baSopenharmony_ci MatrixBT601_6, // Rec.ITU-R BT.601-6 625 or equivalent 603d0407baSopenharmony_ci MatrixSMPTE240M, // SMPTE 240M or equivalent 613d0407baSopenharmony_ci MatrixBT2020, // Rec.ITU-R BT.2020 non-constant luminance 623d0407baSopenharmony_ci MatrixBT2020Constant, // Rec.ITU-R BT.2020 constant luminance 633d0407baSopenharmony_ci MatrixOther = 0xff, 643d0407baSopenharmony_ci} OMX_MATRIXCOEFFS; 653d0407baSopenharmony_ci 663d0407baSopenharmony_citypedef struct OMX_COLORASPECTS { 673d0407baSopenharmony_ci OMX_RANGE mRange; // IN/OUT 683d0407baSopenharmony_ci OMX_PRIMARIES mPrimaries; // IN/OUT 693d0407baSopenharmony_ci OMX_TRANSFER mTransfer; // IN/OUT 703d0407baSopenharmony_ci OMX_MATRIXCOEFFS mMatrixCoeffs; // IN/OUT 713d0407baSopenharmony_ci} OMX_COLORASPECTS; 723d0407baSopenharmony_ci 733d0407baSopenharmony_citypedef struct ISO_COLORASPECTS { 743d0407baSopenharmony_ci OMX_U32 mRange; // IN/OUT 753d0407baSopenharmony_ci OMX_U32 mPrimaries; // IN/OUT 763d0407baSopenharmony_ci OMX_U32 mTransfer; // IN/OUT 773d0407baSopenharmony_ci OMX_U32 mMatrixCoeffs; // IN/OUT 783d0407baSopenharmony_ci} ISO_COLORASPECTS; 793d0407baSopenharmony_ci 803d0407baSopenharmony_citypedef struct OMX_CONFIG_DESCRIBECOLORASPECTSPARAMS { 813d0407baSopenharmony_ci OMX_U32 nSize; // IN 823d0407baSopenharmony_ci OMX_VERSIONTYPE nVersion; // IN 833d0407baSopenharmony_ci OMX_U32 nPortIndex; // IN 843d0407baSopenharmony_ci OMX_BOOL bRequestingDataSpace; // IN 853d0407baSopenharmony_ci OMX_BOOL bDataSpaceChanged; // IN 863d0407baSopenharmony_ci OMX_U32 nPixelFormat; // IN 873d0407baSopenharmony_ci OMX_U32 nDataSpace; // OUT 883d0407baSopenharmony_ci OMX_COLORASPECTS sAspects; // IN/OUT 893d0407baSopenharmony_ci} OMX_CONFIG_DESCRIBECOLORASPECTSPARAMS; 903d0407baSopenharmony_ci 913d0407baSopenharmony_citypedef enum OMX_VIDEO_CODINGTYPEEXT { 923d0407baSopenharmony_ci OMX_VIDEO_CodingVP8EXT = 9, 933d0407baSopenharmony_ci OMX_VIDEO_AVCLevel52 = 0x10000, 943d0407baSopenharmony_ci}OMX_VIDEO_CODINGTYPEEXT; 953d0407baSopenharmony_ci 963d0407baSopenharmony_citypedef enum OMX_VIDEO_VP9PROFILETYPE { 973d0407baSopenharmony_ci OMX_VIDEO_VP9Profile0 = 0x1, 983d0407baSopenharmony_ci OMX_VIDEO_VP9Profile1 = 0x2, 993d0407baSopenharmony_ci OMX_VIDEO_VP9Profile2 = 0x4, 1003d0407baSopenharmony_ci OMX_VIDEO_VP9Profile3 = 0x8, 1013d0407baSopenharmony_ci // HDR profiles also support passing HDR metadata 1023d0407baSopenharmony_ci OMX_VIDEO_VP9Profile2HDR = 0x1000, 1033d0407baSopenharmony_ci OMX_VIDEO_VP9Profile3HDR = 0x2000, 1043d0407baSopenharmony_ci OMX_VIDEO_VP9ProfileUnknown = 0x6EFFFFFF, 1053d0407baSopenharmony_ci OMX_VIDEO_VP9ProfileMax = 0x7FFFFFFF 1063d0407baSopenharmony_ci} OMX_VIDEO_VP9PROFILETYPE; 1073d0407baSopenharmony_ci 1083d0407baSopenharmony_ci/** VP9 levels */ 1093d0407baSopenharmony_citypedef enum OMX_VIDEO_VP9LEVELTYPE { 1103d0407baSopenharmony_ci OMX_VIDEO_VP9Level1 = 0x1, 1113d0407baSopenharmony_ci OMX_VIDEO_VP9Level11 = 0x2, 1123d0407baSopenharmony_ci OMX_VIDEO_VP9Level2 = 0x4, 1133d0407baSopenharmony_ci OMX_VIDEO_VP9Level21 = 0x8, 1143d0407baSopenharmony_ci OMX_VIDEO_VP9Level3 = 0x10, 1153d0407baSopenharmony_ci OMX_VIDEO_VP9Level31 = 0x20, 1163d0407baSopenharmony_ci OMX_VIDEO_VP9Level4 = 0x40, 1173d0407baSopenharmony_ci OMX_VIDEO_VP9Level41 = 0x80, 1183d0407baSopenharmony_ci OMX_VIDEO_VP9Level5 = 0x100, 1193d0407baSopenharmony_ci OMX_VIDEO_VP9Level51 = 0x200, 1203d0407baSopenharmony_ci OMX_VIDEO_VP9Level52 = 0x400, 1213d0407baSopenharmony_ci OMX_VIDEO_VP9Level6 = 0x800, 1223d0407baSopenharmony_ci OMX_VIDEO_VP9Level61 = 0x1000, 1233d0407baSopenharmony_ci OMX_VIDEO_VP9Level62 = 0x2000, 1243d0407baSopenharmony_ci OMX_VIDEO_VP9LevelUnknown = 0x6EFFFFFF, 1253d0407baSopenharmony_ci OMX_VIDEO_VP9LevelMax = 0x7FFFFFFF 1263d0407baSopenharmony_ci} OMX_VIDEO_VP9LEVELTYPE; 1273d0407baSopenharmony_ci 1283d0407baSopenharmony_ci/** Structure to define if dependent slice segments should be used */ 1293d0407baSopenharmony_citypedef struct OMX_VIDEO_SLICESEGMENTSTYPE { 1303d0407baSopenharmony_ci OMX_U32 nSize; 1313d0407baSopenharmony_ci OMX_VERSIONTYPE nVersion; 1323d0407baSopenharmony_ci OMX_U32 nPortIndex; 1333d0407baSopenharmony_ci OMX_BOOL bDepedentSegments; 1343d0407baSopenharmony_ci OMX_BOOL bEnableLoopFilterAcrossSlices; 1353d0407baSopenharmony_ci} OMX_VIDEO_SLICESEGMENTSTYPE; 1363d0407baSopenharmony_ci#endif