diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 26e056fe7..65b498a53 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -126,6 +126,7 @@ audio.srs_iq SRS TruVolume Technologie audio.srs_nmgr Noise-Manager audio.srs_volume Referenzlautstärke audiomenu.PCMOffset Lautstärkeabsenkung PCM +audiomenu.ac3 AC3 durchleiten audiomenu.analog_mode Analog Modus audiomenu.analog_out Analog-Ausgang audiomenu.auto_lang Tonwahl automatisch @@ -135,6 +136,7 @@ audiomenu.avsync A/V sync audiomenu.avsync_am Audio master audiomenu.clockrec audiomenu.dolbydigital DD-Unterkanal automatisch +audiomenu.dts DTS durchleiten audiomenu.hdmi_dd Dolby Digital über HDMI audiomenu.hdmi_dd_auto automatisch audiomenu.hdmi_dd_force erzwingen @@ -1008,12 +1010,14 @@ menu.hint_adzap_writedata Schreibe Daten über den Status des Werbezappers nach menu.hint_aplay Audioplayer menu.hint_aplay_setup Ändern Sie Audioplayer-Einstellungen wie Titel-Anzeige, Startverzeichnis oder Bildschirmschoner. menu.hint_audio Audio-Ausgang, Dolby Digital und SRS TruVolume Optionen usw. +menu.hint_audio_ac3 AC3 Tonspuren unverändert durchleiten menu.hint_audio_adjust_vol_ac3 Lautstärkeanpassung für AC3-Tonspuren menu.hint_audio_adjust_vol_clear Alle gespeicherten Werte für AC3- und PCM-Tonspuren löschen menu.hint_audio_adjust_vol_pcm Lautstärkeanpassung für PCM-Tonspuren menu.hint_audio_analog_mode Wählen Sie den Modus des Ausgangssignals für den CINCH-Anschluss menu.hint_audio_avsync Diese Funktion synchronisiert Bild und Ton menu.hint_audio_dd Ist diese Option aktiviert, wird automatisch auf Dolby Digital Ton geschalten, sobald dieser verfügbar ist +menu.hint_audio_dts DTS Tonspuren unverändert durchleiten menu.hint_audio_hdmi_dd Bei aktiver Option wird über den HDMI-Ausgang der Dolby Digital Ton ausgegeben menu.hint_audio_spdif_dd Bei aktiver Option wird über den optischen Ausgang (S/PDIF) der Dolby Digital Ton ausgegeben menu.hint_audio_srs Schalten Sie SRS TruVolume ein oder aus diff --git a/data/locale/english.locale b/data/locale/english.locale index 0fec73f2d..76629708e 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -126,6 +126,7 @@ audio.srs_iq SRS TruVolume algo audio.srs_nmgr Noise manager audio.srs_volume Reference volume audiomenu.PCMOffset Volume Decrease PCM +audiomenu.ac3 AC3 passthrough audiomenu.analog_mode Analog mode audiomenu.analog_out Analog output audiomenu.auto_lang Auto select audio @@ -135,6 +136,7 @@ audiomenu.avsync A/V sync audiomenu.avsync_am Audio master audiomenu.clockrec audiomenu.dolbydigital Prefer Dolby Digital +audiomenu.dts DTS passthrough audiomenu.hdmi_dd Encoded DD on HDMI audiomenu.hdmi_dd_auto auto audiomenu.hdmi_dd_force force @@ -1008,12 +1010,14 @@ menu.hint_adzap_writedata Write data according to adzap status to /tmp/adzap.dat menu.hint_aplay Audio player menu.hint_aplay_setup Change title display, start directory, screen saver and more menu.hint_audio Audio output, DD\nSRS True volume options +menu.hint_audio_ac3 Pass AC3 audio tracks unchanged menu.hint_audio_adjust_vol_ac3 Channel specific volume adjustment for AC3 streams menu.hint_audio_adjust_vol_clear Clear all saved values for PCM and AC3 streams menu.hint_audio_adjust_vol_pcm Channel specific volume adjustment for PCM streams menu.hint_audio_analog_mode Select audio channel to use\nstereo, mono-left, mono-right menu.hint_audio_avsync A/V sync menu.hint_audio_dd Auto-switch to DolbyDigital audio pid,\nif available +menu.hint_audio_dts Pass DTS audio tracks unchanged menu.hint_audio_hdmi_dd DolbyDigital over HDMI: off - decoded\nauto if supported by device, force menu.hint_audio_spdif_dd DolbyDigital over optical output menu.hint_audio_srs SRS TruVolume control volume jumps\nat content changes diff --git a/src/gui/audio_setup.cpp b/src/gui/audio_setup.cpp index 294a6c6a9..88d9f1856 100644 --- a/src/gui/audio_setup.cpp +++ b/src/gui/audio_setup.cpp @@ -154,6 +154,13 @@ int CAudioSetup::showAudioSetup() CMenuOptionChooser * as_oj_ddsubchn = new CMenuOptionChooser(LOCALE_AUDIOMENU_DOLBYDIGITAL, &g_settings.audio_DolbyDigital, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier); as_oj_ddsubchn->setHint("", LOCALE_MENU_HINT_AUDIO_DD); +#if HAVE_ARM_HARDWARE + CMenuOptionChooser * as_oj_ac3 = new CMenuOptionChooser(LOCALE_AUDIOMENU_AC3, &g_settings.ac3_pass, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier); + as_oj_ac3->setHint("", LOCALE_MENU_HINT_AUDIO_AC3); + + CMenuOptionChooser * as_oj_dts = new CMenuOptionChooser(LOCALE_AUDIOMENU_DTS, &g_settings.dts_pass, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier); + as_oj_dts->setHint("", LOCALE_MENU_HINT_AUDIO_DTS); +#else //dd via hdmi CMenuOptionChooser *as_oj_dd_hdmi = NULL; if (g_info.hw_caps->has_HDMI) { @@ -164,6 +171,7 @@ int CAudioSetup::showAudioSetup() //dd via spdif CMenuOptionChooser * as_oj_dd_spdif = new CMenuOptionChooser(LOCALE_AUDIOMENU_SPDIF_DD, &g_settings.spdif_dd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier); as_oj_dd_spdif->setHint("", LOCALE_MENU_HINT_AUDIO_SPDIF_DD); +#endif // HAVE_ARM_HARDWARE CMenuOptionChooser * as_oj_avsync = NULL; CMenuOptionNumberChooser * as_oj_vsteps = NULL; @@ -227,9 +235,14 @@ int CAudioSetup::showAudioSetup() audioSettings->addItem(as_oj_analogmode); audioSettings->addItem(GenericMenuSeparatorLine); //--------------------------------------------------------- +#if HAVE_ARM_HARDWARE + audioSettings->addItem(as_oj_ac3); + audioSettings->addItem(as_oj_dts); +#else if (g_info.hw_caps->has_HDMI) audioSettings->addItem(as_oj_dd_hdmi); audioSettings->addItem(as_oj_dd_spdif); +#endif // HAVE_ARM_HARDWARE audioSettings->addItem(as_oj_ddsubchn); //--------------------------------------------------------- audioSettings->addItem(GenericMenuSeparatorLine); diff --git a/src/neutrino.cpp b/src/neutrino.cpp index aa364b1fd..0095efb2e 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -401,8 +401,13 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.srs_algo = configfile.getInt32( "srs_algo", 1); g_settings.srs_ref_volume = configfile.getInt32( "srs_ref_volume", 40); g_settings.srs_nmgr_enable = configfile.getInt32( "srs_nmgr_enable", 0); +#if HAVE_ARM_HARDWARE + g_settings.ac3_pass = configfile.getInt32( "ac3_pass", 0); + g_settings.dts_pass = configfile.getInt32( "dts_pass", 0); +#else g_settings.hdmi_dd = configfile.getInt32( "hdmi_dd", 0); g_settings.spdif_dd = configfile.getInt32( "spdif_dd", 1); +#endif // HAVE_ARM_HARDWARE g_settings.analog_out = configfile.getInt32( "analog_out", 1); g_settings.avsync = configfile.getInt32( "avsync", 1); g_settings.clockrec = configfile.getInt32( "clockrec", 1); @@ -1198,9 +1203,14 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32( "srs_algo", g_settings.srs_algo); configfile.setInt32( "srs_ref_volume", g_settings.srs_ref_volume); configfile.setInt32( "srs_nmgr_enable", g_settings.srs_nmgr_enable); +#if HAVE_ARM_HARDWARE + configfile.setInt32( "ac3_pass", g_settings.ac3_pass); + configfile.setInt32( "dts_pass", g_settings.dts_pass); +#else configfile.setInt32( "hdmi_dd", g_settings.hdmi_dd); - configfile.setInt32( "analog_out", g_settings.analog_out); configfile.setInt32( "spdif_dd", g_settings.spdif_dd); +#endif + configfile.setInt32( "analog_out", g_settings.analog_out); configfile.setInt32( "avsync", g_settings.avsync); configfile.setInt32( "clockrec", g_settings.clockrec); configfile.setInt32( "video_dbdr", g_settings.video_dbdr); @@ -2402,8 +2412,13 @@ TIMER_START(); // init audio settings audioDecoder->SetSRS(g_settings.srs_enable, g_settings.srs_nmgr_enable, g_settings.srs_algo, g_settings.srs_ref_volume); //audioDecoder->setVolume(g_settings.current_volume, g_settings.current_volume); +#if HAVE_ARM_HARDWARE + audioDecoder->SetHdmiDD(g_settings.ac3_pass ? true : false); + audioDecoder->SetSpdifDD(g_settings.dts_pass ? true : false); +#else audioDecoder->SetHdmiDD((HDMI_ENCODED_MODE)g_settings.hdmi_dd); audioDecoder->SetSpdifDD(g_settings.spdif_dd ? true : false); +#endif audioDecoder->EnableAnalogOut(g_settings.analog_out ? true : false); audioSetupNotifier = new CAudioSetupNotifier; // trigger a change diff --git a/src/system/locals.h b/src/system/locals.h index 6aeb37c17..82721dccd 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -153,6 +153,7 @@ typedef enum LOCALE_AUDIO_SRS_NMGR, LOCALE_AUDIO_SRS_VOLUME, LOCALE_AUDIOMENU_PCMOFFSET, + LOCALE_AUDIOMENU_AC3, LOCALE_AUDIOMENU_ANALOG_MODE, LOCALE_AUDIOMENU_ANALOG_OUT, LOCALE_AUDIOMENU_AUTO_LANG, @@ -162,6 +163,7 @@ typedef enum LOCALE_AUDIOMENU_AVSYNC_AM, LOCALE_AUDIOMENU_CLOCKREC, LOCALE_AUDIOMENU_DOLBYDIGITAL, + LOCALE_AUDIOMENU_DTS, LOCALE_AUDIOMENU_HDMI_DD, LOCALE_AUDIOMENU_HDMI_DD_AUTO, LOCALE_AUDIOMENU_HDMI_DD_FORCE, @@ -1035,12 +1037,14 @@ typedef enum LOCALE_MENU_HINT_APLAY, LOCALE_MENU_HINT_APLAY_SETUP, LOCALE_MENU_HINT_AUDIO, + LOCALE_MENU_HINT_AUDIO_AC3, LOCALE_MENU_HINT_AUDIO_ADJUST_VOL_AC3, LOCALE_MENU_HINT_AUDIO_ADJUST_VOL_CLEAR, LOCALE_MENU_HINT_AUDIO_ADJUST_VOL_PCM, LOCALE_MENU_HINT_AUDIO_ANALOG_MODE, LOCALE_MENU_HINT_AUDIO_AVSYNC, LOCALE_MENU_HINT_AUDIO_DD, + LOCALE_MENU_HINT_AUDIO_DTS, LOCALE_MENU_HINT_AUDIO_HDMI_DD, LOCALE_MENU_HINT_AUDIO_SPDIF_DD, LOCALE_MENU_HINT_AUDIO_SRS, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index a410e2ec7..eaebad214 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -153,6 +153,7 @@ const char * locale_real_names[] = "audio.srs_nmgr", "audio.srs_volume", "audiomenu.PCMOffset", + "audiomenu.ac3", "audiomenu.analog_mode", "audiomenu.analog_out", "audiomenu.auto_lang", @@ -162,6 +163,7 @@ const char * locale_real_names[] = "audiomenu.avsync_am", "audiomenu.clockrec", "audiomenu.dolbydigital", + "audiomenu.dts", "audiomenu.hdmi_dd", "audiomenu.hdmi_dd_auto", "audiomenu.hdmi_dd_force", @@ -1035,12 +1037,14 @@ const char * locale_real_names[] = "menu.hint_aplay", "menu.hint_aplay_setup", "menu.hint_audio", + "menu.hint_audio_ac3", "menu.hint_audio_adjust_vol_ac3", "menu.hint_audio_adjust_vol_clear", "menu.hint_audio_adjust_vol_pcm", "menu.hint_audio_analog_mode", "menu.hint_audio_avsync", "menu.hint_audio_dd", + "menu.hint_audio_dts", "menu.hint_audio_hdmi_dd", "menu.hint_audio_spdif_dd", "menu.hint_audio_srs", diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp index 8c718b77c..e1061e3cb 100644 --- a/src/system/setting_helpers.cpp +++ b/src/system/setting_helpers.cpp @@ -310,10 +310,17 @@ bool CAudioSetupNotifier::changeNotify(const neutrino_locale_t OptionName, void 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); +#if HAVE_ARM_HARDWARE + } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_AC3)) { + audioDecoder->SetHdmiDD(g_settings.ac3_pass ? true : false); + } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_DTS)) { + audioDecoder->SetSpdifDD(g_settings.dts_pass ? true : false); +#else } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_HDMI_DD)) { audioDecoder->SetHdmiDD((HDMI_ENCODED_MODE) g_settings.hdmi_dd); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_SPDIF_DD)) { audioDecoder->SetSpdifDD(g_settings.spdif_dd ? true : false); +#endif } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_AUDIOMENU_AVSYNC)) { videoDecoder->SetSyncMode((AVSYNC_TYPE)g_settings.avsync); audioDecoder->SetSyncMode((AVSYNC_TYPE)g_settings.avsync); diff --git a/src/system/settings.h b/src/system/settings.h index 38b55cddd..785d800e9 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -245,8 +245,13 @@ struct SNeutrinoSettings int srs_algo; int srs_ref_volume; int srs_nmgr_enable; +#if HAVE_ARM_HARDWARE + int ac3_pass; + int dts_pass; +#else int hdmi_dd; int spdif_dd; +#endif // HAVE_ARM_HARDWARE int analog_out; int audio_volume_percent_ac3; int audio_volume_percent_pcm;