diff --git a/data/locale/english.locale b/data/locale/english.locale index 6abe2e8e1..9ec4accd1 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -125,7 +125,8 @@ GENRE.TRAVEL_HOBBIES.7 gardening GENRE.UNKNOWN unknown apidselector.head Select language audiomenu.PCMOffset Volume Decrease PCM -audiomenu.analogout Analog Output +audiomenu.analog_mode Analog mode +audiomenu.analog_out Analog output audiomenu.avs avs audiomenu.avs_control Volume Control avs/ost audiomenu.dolbydigital Dolby Digital diff --git a/lib/libcoolstream/audio_cs.h b/lib/libcoolstream/audio_cs.h index b2dea13e7..0ac17e4a3 100644 --- a/lib/libcoolstream/audio_cs.h +++ b/lib/libcoolstream/audio_cs.h @@ -57,6 +57,7 @@ class cAudio bool hdmiDD; bool spdifDD; bool hasMuteScheduled; + bool analogOut; public: /* construct & destruct */ cAudio(void * hBuffer, void * encHD, void * encSD); @@ -108,7 +109,7 @@ class cAudio void SetHdmiDD(bool enable); void SetSpdifDD(bool enable); void ScheduleMute(bool On); - + void EnableAnalogOut(bool enable); }; #endif diff --git a/src/gui/audio_select.cpp b/src/gui/audio_select.cpp index 1103d64cf..df0d7485f 100644 --- a/src/gui/audio_select.cpp +++ b/src/gui/audio_select.cpp @@ -75,6 +75,13 @@ int CAudioSelectMenuHandler::exec(CMenuTarget* parent, const std::string &/*acti return res; } +#define OPTIONS_OFF0_ON1_OPTION_COUNT 2 +const CMenuOptionChooser::keyval OPTIONS_OFF0_ON1_OPTIONS[OPTIONS_OFF0_ON1_OPTION_COUNT] = +{ + { 0, LOCALE_OPTIONS_OFF }, + { 1, LOCALE_OPTIONS_ON } +}; + int CAudioSelectMenuHandler::doMenu () { CMenuWidget AudioSelector(LOCALE_APIDSELECTOR_HEAD, NEUTRINO_ICON_AUDIO, 360); @@ -93,13 +100,19 @@ int CAudioSelectMenuHandler::doMenu () // -- setup menue for to Dual Channel Stereo AudioSelector.addItem(GenericMenuSeparatorLine); - CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOGOUT, + CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOG_MODE, &g_settings.audio_AnalogMode, AUDIOMENU_ANALOGOUT_OPTIONS, AUDIOMENU_ANALOGOUT_OPTION_COUNT, true, audioSetupNotifier, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); AudioSelector.addItem( oj ); + oj = new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOG_OUT, &g_settings.analog_out, + OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, + true, audioSetupNotifier, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN); + + AudioSelector.addItem( oj ); + CChannelList *channelList = CNeutrinoApp::getInstance ()->channelList; int curnum = channelList->getActiveChannelNumber(); CZapitChannel * cc = channelList->getChannel(curnum); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index cf0d90fa3..b6f0bd483 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -758,6 +758,7 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.srs_nmgr_enable = configfile.getInt32( "srs_nmgr_enable", 0); g_settings.hdmi_dd = configfile.getInt32( "hdmi_dd", 0); g_settings.spdif_dd = configfile.getInt32( "spdif_dd", 1); + g_settings.analog_out = configfile.getInt32( "analog_out", 1); g_settings.avsync = configfile.getInt32( "avsync", 1); g_settings.clockrec = configfile.getInt32( "clockrec", 1); g_settings.video_dbdr = configfile.getInt32("video_dbdr", 0); @@ -1263,6 +1264,7 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32( "srs_ref_volume", g_settings.srs_ref_volume); configfile.setInt32( "srs_nmgr_enable", g_settings.srs_nmgr_enable); configfile.setInt32( "hdmi_dd", g_settings.hdmi_dd); + configfile.setInt32( "analog_out", g_settings.analog_out); configfile.setInt32( "spdif_dd", g_settings.spdif_dd); configfile.setInt32( "avsync", g_settings.avsync); configfile.setInt32( "clockrec", g_settings.clockrec); @@ -2320,6 +2322,8 @@ int CNeutrinoApp::run(int argc, char **argv) audioDecoder->setVolume(g_settings.current_volume, g_settings.current_volume); audioDecoder->SetHdmiDD(g_settings.hdmi_dd ? true : false); audioDecoder->SetSpdifDD(g_settings.spdif_dd ? true : false); + audioDecoder->EnableAnalogOut(g_settings.analog_out ? true : false); + videoDecoder->SetDBDR(g_settings.video_dbdr); audioSetupNotifier->changeNotify(LOCALE_AUDIOMENU_AVSYNC, NULL); diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index f05913b91..10bacc4f9 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -1637,7 +1637,7 @@ void CNeutrinoApp::InitAudioSettings(CMenuWidget &audioSettings, CAudioSetupNoti { addMenueIntroItems(audioSettings); - audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOGOUT, &g_settings.audio_AnalogMode, AUDIOMENU_ANALOGOUT_OPTIONS, AUDIOMENU_ANALOGOUT_OPTION_COUNT, true, audioSetupNotifier)); + audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOG_MODE, &g_settings.audio_AnalogMode, AUDIOMENU_ANALOGOUT_OPTIONS, AUDIOMENU_ANALOGOUT_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_DOLBYDIGITAL, &g_settings.audio_DolbyDigital, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_ENGLISH, &g_settings.audio_english, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_HDMI_DD, &g_settings.hdmi_dd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); diff --git a/src/system/locals.h b/src/system/locals.h index 7b4685463..ca3f4a1ae 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -131,7 +131,8 @@ typedef enum { LOCALE_GENRE_UNKNOWN, LOCALE_APIDSELECTOR_HEAD, LOCALE_AUDIOMENU_PCMOFFSET, - LOCALE_AUDIOMENU_ANALOGOUT, + LOCALE_AUDIOMENU_ANALOG_MODE, + LOCALE_AUDIOMENU_ANALOG_OUT, LOCALE_AUDIOMENU_AVS, LOCALE_AUDIOMENU_AVS_CONTROL, LOCALE_AUDIOMENU_DOLBYDIGITAL, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index cc23b310b..14020717b 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -131,7 +131,8 @@ const char *locale_real_names[] = { "GENRE.UNKNOWN", "apidselector.head", "audiomenu.PCMOffset", - "audiomenu.analogout", + "audiomenu.analog_mode", + "audiomenu.analog_out", "audiomenu.avs", "audiomenu.avs_control", "audiomenu.dolbydigital", diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp index 3efc51ad8..40f632858 100644 --- a/src/system/setting_helpers.cpp +++ b/src/system/setting_helpers.cpp @@ -484,8 +484,10 @@ bool CAudioSetupNotifier::changeNotify(const neutrino_locale_t OptionName, void { } #endif - if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_ANALOGOUT)) { + if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_ANALOG_MODE)) { g_Zapit->setAudioMode(g_settings.audio_AnalogMode); + } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_ANALOG_OUT)) { + audioDecoder->EnableAnalogOut(g_settings.analog_out ? true : false); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_HDMI_DD)) { audioDecoder->SetHdmiDD(g_settings.hdmi_dd ? true : false); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_SPDIF_DD)) { diff --git a/src/system/settings.h b/src/system/settings.h index 4fb813e77..5a1e9705a 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -78,6 +78,7 @@ struct SNeutrinoSettings int srs_nmgr_enable; int hdmi_dd; int spdif_dd; + int analog_out; int video_dbdr; int enabled_video_modes[VIDEOMENU_VIDEOMODE_OPTION_COUNT]; int cpufreq;