1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2019 Rockchip Electronics Co. LTD 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Licensed under the Apache License, Version 2.0 (the "License"); 5*4882a593Smuzhiyun * you may not use this file except in compliance with the License. 6*4882a593Smuzhiyun * You may obtain a copy of the License at 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * http://www.apache.org/licenses/LICENSE-2.0 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Unless required by applicable law or agreed to in writing, software 11*4882a593Smuzhiyun * distributed under the License is distributed on an "AS IS" BASIS, 12*4882a593Smuzhiyun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4882a593Smuzhiyun * See the License for the specific language governing permissions and 14*4882a593Smuzhiyun * limitations under the License. 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * author: martin.cheng@rock-chips.com 17*4882a593Smuzhiyun * date: 20190115 18*4882a593Smuzhiyun * ref: tmedia/libavutil/pixfmt.h 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #ifndef SRC_RT_MEDIA_INCLUDE_RTMEDIAPIXEL_H_ 22*4882a593Smuzhiyun #define SRC_RT_MEDIA_INCLUDE_RTMEDIAPIXEL_H_ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun /** 25*4882a593Smuzhiyun * Chromaticity coordinates of the source primaries. 26*4882a593Smuzhiyun * These values match the ones defined by ISO/IEC 23001-8_2013 7.1. 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun enum RTColorPrimaries { 29*4882a593Smuzhiyun RTCOL_PRI_RESERVED0 = 0, 30*4882a593Smuzhiyun RTCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B 31*4882a593Smuzhiyun RTCOL_PRI_UNSPECIFIED = 2, 32*4882a593Smuzhiyun RTCOL_PRI_RESERVED = 3, 33*4882a593Smuzhiyun RTCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun RTCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM 36*4882a593Smuzhiyun RTCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC 37*4882a593Smuzhiyun RTCOL_PRI_SMPTE240M = 7, ///< functionally identical to above 38*4882a593Smuzhiyun RTCOL_PRI_FILM = 8, ///< colour filters using Illuminant C 39*4882a593Smuzhiyun RTCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 40*4882a593Smuzhiyun RTCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) 41*4882a593Smuzhiyun RTCOL_PRI_SMPTEST428_1 = RTCOL_PRI_SMPTE428, 42*4882a593Smuzhiyun RTCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3 43*4882a593Smuzhiyun RTCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 44*4882a593Smuzhiyun RTCOL_PRI_JEDEC_P22 = 22, ///< JEDEC P22 phosphors 45*4882a593Smuzhiyun RTCOL_PRI_MAX ///< Not part of ABI 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /** 49*4882a593Smuzhiyun * Color Transfer Characteristic. 50*4882a593Smuzhiyun * These values match the ones defined by ISO/IEC 23001-8_2013-7.2. 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun enum RTColorTransfer { 53*4882a593Smuzhiyun RTCOL_TRC_RESERVED0 = 0, 54*4882a593Smuzhiyun RTCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 55*4882a593Smuzhiyun RTCOL_TRC_UNSPECIFIED = 2, 56*4882a593Smuzhiyun RTCOL_TRC_RESERVED = 3, 57*4882a593Smuzhiyun RTCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM 58*4882a593Smuzhiyun RTCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG 59*4882a593Smuzhiyun RTCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC 60*4882a593Smuzhiyun RTCOL_TRC_SMPTE240M = 7, 61*4882a593Smuzhiyun RTCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" 62*4882a593Smuzhiyun RTCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" 63*4882a593Smuzhiyun RTCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" 64*4882a593Smuzhiyun RTCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 65*4882a593Smuzhiyun RTCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut 66*4882a593Smuzhiyun RTCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) 67*4882a593Smuzhiyun RTCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system 68*4882a593Smuzhiyun RTCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system 69*4882a593Smuzhiyun RTCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems 70*4882a593Smuzhiyun RTCOL_TRC_SMPTEST2084 = RTCOL_TRC_SMPTE2084, 71*4882a593Smuzhiyun RTCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1 72*4882a593Smuzhiyun RTCOL_TRC_SMPTEST428_1 = RTCOL_TRC_SMPTE428, 73*4882a593Smuzhiyun RTCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" 74*4882a593Smuzhiyun RTCOL_TRC_MAX ///< Not part of ABI 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun /** 78*4882a593Smuzhiyun * YUV colorspace type. 79*4882a593Smuzhiyun * These values match the ones defined by ISO/IEC 23001-8_2013-7.3. 80*4882a593Smuzhiyun */ 81*4882a593Smuzhiyun enum RTColorSpace { 82*4882a593Smuzhiyun RTCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) 83*4882a593Smuzhiyun RTCOL_SPC_BT709 = 1, ///< ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B 84*4882a593Smuzhiyun RTCOL_SPC_UNSPECIFIED = 2, 85*4882a593Smuzhiyun RTCOL_SPC_RESERVED = 3, 86*4882a593Smuzhiyun RTCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) 87*4882a593Smuzhiyun RTCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 // NOLINT 88*4882a593Smuzhiyun RTCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC 89*4882a593Smuzhiyun RTCOL_SPC_SMPTE240M = 7, ///< functionally identical to above 90*4882a593Smuzhiyun RTCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 91*4882a593Smuzhiyun RTCOL_SPC_YCOCG = RTCOL_SPC_YCGCO, 92*4882a593Smuzhiyun RTCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system 93*4882a593Smuzhiyun RTCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system 94*4882a593Smuzhiyun RTCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x 95*4882a593Smuzhiyun RTCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system 96*4882a593Smuzhiyun RTCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system 97*4882a593Smuzhiyun RTCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp 98*4882a593Smuzhiyun RTCOL_SPC_MAX ///< Not part of ABI 99*4882a593Smuzhiyun }; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun /** 102*4882a593Smuzhiyun * MPEG vs JPEG YUV range. 103*4882a593Smuzhiyun */ 104*4882a593Smuzhiyun enum RTColorRange { 105*4882a593Smuzhiyun RTCOL_RANGE_UNSPECIFIED = 0, 106*4882a593Smuzhiyun RTCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges 107*4882a593Smuzhiyun RTCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges 108*4882a593Smuzhiyun RTCOL_RANGE_MAX ///< Not part of ABI 109*4882a593Smuzhiyun }; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun /** 112*4882a593Smuzhiyun * Location of chroma samples. 113*4882a593Smuzhiyun * 114*4882a593Smuzhiyun * Illustration showing the location of the first (top left) chroma sample of the 115*4882a593Smuzhiyun * image, the left shows only luma, the right 116*4882a593Smuzhiyun * shows the location of the chroma sample, the 2 could be imagined to overlay 117*4882a593Smuzhiyun * each other but are drawn separately due to limitations of ASCII 118*4882a593Smuzhiyun * 119*4882a593Smuzhiyun * 1st 2nd 1st 2nd horizontal luma sample positions 120*4882a593Smuzhiyun * v v v v 121*4882a593Smuzhiyun * ______ ______ 122*4882a593Smuzhiyun *1st luma line > |X X ... |3 4 X ... X are luma samples, 123*4882a593Smuzhiyun * | |1 2 1-6 are possible chroma positions 124*4882a593Smuzhiyun *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position 125*4882a593Smuzhiyun */ 126*4882a593Smuzhiyun enum RTChromaLocation { 127*4882a593Smuzhiyun RTCHROMA_LOC_UNSPECIFIED = 0, 128*4882a593Smuzhiyun RTCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0 129*4882a593Smuzhiyun RTCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0 130*4882a593Smuzhiyun RTCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 131*4882a593Smuzhiyun RTCHROMA_LOC_TOP = 4, 132*4882a593Smuzhiyun RTCHROMA_LOC_BOTTOMLEFT = 5, 133*4882a593Smuzhiyun RTCHROMA_LOC_BOTTOM = 6, 134*4882a593Smuzhiyun RTCHROMA_LOC_MAX ///< Not part of ABI 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #endif // SRC_RT_MEDIA_INCLUDE_RTMEDIAPIXEL_H_ 138