Mesen/Utilities/GifRecorder.cpp

52 lines
1 KiB
C++

#include "stdafx.h"
#include "GifRecorder.h"
#include "gif.h"
GifRecorder::GifRecorder()
{
_gif.reset(new GifWriter());
}
GifRecorder::~GifRecorder()
{
StopRecording();
}
bool GifRecorder::StartRecording(string filename, uint32_t width, uint32_t height, uint32_t bpp, uint32_t audioSampleRate, double fps)
{
_outputFile = filename;
_recording = GifBegin(_gif.get(), filename.c_str(), width, height, 2, 8, false);
_frameCounter = 0;
return _recording;
}
void GifRecorder::StopRecording()
{
if(_recording) {
GifEnd(_gif.get());
}
}
void GifRecorder::AddFrame(void* frameBuffer, uint32_t width, uint32_t height, double fps)
{
_frameCounter++;
if(fps < 55 || (_frameCounter % 6) != 0) {
//At 60 FPS, skip 1 of every 6 frames (max FPS for GIFs is 50fps)
GifWriteFrame(_gif.get(), (uint8_t*)frameBuffer, width, height, 2, 8, false);
}
}
void GifRecorder::AddSound(int16_t* soundBuffer, uint32_t sampleCount, uint32_t sampleRate)
{
}
bool GifRecorder::IsRecording()
{
return _recording;
}
string GifRecorder::GetOutputFile()
{
return _outputFile;
}