diff --git a/Source/Core/VideoCommon/AVIDump.cpp b/Source/Core/VideoCommon/AVIDump.cpp index ef9ccaeed4..ccf355c712 100644 --- a/Source/Core/VideoCommon/AVIDump.cpp +++ b/Source/Core/VideoCommon/AVIDump.cpp @@ -96,8 +96,6 @@ bool AVIDump::Start(int w, int h) bool AVIDump::CreateVideoFile() { - AVCodec* codec = nullptr; - const std::string& s_format = g_Config.sDumpFormat; std::stringstream file_ss; @@ -130,8 +128,10 @@ bool AVIDump::CreateVideoFile() } avformat_alloc_output_context2(&s_format_context, output_format, nullptr, filename.c_str()); - AVCodecID codec_id = - g_Config.bUseFFV1 ? AV_CODEC_ID_FFV1 : output_format->video_codec; + const AVCodecDescriptor* codec_desc = avcodec_descriptor_get_by_name(g_Config.sDumpCodec.c_str()); + AVCodecID codec_id = codec_desc ? codec_desc->id : output_format->video_codec; + + const AVCodec* codec = nullptr; if (!(codec = avcodec_find_encoder(codec_id)) || !(s_codec_context = avcodec_alloc_context3(codec))) diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index 359c2f64f0..fd8c6ea939 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -76,6 +76,7 @@ void VideoConfig::Load(const std::string& ini_file) settings->Get("FreeLook", &bFreeLook, false); settings->Get("UseFFV1", &bUseFFV1, false); settings->Get("DumpFormat", &sDumpFormat, "avi"); + settings->Get("DumpCodec", &sDumpCodec, ""); settings->Get("BitrateKbps", &iBitrateKbps, 2500); settings->Get("InternalResolutionFrameDumps", &bInternalResolutionFrameDumps, false); settings->Get("EnablePixelLighting", &bEnablePixelLighting, false); diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h index 6ee5cd9e2e..ed8b7827cc 100644 --- a/Source/Core/VideoCommon/VideoConfig.h +++ b/Source/Core/VideoCommon/VideoConfig.h @@ -102,6 +102,7 @@ struct VideoConfig final bool bDumpEFBTarget; bool bDumpFramesAsImages; bool bUseFFV1; + std::string sDumpCodec; std::string sDumpFormat; bool bInternalResolutionFrameDumps; bool bFreeLook;