[Option][GUI/JSON] Multithreaded video decoding
This commit is contained in:
parent
d61260a2d1
commit
8ed187f8e3
4 changed files with 22 additions and 1 deletions
|
|
@ -66,6 +66,8 @@
|
|||
"ktg_settings_call_confirm": "Confirm before calling",
|
||||
"ktg_call_sure": "Are you sure you want to call this user?",
|
||||
"ktg_call_button": "Call",
|
||||
"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"
|
||||
|
||||
|
|
@ -176,7 +177,13 @@ CodecPointer MakeCodecPointer(not_null<AVStream*> stream) {
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -352,6 +352,13 @@ const std::map<QString, Definition, std::greater<QString>> DefinitionMap {
|
|||
{ "confirm_before_calls", {
|
||||
.type = SettingType::BoolSetting,
|
||||
.defaultValue = true, }},
|
||||
{ "ffmpeg_multithread", {
|
||||
.type = SettingType::BoolSetting,
|
||||
.defaultValue = true, }},
|
||||
{ "ffmpeg_thread_count", {
|
||||
.type = SettingType::IntSetting,
|
||||
.defaultValue = 0,
|
||||
.limitHandler = IntLimitMin(0) }},
|
||||
};
|
||||
|
||||
using OldOptionKey = QString;
|
||||
|
|
|
|||
|
|
@ -357,6 +357,11 @@ void SetupKotatoOther(
|
|||
});
|
||||
|
||||
SettingsMenuJsonSwitch(ktg_settings_call_confirm, confirm_before_calls);
|
||||
SettingsMenuJsonSwitch(ktg_settings_ffmpeg_multithread, ffmpeg_multithread);
|
||||
|
||||
AddSkip(container);
|
||||
AddDividerText(container, rktr("ktg_settings_ffmpeg_multithread_about"));
|
||||
AddSkip(container);
|
||||
}
|
||||
|
||||
Kotato::Kotato(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue