1 /* 2 * Copyright (C) 2005-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: LGPL-2.1-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #include "RenderFlags.h" 10 11 #include <map> 12 #include <string> 13 GetFlagsColorMatrix(unsigned int color_matrix,unsigned width,unsigned height)14unsigned int GetFlagsColorMatrix(unsigned int color_matrix, unsigned width, unsigned height) 15 { 16 switch(color_matrix) 17 { 18 case 10: // BT2020_CL 19 case 9: // BT2020_NCL 20 return CONF_FLAGS_YUVCOEF_BT2020; 21 case 7: // SMPTE 240M (1987) 22 return CONF_FLAGS_YUVCOEF_240M; 23 case 6: // SMPTE 170M 24 case 5: // ITU-R BT.470-2 25 case 4: // FCC 26 return CONF_FLAGS_YUVCOEF_BT601; 27 case 1: // ITU-R Rec.709 (1990) -- BT.709 28 return CONF_FLAGS_YUVCOEF_BT709; 29 case 3: // RESERVED 30 case 2: // UNSPECIFIED 31 default: 32 if(width > 1024 || height >= 600) 33 return CONF_FLAGS_YUVCOEF_BT709; 34 else 35 return CONF_FLAGS_YUVCOEF_BT601; 36 break; 37 } 38 } 39 GetFlagsChromaPosition(unsigned int chroma_position)40unsigned int GetFlagsChromaPosition(unsigned int chroma_position) 41 { 42 switch(chroma_position) 43 { 44 case 1: return CONF_FLAGS_CHROMA_LEFT; 45 case 2: return CONF_FLAGS_CHROMA_CENTER; 46 case 3: return CONF_FLAGS_CHROMA_TOPLEFT; 47 } 48 return 0; 49 } 50 GetFlagsColorPrimaries(unsigned int color_primaries)51unsigned int GetFlagsColorPrimaries(unsigned int color_primaries) 52 { 53 switch(color_primaries) 54 { 55 case 1: return CONF_FLAGS_COLPRI_BT709; 56 case 4: return CONF_FLAGS_COLPRI_BT470M; 57 case 5: return CONF_FLAGS_COLPRI_BT470BG; 58 case 6: return CONF_FLAGS_COLPRI_170M; 59 case 7: return CONF_FLAGS_COLPRI_240M; 60 case 9: return CONF_FLAGS_COLPRI_BT2020; 61 } 62 return 0; 63 } 64 GetFlagsStereoMode(const std::string & mode)65unsigned int GetFlagsStereoMode(const std::string& mode) 66 { 67 static std::map<std::string, unsigned int> convert; 68 if(convert.empty()) 69 { 70 convert["mono"] = 0u; 71 convert["left_right"] = CONF_FLAGS_STEREO_MODE_SBS | CONF_FLAGS_STEREO_CADANCE_LEFT_RIGHT; 72 convert["bottom_top"] = CONF_FLAGS_STEREO_MODE_TAB | CONF_FLAGS_STEREO_CADANCE_RIGHT_LEFT; 73 convert["top_bottom"] = CONF_FLAGS_STEREO_MODE_TAB | CONF_FLAGS_STEREO_CADANCE_LEFT_RIGHT; 74 convert["checkerboard_rl"] = 0u; 75 convert["checkerboard_lr"] = 0u; 76 convert["row_interleaved_rl"] = 0u; 77 convert["row_interleaved_lr"] = 0u; 78 convert["col_interleaved_rl"] = 0u; 79 convert["col_interleaved_lr"] = 0u; 80 convert["anaglyph_cyan_red"] = 0u; 81 convert["right_left"] = CONF_FLAGS_STEREO_MODE_SBS | CONF_FLAGS_STEREO_CADANCE_RIGHT_LEFT; 82 convert["anaglyph_green_magenta"] = 0u; 83 convert["anaglyph_yellow_blue"] = 0u; 84 convert["block_lr"] = 0u; 85 convert["block_rl"] = 0u; 86 } 87 return convert[mode]; 88 } 89 90