Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/backends/mpv/mpv_proxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,11 +209,13 @@ void MpvProxy::initGpuInfoFuns()
if(!SysUtils::libExist("libgpuinfo.so")) {
qWarning() << "libgpuinfo.so not found - GPU info functions will be unavailable";
m_gpuInfo = NULL;
m_gpuInfoVo = NULL;
qDebug() << "DEBUG: Exiting MpvProxy::initGpuInfoFuns due to missing libgpuinfo.so."; // Add exit log
return;
}
QLibrary mpvLibrary(SysUtils::libPath("libgpuinfo.so"));
m_gpuInfo = reinterpret_cast<void *>(mpvLibrary.resolve("vdp_Iter_decoderInfo"));
m_gpuInfoVo = reinterpret_cast<const char* (*)(void)>(mpvLibrary.resolve("gpuinfo_get_vo"));
qInfo() << "GPU info functions initialized successfully";
}

Expand Down Expand Up @@ -637,6 +639,16 @@ mpv_handle *MpvProxy::mpv_init()
my_set_property(pHandle, "vo", "vaapi");
m_sInitVo = "vaapi";
}

// gpuinfo VO: if matched, use gpuinfo's recommendation (AUTO mode only)
if (m_gpuInfoVo) {
const char* vo = m_gpuInfoVo();
if (vo && vo[0] != '\0') {
qInfo() << "gpuinfo recommended vo:" << vo;
my_set_property(pHandle, "vo", vo);
m_sInitVo = vo;
}
}
} else if (DecodeMode::HARDWARE == m_decodeMode) { //3.设置硬解
qDebug() << "DEBUG: Decode mode set to HARDWARE. Checking specific hardware.";
QFileInfo X100GPU("/dev/x100gpu");
Expand Down Expand Up @@ -1939,6 +1951,7 @@ void MpvProxy::initMember()
m_freeNodecontents = nullptr;
m_pConfig = nullptr;
m_gpuInfo = nullptr;
m_gpuInfoVo = nullptr;
}

void MpvProxy::play()
Expand Down
1 change: 1 addition & 0 deletions src/backends/mpv/mpv_proxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,7 @@ protected slots:
mpvinitialize m_initialize;
mpv_freeNode_contents m_freeNodecontents;
void *m_gpuInfo; //解码探测函数指针
const char* (*m_gpuInfoVo)(void); //gpuinfo_get_vo函数指针


MpvHandle m_handle; //mpv句柄
Expand Down
Loading