diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index a32c37874..a1d158285 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -1485,6 +1485,12 @@ bool CMoviePlayerGui::PlayFileStart(void) if (is_audio_playing) frameBuffer->showFrame("mp3.jpg"); + +#if HAVE_CST_HARDWARE + if ((g_settings.movieplayer_select_ac3_atype0 == true) && (currentac3 == AC3_ATYPE1)) + currentac3 = AC3_ATYPE0; +#endif + #if HAVE_ARM_HARDWARE bool res = playback->Start((char *) file_name.c_str(), vpid, vtype, currentapid, currentac3, duration,"",second_file_name); #else @@ -2543,12 +2549,17 @@ void CMoviePlayerGui::selectAudioPid() #if HAVE_CST_HARDWARE if (select == numpida) { currentac3 == 1 ? currentac3 = 0 : currentac3 = 1; + currentac3 == 1 ? g_settings.movieplayer_select_ac3_atype0 = false : g_settings.movieplayer_select_ac3_atype0 = true; 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]; + + if ((g_settings.movieplayer_select_ac3_atype0 == true) && (currentac3 == AC3_ATYPE1)) + currentac3 = AC3_ATYPE0; + playback->SetAPid(currentapid, currentac3); getCurrentAudioName(is_file_player, currentaudioname); printf("[movieplayer] apid changed to %d type %d\n", currentapid, currentac3); diff --git a/src/gui/movieplayer.h b/src/gui/movieplayer.h index 305bbef0a..9b019f189 100644 --- a/src/gui/movieplayer.h +++ b/src/gui/movieplayer.h @@ -62,6 +62,11 @@ extern "C" { #define MAX_PLAYBACK_PIDS 40 #endif +#if HAVE_CST_HARDWARE +#define AC3_ATYPE0 0 +#define AC3_ATYPE1 1 +#endif + class CFrameBuffer; class CMoviePlayerGui : public CMenuTarget { diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 6303630c2..1b7c2294a 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1185,7 +1185,10 @@ int CNeutrinoApp::loadSetup(const char *fname) // g_settings.movieplayer_bisection_jump = configfile.getInt32("movieplayer_bisection_jump", 5); g_settings.movieplayer_display_playtime = configfile.getInt32("movieplayer_display_playtime", g_info.hw_caps->display_type == HW_DISPLAY_LED_NUM); g_settings.movieplayer_repeat_on = configfile.getInt32("movieplayer_repeat_on", CMoviePlayerGui::REPEAT_OFF); -// g_settings.movieplayer_timeosd_while_searching = configfile.getInt32("movieplayer_timeosd_while_searching", 1); +#if HAVE_CST_HARDWARE + g_settings.movieplayer_select_ac3_atype0 = configfile.getBool("movieplayer_select_ac3_atype0", false); +#endif + g_settings.movieplayer_timeosd_while_searching = configfile.getInt32("movieplayer_timeosd_while_searching", 1); // filebrowser g_settings.filebrowser_denydirectoryleave = configfile.getBool("filebrowser_denydirectoryleave", false); @@ -2142,7 +2145,10 @@ void CNeutrinoApp::saveSetup(const char *fname) // configfile.setInt32("movieplayer_bisection_jump", g_settings.movieplayer_bisection_jump); configfile.setInt32("movieplayer_display_playtime", g_settings.movieplayer_display_playtime); configfile.setInt32("movieplayer_repeat_on", g_settings.movieplayer_repeat_on); -// configfile.setInt32("movieplayer_timeosd_while_searching", g_settings.movieplayer_timeosd_while_searching); +#if HAVE_CST_HARDWARE + configfile.setBool("movieplayer_select_ac3_atype0", g_settings.movieplayer_select_ac3_atype0); +#endif + configfile.setInt32("movieplayer_timeosd_while_searching", g_settings.movieplayer_timeosd_while_searching); // filebrowser configfile.setBool("filebrowser_denydirectoryleave", g_settings.filebrowser_denydirectoryleave); diff --git a/src/system/settings.h b/src/system/settings.h index bfa79008e..5a771b33c 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -971,6 +971,9 @@ struct SNeutrinoSettings int movieplayer_bisection_jump; int movieplayer_display_playtime; int movieplayer_repeat_on; +#if HAVE_CST_HARDWARE + bool movieplayer_select_ac3_atype0; +#endif int movieplayer_timeosd_while_searching; // filebrowser