diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index c09878b6a..91495ec5b 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -1886,6 +1886,7 @@ menu.hint_video_cinch_mode Wählen Sie den Modus des Ausgangssignals für den Co menu.hint_video_contrast Ändert den Kontrast menu.hint_video_dbdr Verwendeter MPEG2 Filter menu.hint_video_format Wählen Sie das Bildschirmformat ihres Fernsehgerätes +menu.hint_video_hdmi_mode Wählt den Farbraum für die digitale Ausgabe menu.hint_video_mode Wählen Sie den Modus des Ausgangssignals für den HDMI-Anschluss menu.hint_video_modes Definiert, welche Videosysteme mit der VF-Taste der Fernbedienung ausgewählt werden können menu.hint_video_modes_auto Definiert, welche Videosysteme automatisch ausgewählt werden können @@ -3003,6 +3004,11 @@ videomenu.hdmi_cec_volume CEC Lautstärke Regelung videomenu.hdmi_cec_vol_audiosystem Audiosystem videomenu.hdmi_cec_vol_off aus videomenu.hdmi_cec_vol_tv TV +videomenu.hdmi_mode Farbraum +videomenu.hdmi_mode_auto auto +videomenu.hdmi_mode_bt2020ncl bt2020ncl +videomenu.hdmi_mode_bt2020cl bt2020cl +videomenu.hdmi_mode_bt709 bt709 videomenu.hue Farbton videomenu.letterbox Letterbox videomenu.panscan Pan & Scan diff --git a/data/locale/english.locale b/data/locale/english.locale index 260e1f9b9..52dae8123 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -1886,6 +1886,7 @@ menu.hint_video_cinch_mode Select analog output mode for\ncomposite video out menu.hint_video_contrast Change picture contrast menu.hint_video_dbdr MPEG2 enhancement filters menu.hint_video_format TV aspect ratio +menu.hint_video_hdmi_mode Select color space for digital output menu.hint_video_mode HDMI output video mode menu.hint_video_modes VF key will cycle between enabled modes menu.hint_video_modes_auto Enable modes to auto-select based on content @@ -3003,6 +3004,11 @@ videomenu.hdmi_cec_volume CEC volume control videomenu.hdmi_cec_vol_audiosystem Audiosystem videomenu.hdmi_cec_vol_off off videomenu.hdmi_cec_vol_tv TV +videomenu.hdmi_mode Color Space +videomenu.hdmi_mode_auto auto +videomenu.hdmi_mode_bt2020ncl bt2020ncl +videomenu.hdmi_mode_bt2020cl bt2020cl +videomenu.hdmi_mode_bt709 bt709 videomenu.hue Hue videomenu.letterbox Letterbox videomenu.panscan Pan & Scan diff --git a/src/gui/videosettings.cpp b/src/gui/videosettings.cpp index 6e3b93c69..e9b510781 100644 --- a/src/gui/videosettings.cpp +++ b/src/gui/videosettings.cpp @@ -362,6 +362,16 @@ CMenuOptionChooser::keyval VIDEOMENU_ZAPPINGMODE_OPTIONS[VIDEOMENU_ZAPPINGMODE_O { 1, LOCALE_VIDEOMENU_ZAPPINGMODE_HOLD } }; +#define VIDEOMENU_HDMI_MODE_OPTION_COUNT 4 +const CMenuOptionChooser::keyval VIDEOMENU_HDMI_MODE_OPTIONS[VIDEOMENU_HDMI_MODE_OPTION_COUNT] = +{ + { HDMI_MODE_AUTO, LOCALE_VIDEOMENU_HDMI_MODE_AUTO }, + { HDMI_MODE_BT2020NCL, LOCALE_VIDEOMENU_HDMI_MODE_BT2020NCL }, + { HDMI_MODE_BT2020CL, LOCALE_VIDEOMENU_HDMI_MODE_BT2020CL }, + { HDMI_MODE_BT709, LOCALE_VIDEOMENU_HDMI_MODE_BT709 } +}; +#endif + int CVideoSettings::showVideoSetup() { //init @@ -526,6 +536,12 @@ int CVideoSettings::showVideoSetup() videosetup->addItem(zm); } + if (file_exists("/proc/stb/video/hdmi_colorimetry")) { + CMenuOptionChooser *hm = new CMenuOptionChooser(LOCALE_VIDEOMENU_HDMI_MODE, &g_settings.hdmimode, VIDEOMENU_HDMI_MODE_OPTIONS, VIDEOMENU_HDMI_MODE_OPTION_COUNT, true, this, CRCInput::convertDigitToKey(shortcut++)); + hm->setHint("", LOCALE_MENU_HINT_VIDEO_HDMI_MODE); + videosetup->addItem(hm); + } + #if HAVE_ARM_HARDWARE videosetup->addItem(GenericMenuSeparatorLine); @@ -720,6 +736,10 @@ bool CVideoSettings::changeNotify(const neutrino_locale_t OptionName, void * /* else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_ZAPPINGMODE)) { videoDecoder->SetControl(VIDEO_CONTROL_ZAPPING_MODE, g_settings.zappingmode); } + else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_HDMI_MODE)) + { + videoDecoder->SetHdmiMode((HDMI_MODE) g_settings.hdmimode); + } #endif return false; } diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 0ceea0aa2..585378857 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -546,6 +546,7 @@ int CNeutrinoApp::loadSetup(const char *fname) #if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE g_settings.zappingmode = configfile.getInt32("zappingmode", 0); + g_settings.hdmimode = configfile.getInt32("hdmimode", 0); #endif g_settings.cpufreq = g_info.hw_caps->can_cpufreq ? configfile.getInt32("cpufreq", 0) : 0; @@ -1748,6 +1749,7 @@ void CNeutrinoApp::saveSetup(const char *fname) #if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE configfile.setInt32("zappingmode", g_settings.zappingmode); + configfile.setInt32("hdmimode", g_settings.hdmimode); #endif configfile.setInt32("cpufreq", g_settings.cpufreq); @@ -3350,6 +3352,7 @@ TIMER_START(); #if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE videoDecoder->SetControl(VIDEO_CONTROL_ZAPPING_MODE, g_settings.zappingmode); + videoDecoder->SetHdmiMode((HDMI_MODE) g_settings.hdmimode); #endif TIMER_STOP("################################## after all ##################################"); diff --git a/src/system/locals.h b/src/system/locals.h index f2bc8bf9c..f4e2f6a7c 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -1913,6 +1913,7 @@ typedef enum LOCALE_MENU_HINT_VIDEO_CONTRAST, LOCALE_MENU_HINT_VIDEO_DBDR, LOCALE_MENU_HINT_VIDEO_FORMAT, + LOCALE_MENU_HINT_VIDEO_HDMI_MODE, LOCALE_MENU_HINT_VIDEO_MODE, LOCALE_MENU_HINT_VIDEO_MODES, LOCALE_MENU_HINT_VIDEO_MODES_AUTO, @@ -3030,6 +3031,11 @@ typedef enum LOCALE_VIDEOMENU_HDMI_CEC_VOL_AUDIOSYSTEM, LOCALE_VIDEOMENU_HDMI_CEC_VOL_OFF, LOCALE_VIDEOMENU_HDMI_CEC_VOL_TV, + LOCALE_VIDEOMENU_HDMI_MODE, + LOCALE_VIDEOMENU_HDMI_MODE_AUTO, + LOCALE_VIDEOMENU_HDMI_MODE_BT2020NCL, + LOCALE_VIDEOMENU_HDMI_MODE_BT2020CL, + LOCALE_VIDEOMENU_HDMI_MODE_BT709, LOCALE_VIDEOMENU_HUE, LOCALE_VIDEOMENU_LETTERBOX, LOCALE_VIDEOMENU_PANSCAN, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index 6da8e630e..9d1fae7fa 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -1913,6 +1913,7 @@ const char * locale_real_names[] = "menu.hint_video_contrast", "menu.hint_video_dbdr", "menu.hint_video_format", + "menu.hint_video_hdmi_mode", "menu.hint_video_mode", "menu.hint_video_modes", "menu.hint_video_modes_auto", @@ -3030,6 +3031,11 @@ const char * locale_real_names[] = "videomenu.hdmi_cec_vol_audiosystem", "videomenu.hdmi_cec_vol_off", "videomenu.hdmi_cec_vol_tv", + "videomenu.hdmi_mode", + "videomenu.hdmi_mode_auto", + "videomenu.hdmi_mode_bt2020ncl", + "videomenu.hdmi_mode_bt2020cl", + "videomenu.hdmi_mode_bt709", "videomenu.hue", "videomenu.letterbox", "videomenu.panscan", diff --git a/src/system/settings.h b/src/system/settings.h index cd39f0f63..11160a243 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -386,6 +386,7 @@ struct SNeutrinoSettings int enabled_auto_modes[VIDEOMENU_VIDEOMODE_OPTION_COUNT]; int zappingmode; + int hdmimode; int cpufreq; int standby_cpufreq;