diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 6b405d02b..4bcf33236 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -131,6 +131,8 @@ audio.srs_nmgr Noise-Manager audio.srs_volume Referenzlautstärke audiomenu.PCMOffset Lautstärkeabsenkung PCM audiomenu.ac3 AC3 durchleiten +audiomenu.ac3_atype0 AC3 Ton auf älteren Typ ändern +audiomenu.ac3_atype1 AC3 Ton auf default Type ändern audiomenu.analog_mode Analog Modus audiomenu.analog_out Analog-Ausgang audiomenu.auto_lang Tonwahl automatisch diff --git a/data/locale/english.locale b/data/locale/english.locale index 91ec70994..9fb898784 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -131,6 +131,8 @@ audio.srs_nmgr Noise manager audio.srs_volume Reference volume audiomenu.PCMOffset Volume Decrease PCM audiomenu.ac3 AC3 passthrough +audiomenu.ac3_atype0 switch AC3 Sound to older Audio Type +audiomenu.ac3_atype1 switch AC3 Sound to default Audio Type audiomenu.analog_mode Analog mode audiomenu.analog_out Analog output audiomenu.auto_lang Auto select audio diff --git a/lib/hardware/coolstream/hd1/libcoolstream/audio_cs.h b/lib/hardware/coolstream/hd1/libcoolstream/audio_cs.h index b79689eab..618f9576c 100644 --- a/lib/hardware/coolstream/hd1/libcoolstream/audio_cs.h +++ b/lib/hardware/coolstream/hd1/libcoolstream/audio_cs.h @@ -23,15 +23,15 @@ typedef enum { } AUDIO_SYNC_MODE; typedef enum { - AUDIO_FMT_AUTO = 0, - AUDIO_FMT_MPEG, - AUDIO_FMT_MP3, - AUDIO_FMT_DOLBY_DIGITAL, + AUDIO_FMT_DOLBY_DIGITAL = 0, AUDIO_FMT_BASIC = AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_AAC, - AUDIO_FMT_AAC_PLUS, - AUDIO_FMT_DD_PLUS, - AUDIO_FMT_DTS, + AUDIO_FMT_MPEG = 1, + AUDIO_FMT_DTS = 2, + AUDIO_FMT_AAC = 8, + AUDIO_FMT_AAC_PLUS = 9, + AUDIO_FMT_DD_PLUS = 0x22, //EAC3 + AUDIO_FMT_AUTO, + AUDIO_FMT_MP3, AUDIO_FMT_AVS, AUDIO_FMT_MLP, AUDIO_FMT_WMA, diff --git a/lib/hardware/coolstream/hd2/libcoolstream/audio_cs.h b/lib/hardware/coolstream/hd2/libcoolstream/audio_cs.h index 77ff55715..d77b021eb 100644 --- a/lib/hardware/coolstream/hd2/libcoolstream/audio_cs.h +++ b/lib/hardware/coolstream/hd2/libcoolstream/audio_cs.h @@ -23,15 +23,15 @@ typedef enum { } AUDIO_SYNC_MODE; typedef enum { - AUDIO_FMT_AUTO = 0, - AUDIO_FMT_MPEG, - AUDIO_FMT_MP3, - AUDIO_FMT_DOLBY_DIGITAL, + AUDIO_FMT_DOLBY_DIGITAL = 0, AUDIO_FMT_BASIC = AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_AAC, - AUDIO_FMT_AAC_PLUS, - AUDIO_FMT_DD_PLUS, - AUDIO_FMT_DTS, + AUDIO_FMT_MPEG = 1, + AUDIO_FMT_DTS = 2, + AUDIO_FMT_AAC = 8, + AUDIO_FMT_AAC_PLUS = 9, + AUDIO_FMT_DD_PLUS = 0x22, //EAC3 + AUDIO_FMT_AUTO, + AUDIO_FMT_MP3, AUDIO_FMT_AVS, AUDIO_FMT_MLP, AUDIO_FMT_WMA, diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index c24754dbe..a73a69bb8 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -1473,7 +1473,7 @@ bool CMoviePlayerGui::PlayFileStart(void) } duration = p_movie_info->length * 60 * 1000; - int percent = CZapit::getInstance()->GetPidVolume(p_movie_info->channelId, currentapid, currentac3 == 1); + int percent = CZapit::getInstance()->GetPidVolume(p_movie_info->channelId, currentapid, currentac3 == CZapitAudioChannel::AC3); CZapit::getInstance()->SetVolumePercent(percent); } @@ -2484,7 +2484,9 @@ void CMoviePlayerGui::selectAudioPid() if (numpida) currentapid = apids[0]; } - for (unsigned int count = 0; count < numpida; count++) { + + unsigned int count = 0; + for (count = 0; count < numpida; count++) { bool name_ok = false; bool enabled = true; bool defpid = currentapid ? (currentapid == apids[count]) : (count == 0); @@ -2513,7 +2515,13 @@ void CMoviePlayerGui::selectAudioPid() CMenuForwarder * item = new CMenuForwarder(apidtitle.c_str(), enabled, NULL, selector, cnt, CRCInput::convertDigitToKey(count + 1)); APIDSelector.addItem(item, defpid); } - +#if HAVE_CST_HARDWARE + char cnt[5]; + sprintf(cnt, "%d", count); + std::string apidtitle = (currentac3 == 0) ? g_Locale->getText(LOCALE_AUDIOMENU_AC3_ATYPE1) : g_Locale->getText(LOCALE_AUDIOMENU_AC3_ATYPE0); + CMenuForwarder * item = new CMenuForwarder(apidtitle.c_str(), true, NULL, selector, cnt, CRCInput::convertDigitToKey(count + 1)); + APIDSelector.addItem(item, false); +#endif int percent[numpida+1]; if (p_movie_info && numpida <= p_movie_info->audioPids.size()) { APIDSelector.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_AUDIOMENU_VOLUME_ADJUST)); @@ -2537,6 +2545,20 @@ void CMoviePlayerGui::selectAudioPid() APIDSelector.exec(NULL, ""); delete selector; printf("CMoviePlayerGui::selectAudioPid: selected %d (%x) current %x\n", select, (select >= 0) ? apids[select] : -1, currentapid); +#if HAVE_CST_HARDWARE + if (select == numpida) { + currentac3 == 1 ? currentac3 = 0 : currentac3 = 1; + playback->SetAPid(currentapid, currentac3); + printf("[movieplayer] currentac3 changed to %d\n", currentac3); + } + else if ((select >= 0) && (currentapid != apids[select])) { + currentapid = apids[select]; + currentac3 = ac3flags[select]; + playback->SetAPid(currentapid, currentac3); + getCurrentAudioName(is_file_player, currentaudioname); + printf("[movieplayer] apid changed to %d type %d\n", currentapid, currentac3); + } +#else if ((select >= 0) && (currentapid != apids[select])) { currentapid = apids[select]; currentac3 = ac3flags[select]; @@ -2544,6 +2566,7 @@ void CMoviePlayerGui::selectAudioPid() getCurrentAudioName(is_file_player, currentaudioname); printf("[movieplayer] apid changed to %d type %d\n", currentapid, currentac3); } +#endif } void CMoviePlayerGui::handleMovieBrowser(neutrino_msg_t msg, int /*position*/) diff --git a/src/system/locals.h b/src/system/locals.h index 1f290f07b..a2adddc88 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -158,6 +158,8 @@ typedef enum LOCALE_AUDIO_SRS_VOLUME, LOCALE_AUDIOMENU_PCMOFFSET, LOCALE_AUDIOMENU_AC3, + LOCALE_AUDIOMENU_AC3_ATYPE0, + LOCALE_AUDIOMENU_AC3_ATYPE1, LOCALE_AUDIOMENU_ANALOG_MODE, LOCALE_AUDIOMENU_ANALOG_OUT, LOCALE_AUDIOMENU_AUTO_LANG, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index cebfa957d..4dcdf1f20 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -158,6 +158,8 @@ const char * locale_real_names[] = "audio.srs_volume", "audiomenu.PCMOffset", "audiomenu.ac3", + "audiomenu.ac3_atype0", + "audiomenu.ac3_atype1", "audiomenu.analog_mode", "audiomenu.analog_out", "audiomenu.auto_lang", diff --git a/src/zapit/include/zapit/channel.h b/src/zapit/include/zapit/channel.h index 3732ff884..02ca79cc3 100644 --- a/src/zapit/include/zapit/channel.h +++ b/src/zapit/include/zapit/channel.h @@ -99,19 +99,6 @@ class CZapitAudioChannel std::string description; unsigned char componentTag; -#if HAVE_CST_HARDWARE - enum ZapitAudioChannelType { - MPEG = 0, - AC3 = 1, - AAC = 2, - AACPLUS = 3, - DTS = 4, - LPCM = 6, - DTSHD = 0x10, - EAC3 = 0x22, - UNKNOWN - }; -#else enum ZapitAudioChannelType { MPEG = 1, AC3 = 0, @@ -123,7 +110,6 @@ class CZapitAudioChannel EAC3 = 0x22, UNKNOWN }; -#endif ZapitAudioChannelType audioChannelType; };