Successful test of fully integrated avi recording in Qt GUI.

This commit is contained in:
mjbudd77 2021-05-02 18:36:34 -04:00
parent 4a498d20af
commit 6283dc4687
6 changed files with 46 additions and 3 deletions

View File

@ -24,6 +24,7 @@
static gwavi_t *gwavi = NULL; static gwavi_t *gwavi = NULL;
static bool recordEnable = false; static bool recordEnable = false;
static bool recordAudio = true;
static int vbufHead = 0; static int vbufHead = 0;
static int vbufTail = 0; static int vbufTail = 0;
static int vbufSize = 0; static int vbufSize = 0;
@ -585,6 +586,10 @@ int aviRecordAddAudioFrame( int32_t *buf, int numSamples )
{ {
return -1; return -1;
} }
if ( !recordAudio )
{
return -1;
}
for (int i=0; i<numSamples; i++) for (int i=0; i<numSamples; i++)
{ {
@ -621,6 +626,16 @@ int aviRecordClose(void)
return 0; return 0;
} }
//************************************************************************************** //**************************************************************************************
bool aviGetAudioEnable(void)
{
return recordAudio;
}
//**************************************************************************************
void aviSetAudioEnable(bool val)
{
recordAudio = val;
}
//**************************************************************************************
bool aviRecordRunning(void) bool aviRecordRunning(void)
{ {
return recordEnable; return recordEnable;
@ -655,7 +670,9 @@ int aviGetSelVideoFormat(void)
void aviSetSelVideoFormat(int idx) void aviSetSelVideoFormat(int idx)
{ {
videoFormat = idx; videoFormat = idx;
printf("AVI Video Format Changed:%i\n", videoFormat ); //printf("AVI Video Format Changed:%i\n", videoFormat );
g_config->setOption("SDL.AviVideoFormat", videoFormat);
} }
//************************************************************************************** //**************************************************************************************
int FCEUD_AviGetFormatOpts( std::vector <std::string> &formatList ) int FCEUD_AviGetFormatOpts( std::vector <std::string> &formatList )
@ -802,7 +819,7 @@ void AviRecordDiskThread_t::run(void)
numPixelsReady = 0; numPixelsReady = 0;
if ( writeAudio ) if ( writeAudio && recordAudio )
{ {
numSamples = 0; numSamples = 0;

View File

@ -34,6 +34,10 @@ int aviRecordClose(void);
bool aviRecordRunning(void); bool aviRecordRunning(void);
bool aviGetAudioEnable(void);
void aviSetAudioEnable(bool val);
int aviGetSelVideoFormat(void); int aviGetSelVideoFormat(void);
void aviSetSelVideoFormat(int idx); void aviSetSelVideoFormat(int idx);

View File

@ -1487,6 +1487,7 @@ void consoleWin_t::createMainMenu(void)
aviMenu->addAction(stopAviAct); aviMenu->addAction(stopAviAct);
// Movie -> Avi Recording -> Video Format
subMenu = aviMenu->addMenu( tr("Video Format") ); subMenu = aviMenu->addMenu( tr("Video Format") );
{ {
@ -1512,8 +1513,16 @@ void consoleWin_t::createMainMenu(void)
// Use Lambda Function to set callback // Use Lambda Function to set callback
connect( act, &QAction::triggered, [ this, i ] { aviVideoFormatChanged( i ); } ); connect( act, &QAction::triggered, [ this, i ] { aviVideoFormatChanged( i ); } );
} }
} }
// Movie -> Avi Recording -> Include Audio
act = new QAction(tr("Include Audio"), this);
act->setCheckable(true);
act->setChecked( aviGetAudioEnable() );
connect(act, SIGNAL(triggered(bool)), this, SLOT(aviAudioEnableChange(bool)) );
aviMenu->addAction(act);
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// Help // Help
helpMenu = menubar->addMenu(tr("&Help")); helpMenu = menubar->addMenu(tr("&Help"));
@ -3252,6 +3261,13 @@ void consoleWin_t::aviRecordStop(void)
} }
} }
void consoleWin_t::aviAudioEnableChange(bool checked)
{
aviSetAudioEnable( checked );
return;
}
void consoleWin_t::aviVideoFormatChanged(int idx) void consoleWin_t::aviVideoFormatChanged(int idx)
{ {
aviSetSelVideoFormat(idx); aviSetSelVideoFormat(idx);
@ -3516,6 +3532,7 @@ void consoleWin_t::updatePeriodic(void)
quickSaveAct->setEnabled( FCEU_IsValidUI( FCEUI_QUICKSAVE ) ); quickSaveAct->setEnabled( FCEU_IsValidUI( FCEUI_QUICKSAVE ) );
loadStateAct->setEnabled( FCEU_IsValidUI( FCEUI_LOADSTATE ) ); loadStateAct->setEnabled( FCEU_IsValidUI( FCEUI_LOADSTATE ) );
saveStateAct->setEnabled( FCEU_IsValidUI( FCEUI_SAVESTATE ) ); saveStateAct->setEnabled( FCEU_IsValidUI( FCEUI_SAVESTATE ) );
openMovAct->setEnabled( FCEU_IsValidUI( FCEUI_PLAYMOVIE ) );
recMovAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) ); recMovAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) );
recAsMovAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) ); recAsMovAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) );
recAviAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) ); recAviAct->setEnabled( FCEU_IsValidUI( FCEUI_RECORDMOVIE ) );

View File

@ -365,6 +365,7 @@ class consoleWin_t : public QMainWindow
void aviRecordStart(void); void aviRecordStart(void);
void aviRecordAsStart(void); void aviRecordAsStart(void);
void aviRecordStop(void); void aviRecordStop(void);
void aviAudioEnableChange(bool);
void aviVideoFormatChanged(int idx); void aviVideoFormatChanged(int idx);
}; };

View File

@ -521,6 +521,7 @@ InitConfig()
config->addOption("pauseframe", "SDL.PauseFrame", 0); config->addOption("pauseframe", "SDL.PauseFrame", 0);
config->addOption("recordhud", "SDL.RecordHUD", 1); config->addOption("recordhud", "SDL.RecordHUD", 1);
config->addOption("moviemsg", "SDL.MovieMsg", 1); config->addOption("moviemsg", "SDL.MovieMsg", 1);
config->addOption("SDL.AviVideoFormat", 0);
// Hex Editor Options // Hex Editor Options
config->addOption("hexEditBgColor", "SDL.HexEditBgColor", "#000000"); config->addOption("hexEditBgColor", "SDL.HexEditBgColor", "#000000");

View File

@ -581,7 +581,7 @@ static void ShowUsage(const char *prog)
int fceuWrapperInit( int argc, char *argv[] ) int fceuWrapperInit( int argc, char *argv[] )
{ {
int error; int opt, error;
std::string s; std::string s;
for (int i=0; i<argc; i++) for (int i=0; i<argc; i++)
@ -710,6 +710,9 @@ int fceuWrapperInit( int argc, char *argv[] )
else else
FCEUI_SetAviDisableMovieMessages(false); FCEUI_SetAviDisableMovieMessages(false);
g_config->getOption("SDL.AviVideoFormat", &opt);
aviSetSelVideoFormat(opt);
// check for a .fm2 file to rip the subtitles // check for a .fm2 file to rip the subtitles
g_config->getOption("SDL.RipSubs", &s); g_config->getOption("SDL.RipSubs", &s);
g_config->setOption("SDL.RipSubs", ""); g_config->setOption("SDL.RipSubs", "");