Mesen-SX/Utilities/GifRecorder.cpp
2020-12-19 23:32:47 +03:00

55 lines
1.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;
}