Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop showing automatically found external subtitles by default #699

Closed
wants to merge 9 commits into from
2 changes: 0 additions & 2 deletions OMXPlayerSubtitles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -490,8 +490,6 @@ bool OMXPlayerSubtitles::AddPacket(OMXPacket *pkt, size_t stream_index) BOOST_NO

void OMXPlayerSubtitles::DisplayText(const std::string& text, int duration) BOOST_NOEXCEPT
{
assert(m_open);

vector<string> text_lines;
split(text_lines, text, is_any_of("\n"));
SendToRenderer(Message::DisplayText{std::move(text_lines), duration});
Expand Down
54 changes: 37 additions & 17 deletions omxplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,7 @@ int main(int argc, char *argv[])
case subtitles_opt:
m_external_subtitles_path = optarg;
m_has_external_subtitles = true;
m_subtitle_index = 0;
break;
case lines_opt:
m_subtitle_lines = std::max(atoi(optarg), 1);
Expand Down Expand Up @@ -967,7 +968,9 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}

if(!m_has_external_subtitles && !filename_is_URL)
DISPLAY_TEXT_LONG("Loading...");

if(m_osd && !m_has_external_subtitles && !filename_is_URL)
{
auto subtitles_path = m_filename.substr(0, m_filename.find_last_of(".")) +
".srt";
Expand Down Expand Up @@ -1033,6 +1036,32 @@ int main(int argc, char *argv[])
if (m_dump_format_exit)
goto do_exit;

// auto select an audio stream
// Avoid defaulting to narrative description
if(m_audio_index_use == 0)
{
int audiostreamcount = m_omx_reader.AudioStreamCount();

if(audiostreamcount > 1)
{
for(int i=0; i < audiostreamcount; i++)
{
std::string lang = m_omx_reader.GetStreamLanguage(OMXSTREAM_AUDIO, i);

if(lang == "NAR")
{
printf("Avoiding audio description stream: %d\n", i + 1);
}
else
{
printf("Selecting audio stream: %d\n", i + 1);
m_audio_index_use = i + 1; // variable expects natural numbers
break;
}
}
}
}

m_has_video = m_omx_reader.VideoStreamCount();
m_has_audio = m_audio_index_use < 0 ? false : m_omx_reader.AudioStreamCount();
m_has_subtitle = !is_model_pi4() && !is_fkms_active() &&
Expand Down Expand Up @@ -1139,7 +1168,7 @@ int main(int argc, char *argv[])
m_player_subtitles.SetUseExternalSubtitles(false);
}

if(m_subtitle_index == -1 && !m_has_external_subtitles)
if(m_subtitle_index == -1)
m_player_subtitles.SetVisible(false);
}

Expand Down Expand Up @@ -1450,20 +1479,14 @@ int main(int argc, char *argv[])
break;
case KeyConfig::ACTION_PLAY:
m_Pause=false;
if(m_has_subtitle)
{
m_player_subtitles.Resume();
}
break;
goto play_pause;
case KeyConfig::ACTION_PAUSE:
m_Pause=true;
if(m_has_subtitle)
{
m_player_subtitles.Pause();
}
break;
goto play_pause;
case KeyConfig::ACTION_PLAYPAUSE:
m_Pause = !m_Pause;

play_pause:
if (m_av_clock->OMXPlaySpeed() != DVD_PLAYSPEED_NORMAL && m_av_clock->OMXPlaySpeed() != DVD_PLAYSPEED_PAUSE)
{
printf("resume\n");
Expand Down Expand Up @@ -1832,11 +1855,8 @@ int main(int argc, char *argv[])
if (m_stats)
printf("\n");

if (m_stop)
{
unsigned t = (unsigned)(m_av_clock->OMXMediaTime()*1e-6);
printf("Stopped at: %02d:%02d:%02d\n", (t/3600), (t/60)%60, t%60);
}
unsigned t = (unsigned)(m_av_clock->OMXMediaTime()*1e-6);
printf("Stopped at: %02d:%02d:%02d\n", (t/3600), (t/60)%60, t%60);

if (m_NativeDeinterlace)
{
Expand Down