mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-08-31 14:45:14 +00:00
[Option][GUI/JSON] Multithreaded video decoding
This commit is contained in:
committed by
Eric Kotato
parent
fe981f694e
commit
cee7e3f149
@@ -61,6 +61,8 @@
|
||||
"ktg_profile_group_id": "Group ID",
|
||||
"ktg_profile_supergroup_id": "Supergroup ID",
|
||||
"ktg_profile_channel_id": "Channel ID",
|
||||
"ktg_settings_ffmpeg_multithread": "Multithread video decoding",
|
||||
"ktg_settings_ffmpeg_multithread_about": "When enabled, CPU and RAM consumption is higher, video decodes faster. When disabled, CPU and RAM consumption is lower, video decodes slower. The more CPU cores you have, the more RAM consumption you have when this option is enabled. You can set exact number of threads in the JSON configuration file.",
|
||||
"ktg_settings_adaptive_bubbles": "Adaptive bubbles",
|
||||
"ktg_settings_filters": "Folders",
|
||||
"ktg_settings_messages": "Messages",
|
||||
|
@@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
*/
|
||||
#include "ffmpeg/ffmpeg_utility.h"
|
||||
|
||||
#include "kotato/kotato_settings.h"
|
||||
#include "base/algorithm.h"
|
||||
#include "logs.h"
|
||||
|
||||
@@ -328,7 +329,13 @@ CodecPointer MakeCodecPointer(CodecDescriptor descriptor) {
|
||||
return {};
|
||||
}
|
||||
context->pkt_timebase = stream->time_base;
|
||||
av_opt_set(context, "threads", "auto", 0);
|
||||
if(::Kotato::JsonSettings::GetBool("ffmpeg_multithread")) {
|
||||
if (::Kotato::JsonSettings::GetInt("ffmpeg_thread_count") > 0) {
|
||||
av_opt_set(context, "threads", std::to_string(::Kotato::JsonSettings::GetInt("ffmpeg_thread_count")).c_str(), 0);
|
||||
} else {
|
||||
av_opt_set(context, "threads", "auto", 0);
|
||||
}
|
||||
}
|
||||
av_opt_set_int(context, "refcounted_frames", 1, 0);
|
||||
|
||||
const auto codec = FindDecoder(context);
|
||||
|
@@ -322,6 +322,13 @@ const std::map<QString, Definition, std::greater<QString>> DefinitionMap {
|
||||
{ "replaces", {
|
||||
.type = SettingType::QJsonArraySetting,
|
||||
.limitHandler = ReplacesLimit(), }},
|
||||
{ "ffmpeg_multithread", {
|
||||
.type = SettingType::BoolSetting,
|
||||
.defaultValue = true, }},
|
||||
{ "ffmpeg_thread_count", {
|
||||
.type = SettingType::IntSetting,
|
||||
.defaultValue = 0,
|
||||
.limitHandler = IntLimitMin(0) }},
|
||||
};
|
||||
|
||||
using OldOptionKey = QString;
|
||||
|
@@ -330,6 +330,10 @@ void SetupKotatoOther(
|
||||
}));
|
||||
});
|
||||
|
||||
SettingsMenuJsonSwitch(ktg_settings_ffmpeg_multithread, ffmpeg_multithread);
|
||||
|
||||
Ui::AddSkip(container);
|
||||
Ui::AddDividerText(container, rktr("ktg_settings_ffmpeg_multithread_about"));
|
||||
Ui::AddSkip(container);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user