Windows AVIDump: support "silent" frame dumping

When enabled, the silent option will avoid popping up dialog boxes for
overwrite confirmation or codec selection. The codec selection defaults to
uncompressed RGB.

This is required for FifoCI on Windows which needs to drive Dolphin from the
command line exclusively.
This commit is contained in:
Pierre Bourdon 2015-02-14 23:38:14 +01:00
parent 405444d4fe
commit 3500740dd4
3 changed files with 17 additions and 2 deletions

View File

@ -362,6 +362,7 @@ void SConfig::SaveMovieSettings(IniFile& ini)
movie->Set("PauseMovie", m_PauseMovie); movie->Set("PauseMovie", m_PauseMovie);
movie->Set("Author", m_strMovieAuthor); movie->Set("Author", m_strMovieAuthor);
movie->Set("DumpFrames", m_DumpFrames); movie->Set("DumpFrames", m_DumpFrames);
movie->Set("DumpFramesSilent", m_DumpFramesSilent);
movie->Set("ShowInputDisplay", m_ShowInputDisplay); movie->Set("ShowInputDisplay", m_ShowInputDisplay);
} }
@ -603,6 +604,7 @@ void SConfig::LoadMovieSettings(IniFile& ini)
movie->Get("PauseMovie", &m_PauseMovie, false); movie->Get("PauseMovie", &m_PauseMovie, false);
movie->Get("Author", &m_strMovieAuthor, ""); movie->Get("Author", &m_strMovieAuthor, "");
movie->Get("DumpFrames", &m_DumpFrames, false); movie->Get("DumpFrames", &m_DumpFrames, false);
movie->Get("DumpFramesSilent", &m_DumpFramesSilent, false);
movie->Get("ShowInputDisplay", &m_ShowInputDisplay, false); movie->Get("ShowInputDisplay", &m_ShowInputDisplay, false);
} }

View File

@ -100,6 +100,7 @@ struct SConfig : NonCopyable
std::string m_strMovieAuthor; std::string m_strMovieAuthor;
unsigned int m_FrameSkip; unsigned int m_FrameSkip;
bool m_DumpFrames; bool m_DumpFrames;
bool m_DumpFramesSilent;
bool m_ShowInputDisplay; bool m_ShowInputDisplay;
// DSP settings // DSP settings

View File

@ -88,9 +88,12 @@ bool AVIDump::CreateFile()
// Ask to delete file // Ask to delete file
if (File::Exists(movie_file_name)) if (File::Exists(movie_file_name))
{ {
if (AskYesNoT("Delete the existing file '%s'?", movie_file_name.c_str())) if (SConfig::GetInstance().m_DumpFramesSilent ||
AskYesNoT("Delete the existing file '%s'?", movie_file_name.c_str()))
{
File::Delete(movie_file_name); File::Delete(movie_file_name);
} }
}
AVIFileInit(); AVIFileInit();
NOTICE_LOG(VIDEO, "Opening AVI file (%s) for dumping", movie_file_name.c_str()); NOTICE_LOG(VIDEO, "Opening AVI file (%s) for dumping", movie_file_name.c_str());
@ -291,8 +294,17 @@ bool AVIDump::SetCompressionOptions()
memset(&s_options, 0, sizeof(s_options)); memset(&s_options, 0, sizeof(s_options));
s_array_options[0] = &s_options; s_array_options[0] = &s_options;
if (SConfig::GetInstance().m_DumpFramesSilent)
{
s_options.fccType = streamtypeVIDEO;
s_options.fccHandler = mmioFOURCC('D', 'I', 'B', ' '); // Uncompressed
return true;
}
else
{
return (AVISaveOptions(s_emu_wnd, 0, 1, &s_stream, s_array_options) != 0); return (AVISaveOptions(s_emu_wnd, 0, 1, &s_stream, s_array_options) != 0);
} }
}
bool AVIDump::SetVideoFormat() bool AVIDump::SetVideoFormat()
{ {