diff --git a/lib/libcoolstream/video_cs.h b/lib/libcoolstream/video_cs.h index 14ed049bb..d4be2eb49 100644 --- a/lib/libcoolstream/video_cs.h +++ b/lib/libcoolstream/video_cs.h @@ -90,7 +90,8 @@ typedef enum { VIDEO_STD_1080P30, VIDEO_STD_1080P24, VIDEO_STD_1080P25, - VIDEO_STD_AUTO + VIDEO_STD_AUTO, + VIDEO_STD_MAX = VIDEO_STD_AUTO } VIDEO_STD; typedef enum { @@ -199,7 +200,7 @@ class cVideo void StopPicture(); void Standby(unsigned int bOn); void Pig(int x, int y, int w, int h, int osd_w = 1064, int osd_h = 600); - void setContrast(int val); + void SetContrast(int val); bool ReceivedDRMDelay(void) { return receivedDRMDelay; } bool ReceivedVideoDelay(void) { return receivedVideoDelay; } void SetReceivedDRMDelay(bool Received) { receivedDRMDelay = Received; } @@ -209,6 +210,7 @@ class cVideo void SetWideScreen(bool onoff); void SetVideoMode(analog_mode_t mode); void SetDBDR(int dbdr); + void SetAutoModes(int modes[VIDEO_STD_MAX]); }; #endif diff --git a/src/driver/framebuffer.cpp b/src/driver/framebuffer.cpp index 4397d34dc..fcb883160 100644 --- a/src/driver/framebuffer.cpp +++ b/src/driver/framebuffer.cpp @@ -204,6 +204,7 @@ void CFrameBuffer::setupGXA(void) _write_gxa(gxa_base, GXA_BMP2_TYPE_REG, (3 << 16) | screeninfo.xres); _write_gxa(gxa_base, GXA_BMP2_ADDR_REG, (unsigned int) fix.smem_start); _write_gxa(gxa_base, GXA_BLEND_CFG_REG, 0x00089064); + // TODO check mono-flip, bit 8 _write_gxa(gxa_base, GXA_CFG_REG, 0x100 | (1 << 12) | (1 << 29)); _write_gxa(gxa_base, GXA_CFG2_REG, 0x1FF); _write_gxa(gxa_base, GXA_BG_COLOR_REG, (unsigned int) backgroundColor); @@ -228,7 +229,6 @@ void CFrameBuffer::init(const char * const fbDevice) memcpy(&oldscreen, &screeninfo, sizeof(screeninfo)); - //fb_fix_screeninfo fix; if (ioctl(fd, FBIOGET_FSCREENINFO, &fix)<0) { perror("FBIOGET_FSCREENINFO"); goto nolfb; diff --git a/src/neutrino.cpp b/src/neutrino.cpp index bedceae3d..f62db144c 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2427,6 +2427,8 @@ int CNeutrinoApp::run(int argc, char **argv) videoDecoder->SetCECAutoStandby(g_settings.hdmi_cec_standby == 1); videoDecoder->SetCECAutoView(g_settings.hdmi_cec_view_on == 1); videoDecoder->SetCECMode((VIDEO_HDMI_CEC_MODE)g_settings.hdmi_cec_mode); + videoDecoder->SetAutoModes(g_settings.enabled_video_modes); + // trigger a change audioSetupNotifier->changeNotify(LOCALE_AUDIOMENU_AVSYNC, NULL); diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index 9cdf4d1b6..691fd6a10 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -244,7 +244,6 @@ const CMenuOptionChooser::keyval VIDEOMENU_HDMI_CEC_MODE_OPTIONS[VIDEOMENU_HDMI_ }; /* numbers corresponding to video.cpp from zapit */ -//#define VIDEOMENU_VIDEOMODE_OPTION_COUNT 11 const CMenuOptionChooser::keyval_ext VIDEOMENU_VIDEOMODE_OPTIONS[VIDEOMENU_VIDEOMODE_OPTION_COUNT] = { { VIDEO_STD_SECAM, NONEXISTANT_LOCALE, "SECAM" }, @@ -296,8 +295,10 @@ CVideoSettings::CVideoSettings() : CMenuWidget(LOCALE_VIDEOMENU_HEAD, NEUTRINO_I CMenuWidget* menu = new CMenuWidget(LOCALE_VIDEOMENU_ENABLED_MODES, NEUTRINO_ICON_SETTINGS); menu->addItem(GenericMenuBack); menu->addItem(GenericMenuSeparatorLine); + + CAutoModeNotifier * anotify = new CAutoModeNotifier(); for (int i = 0; i < VIDEOMENU_VIDEOMODE_OPTION_COUNT; i++) - menu->addItem(new CMenuOptionChooser(VIDEOMENU_VIDEOMODE_OPTIONS[i].valname, &g_settings.enabled_video_modes[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); + menu->addItem(new CMenuOptionChooser(VIDEOMENU_VIDEOMODE_OPTIONS[i].valname, &g_settings.enabled_video_modes[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, anotify)); addItem(new CMenuForwarder(LOCALE_VIDEOMENU_ENABLED_MODES, true, NULL, menu, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED )); diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp index 43d6c9c97..77c111080 100644 --- a/src/system/setting_helpers.cpp +++ b/src/system/setting_helpers.cpp @@ -1025,3 +1025,9 @@ printf("CAllUsalsNotifier::changeNotify: %s\n", onoff ? "ON" : "OFF"); } return true; } + +bool CAutoModeNotifier::changeNotify(const neutrino_locale_t /*OptionName*/, void * /* data */) +{ + videoDecoder->SetAutoModes(g_settings.enabled_video_modes); + return true; +} diff --git a/src/system/setting_helpers.h b/src/system/setting_helpers.h index 5696df466..6c878b0bd 100644 --- a/src/system/setting_helpers.h +++ b/src/system/setting_helpers.h @@ -324,4 +324,10 @@ public: bool changeNotify(const neutrino_locale_t, void * data); }; +class CAutoModeNotifier : public CChangeObserver +{ +public: + bool changeNotify(const neutrino_locale_t, void * data); +}; + #endif diff --git a/src/system/settings.h b/src/system/settings.h index 52ff9dc5b..26315f33f 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -38,7 +38,7 @@ #include -#define VIDEOMENU_VIDEOMODE_OPTION_COUNT 12 +#define VIDEOMENU_VIDEOMODE_OPTION_COUNT 12 /* warning, must be same as VIDEO_STD_MAX */ struct SNeutrinoSettings { diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp index 086da256e..84794b872 100644 --- a/src/zapit/src/frontend.cpp +++ b/src/zapit/src/frontend.cpp @@ -221,7 +221,7 @@ void CFrontend::reset(void) fe_code_rate_t CFrontend::getCFEC() { if (info.type == FE_QPSK) { - return curfe.u.qpsk.fec_inner; + return curfe.u.qpsk.fec_inner; } else { return curfe.u.qam.fec_inner; }