Yell at the user if they change window size while dumping frames, and some other avi dumping stuff.

This commit is contained in:
Jordan Woyak
2013-02-26 20:47:48 -05:00
committed by Rachel Bryk
parent 46adbfa9ed
commit f1c990069c
7 changed files with 73 additions and 78 deletions

View File

@ -157,9 +157,21 @@ void AVIDump::Stop()
NOTICE_LOG(VIDEO, "Stop");
}
void AVIDump::AddFrame(char *data)
void AVIDump::AddFrame(const u8* data, int w, int h)
{
AVIStreamWrite(m_streamCompressed, ++m_frameCount, 1, (LPVOID) data, m_bitmap.biSizeImage, AVIIF_KEYFRAME, NULL, &m_byteBuffer);
static bool bShownError = false;
if ((w != m_bitmap.biWidth || h != m_bitmap.biHeight) && !bShownError)
{
PanicAlert("You have resized the window while dumping frames.\n"
"Nothing sane can be done to handle this.\n"
"Your video will likely be broken.");
bShownError=true;
m_bitmap.biWidth = w;
m_bitmap.biHeight = h;
}
AVIStreamWrite(m_streamCompressed, ++m_frameCount, 1, const_cast<u8*>(data), m_bitmap.biSizeImage, AVIIF_KEYFRAME, NULL, &m_byteBuffer);
m_totalBytes += m_byteBuffer;
// Close the recording if the file is more than 2gb
// VfW can't properly save files over 2gb in size, but can keep writing to them up to 4gb.
@ -298,7 +310,7 @@ bool AVIDump::CreateFile()
return true;
}
void AVIDump::AddFrame(uint8_t *data, int width, int height)
void AVIDump::AddFrame(const u8* data, int width, int height)
{
avpicture_fill((AVPicture *)s_BGRFrame, data, PIX_FMT_BGR24, width, height);

View File

@ -24,6 +24,8 @@
#include <stdint.h>
#endif
#include "CommonTypes.h"
class AVIDump
{
private:
@ -36,11 +38,11 @@ class AVIDump
public:
#ifdef _WIN32
static bool Start(HWND hWnd, int w, int h);
static void AddFrame(char *data);
#else
static bool Start(int w, int h);
static void AddFrame(uint8_t *data, int width, int height);
#endif
static void AddFrame(const u8* data, int width, int height);
static void Stop();
};

View File

@ -83,7 +83,9 @@ unsigned int Renderer::efb_scale_denominatorY = 1;
unsigned int Renderer::ssaa_multiplier = 1;
Renderer::Renderer() : frame_data(NULL), bLastFrameDumped(false)
Renderer::Renderer()
: frame_data()
, bLastFrameDumped(false)
{
UpdateActiveConfig();
TextureCache::OnConfigChanged(g_ActiveConfig);
@ -110,7 +112,6 @@ Renderer::~Renderer()
if (pFrameDump.IsOpen())
pFrameDump.Close();
#endif
delete[] frame_data;
}
void Renderer::RenderToXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma)

View File

@ -147,7 +147,7 @@ protected:
#else
File::IOFile pFrameDump;
#endif
char* frame_data;
std::vector<u8> frame_data;
bool bLastFrameDumped;
// The framebuffer size