salva isso

This commit is contained in:
2026-01-08 16:18:11 -03:00
parent b16cece0a6
commit 7dc30a5e2d
4 changed files with 19 additions and 22 deletions

View File

@@ -66,7 +66,9 @@ NvResult nvhost_nvdec::Ioctl3(DeviceFD fd, Ioctl command, std::span<const u8> in
void nvhost_nvdec::OnOpen(NvCore::SessionId session_id, DeviceFD fd) {
LOG_INFO(Service_NVDRV, "NVDEC video stream started");
if (!system.GetNVDECActive()) {
system.SetNVDECActive(true);
}
sessions[fd] = session_id;
host1x.StartDevice(fd, Tegra::Host1x::ChannelType::NvDec, channel_syncpoint);
}

View File

@@ -217,6 +217,7 @@ public:
}
Result Write(size_t* out_size, std::span<const u8> data) override {
const size_t original_size = data.size();
const std::string_view data_view(reinterpret_cast<const char*>(data.data()), data.size());
// Log all POST requests for debugging
@@ -318,8 +319,10 @@ public:
}
}
const int ret =
SSL_write_ex(ssl, request_str.data(), request_str.size(), out_size);
const int ret = SSL_write_ex(ssl, request_str.data(), request_str.size(), out_size);
if (ret == 1) { // Success
*out_size = original_size;
}
return HandleReturn("SSL_write_ex", out_size, ret);
}
} else {
@@ -329,6 +332,7 @@ public:
LOG_WARNING(Service_SSL, "jdlo_auth.ini not found at {}",
Common::FS::PathToUTF8String(auth_file_path));
}
}
const int ret = SSL_write_ex(ssl, data.data(), data.size(), out_size);
return HandleReturn("SSL_write_ex", out_size, ret);

View File

@@ -588,7 +588,7 @@ void LegacyOnlineService::HttpServerLoop() {
std::string cmd1 = R"({"__class":"InputSetup_ConsoleCommandData","isEnabled":1,"inputSetup":{"isEnabled":1}})";
std::vector<uint8_t> f1; f1.push_back(0x81); f1.push_back(static_cast<uint8_t>(cmd1.size())); for(char c:cmd1) f1.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f1.data()), f1.size(), 0);
send(client_fd, reinterpret_cast<char*>(f1.data()), static_cast<int>(f1.size()), 0);
#else
send(client_fd, f1.data(), f1.size(), 0);
#endif
@@ -597,7 +597,7 @@ void LegacyOnlineService::HttpServerLoop() {
std::string cmd2 = R"({"__class":"JD_EnableAccelValuesSending_ConsoleCommandData","isEnabled":1})";
std::vector<uint8_t> f2; f2.push_back(0x81); f2.push_back(static_cast<uint8_t>(cmd2.size())); for(char c:cmd2) f2.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f2.data()), f2.size(), 0);
send(client_fd, reinterpret_cast<char*>(f2.data()), static_cast<int>(f2.size()), 0);
#else
send(client_fd, f2.data(), f2.size(), 0);
#endif
@@ -606,7 +606,7 @@ void LegacyOnlineService::HttpServerLoop() {
std::string cmd3 = R"({"__class":"JD_PhoneUiSetupData","isPopup":0,"inputSetup":{"isEnabled":1}})";
std::vector<uint8_t> f3; f3.push_back(0x81); f3.push_back(static_cast<uint8_t>(cmd3.size())); for(char c:cmd3) f3.push_back(static_cast<uint8_t>(c));
#ifdef _WIN32
send(client_fd, reinterpret_cast<char*>(f3.data()), f3.size(), 0);
send(client_fd, reinterpret_cast<char*>(f3.data()), static_cast<int>(f3.size()), 0);
#else
send(client_fd, f3.data(), f3.size(), 0);
#endif

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -212,16 +212,8 @@ bool HardwareContext::InitializeWithType(AVHWDeviceType type) {
DecoderContext::DecoderContext(const Decoder& decoder) : m_decoder{decoder} {
m_codec_context = avcodec_alloc_context3(m_decoder.GetCodec());
av_opt_set(m_codec_context->priv_data, "tune", "zerolatency", 0);
// Optimization: Use all available CPU cores for high bitrate decoding
m_codec_context->thread_count = std::thread::hardware_concurrency();
m_codec_context->thread_type = FF_THREAD_SLICE;
// EXTREME OPTIMIZATION: Aggressive fast decode for very high bitrates
// Trade-off: Small quality loss for significant speed gain (~40-50% faster)
m_codec_context->skip_loop_filter = AVDISCARD_ALL; // Skip deblock filter (20-30% faster)
m_codec_context->flags2 |= AV_CODEC_FLAG2_FAST; // Enable fast decoding mode (10-15% faster)
m_codec_context->flags |= AV_CODEC_FLAG_LOW_DELAY; // Minimize internal delays
m_codec_context->thread_count = 0;
m_codec_context->thread_type &= ~FF_THREAD_FRAME;
}
DecoderContext::~DecoderContext() {
@@ -271,19 +263,18 @@ std::shared_ptr<Frame> DecoderContext::ReceiveFrame() {
return {};
}
// Optimization: Only create final_frame and do GPU transfer when actually using GPU
if (m_codec_context->hw_device_ctx) {
m_final_frame = std::make_shared<Frame>();
if (m_codec_context->hw_device_ctx) {
m_final_frame->SetFormat(PreferredGpuFormat);
if (const int ret = av_hwframe_transfer_data(m_final_frame->GetFrame(), intermediate_frame->GetFrame(), 0); ret < 0) {
LOG_ERROR(HW_GPU, "av_hwframe_transfer_data error: {}", AVError(ret));
return {};
}
return m_final_frame;
} else {
m_final_frame = std::move(intermediate_frame);
}
// CPU decoding: just return the intermediate frame directly (no copy needed)
return intermediate_frame;
return std::move(m_final_frame);
}
void DecodeApi::Reset() {