Changed Qt GUI AVI recording video pickoff point so that HUD/messages can be optional in the recorded image.
This commit is contained in:
parent
88da722533
commit
a571677cdb
|
@ -588,7 +588,7 @@ int aviRecordAddFrame( void )
|
|||
|
||||
while ( i < numPixels )
|
||||
{
|
||||
rawVideoBuf[ head ] = nes_shm->pixbuf[i]; i++;
|
||||
rawVideoBuf[ head ] = nes_shm->avibuf[i]; i++;
|
||||
|
||||
head = (head + 1) % vbufSize;
|
||||
}
|
||||
|
@ -677,12 +677,11 @@ void FCEUD_AviStop(void)
|
|||
return;
|
||||
}
|
||||
//**************************************************************************************
|
||||
void FCEUI_AviVideoUpdate(const unsigned char* buffer)
|
||||
{ // This is not used by Qt Emulator, avi recording pulls from the post processed video buffer
|
||||
// instead of emulation core video buffer. This allows for the video scaler effects
|
||||
// and higher resolution to be seen in recording.
|
||||
return;
|
||||
}
|
||||
// // This function is implemented in sdl-video.cpp
|
||||
//void FCEUI_AviVideoUpdate(const unsigned char* buffer)
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//**************************************************************************************
|
||||
int aviGetSelVideoFormat(void)
|
||||
{
|
||||
|
|
|
@ -1799,6 +1799,26 @@ void consoleWin_t::createMainMenu(void)
|
|||
connect(act, SIGNAL(triggered(bool)), this, SLOT(aviAudioEnableChange(bool)) );
|
||||
aviMenu->addAction(act);
|
||||
|
||||
aviMenu->addSeparator();
|
||||
|
||||
// Movie -> Avi Recording -> Enable HUD Recording
|
||||
aviHudAct = new QAction(tr("Enable &HUD Recording"), this);
|
||||
aviHudAct->setCheckable(true);
|
||||
aviHudAct->setChecked( FCEUI_AviEnableHUDrecording() );
|
||||
aviHudAct->setStatusTip(tr("Enable HUD Recording"));
|
||||
connect(aviHudAct, SIGNAL(triggered(bool)), this, SLOT(setAviHudEnable(bool)) );
|
||||
|
||||
aviMenu->addAction(aviHudAct);
|
||||
|
||||
// Movie -> Avi Recording -> Enable Message Recording
|
||||
aviMsgAct = new QAction(tr("Enable &Msg Recording"), this);
|
||||
aviMsgAct->setCheckable(true);
|
||||
aviMsgAct->setChecked( !FCEUI_AviDisableMovieMessages() );
|
||||
aviMsgAct->setStatusTip(tr("Enable Msg Recording"));
|
||||
connect(aviMsgAct, SIGNAL(triggered(bool)), this, SLOT(setAviMsgEnable(bool)) );
|
||||
|
||||
aviMenu->addAction(aviMsgAct);
|
||||
|
||||
// Movie -> WAV Recording
|
||||
subMenu = movieMenu->addMenu( tr("&WAV Recording") );
|
||||
|
||||
|
@ -3701,6 +3721,20 @@ void consoleWin_t::aviAudioEnableChange(bool checked)
|
|||
return;
|
||||
}
|
||||
|
||||
void consoleWin_t::setAviHudEnable(bool checked)
|
||||
{
|
||||
FCEUI_SetAviEnableHUDrecording( checked );
|
||||
|
||||
g_config->setOption("SDL.RecordHUD", checked );
|
||||
}
|
||||
|
||||
void consoleWin_t::setAviMsgEnable(bool checked)
|
||||
{
|
||||
FCEUI_SetAviDisableMovieMessages( !checked );
|
||||
|
||||
g_config->setOption("SDL.MovieMsg", checked );
|
||||
}
|
||||
|
||||
void consoleWin_t::aviVideoFormatChanged(int idx)
|
||||
{
|
||||
aviSetSelVideoFormat(idx);
|
||||
|
|
|
@ -243,6 +243,8 @@ class consoleWin_t : public QMainWindow
|
|||
QAction *recWavAct;
|
||||
QAction *recAsWavAct;
|
||||
QAction *stopWavAct;
|
||||
QAction *aviHudAct;
|
||||
QAction *aviMsgAct;
|
||||
|
||||
QTimer *gameTimer;
|
||||
|
||||
|
@ -417,6 +419,8 @@ class consoleWin_t : public QMainWindow
|
|||
void aviRecordStop(void);
|
||||
void aviAudioEnableChange(bool);
|
||||
void aviVideoFormatChanged(int idx);
|
||||
void setAviHudEnable(bool);
|
||||
void setAviMsgEnable(bool);
|
||||
void wavRecordStart(void);
|
||||
void wavRecordAsStart(void);
|
||||
void wavRecordStop(void);
|
||||
|
|
|
@ -587,8 +587,8 @@ InitConfig()
|
|||
|
||||
// pause movie playback at frame x
|
||||
config->addOption("pauseframe", "SDL.PauseFrame", 0);
|
||||
config->addOption("recordhud", "SDL.RecordHUD", 1);
|
||||
config->addOption("moviemsg", "SDL.MovieMsg", 1);
|
||||
config->addOption("recordhud", "SDL.RecordHUD", 0);
|
||||
config->addOption("moviemsg", "SDL.MovieMsg", 0);
|
||||
|
||||
#ifdef _USE_X264
|
||||
config->addOption("SDL.AviVideoFormat", AVI_X264);
|
||||
|
|
|
@ -756,7 +756,7 @@ int fceuWrapperInit( int argc, char *argv[] )
|
|||
// check to see if recording HUD to AVI is enabled
|
||||
int rh;
|
||||
g_config->getOption("SDL.RecordHUD", &rh);
|
||||
if( rh == 0)
|
||||
if( rh )
|
||||
FCEUI_SetAviEnableHUDrecording(true);
|
||||
else
|
||||
FCEUI_SetAviEnableHUDrecording(false);
|
||||
|
|
|
@ -35,10 +35,12 @@ struct nes_shm_t
|
|||
char blitUpdated;
|
||||
|
||||
uint32_t pixbuf[1048576]; // 1024 x 1024
|
||||
uint32_t avibuf[1048576]; // 1024 x 1024
|
||||
|
||||
void clear_pixbuf(void)
|
||||
{
|
||||
memset( pixbuf, 0, sizeof(pixbuf) );
|
||||
memset( avibuf, 0, sizeof(avibuf) );
|
||||
}
|
||||
|
||||
struct sndBuf_t
|
||||
|
|
|
@ -428,13 +428,10 @@ static void WriteTestPattern(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Pushes the given buffer of bits to the screen.
|
||||
*/
|
||||
void
|
||||
BlitScreen(uint8 *XBuf)
|
||||
|
||||
static void
|
||||
doBlitScreen(uint8_t *XBuf, uint8_t *dest)
|
||||
{
|
||||
uint8 *dest;
|
||||
int w, h, pitch, bw, ixScale, iyScale;
|
||||
|
||||
// refresh the palette if required
|
||||
|
@ -447,7 +444,7 @@ BlitScreen(uint8 *XBuf)
|
|||
// XXX soules - not entirely sure why this is being done yet
|
||||
XBuf += s_srendline * 256;
|
||||
|
||||
dest = (uint8*)nes_shm->pixbuf;
|
||||
//dest = (uint8*)nes_shm->pixbuf;
|
||||
ixScale = nes_shm->video.xscale;
|
||||
iyScale = nes_shm->video.yscale;
|
||||
|
||||
|
@ -486,11 +483,28 @@ BlitScreen(uint8 *XBuf)
|
|||
{
|
||||
Blit8ToHigh(XBuf + NOFFSET, dest, bw, s_tlines, pitch, ixScale, iyScale);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Pushes the given buffer of bits to the screen.
|
||||
*/
|
||||
void
|
||||
BlitScreen(uint8 *XBuf)
|
||||
{
|
||||
doBlitScreen(XBuf, (uint8_t*)nes_shm->pixbuf);
|
||||
|
||||
nes_shm->blit_count++;
|
||||
nes_shm->blitUpdated = 1;
|
||||
}
|
||||
|
||||
void FCEUI_AviVideoUpdate(const unsigned char* buffer)
|
||||
{ // This is not used by Qt Emulator, avi recording pulls from the post processed video buffer
|
||||
// instead of emulation core video buffer. This allows for the video scaler effects
|
||||
// and higher resolution to be seen in recording.
|
||||
doBlitScreen( (uint8_t*)buffer, (uint8_t*)nes_shm->avibuf);
|
||||
|
||||
aviRecordAddFrame();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue