Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Video Super Resolution for Windows (AMD, Intel and NVIDIA) and MacOS #1180

Open
wants to merge 73 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
aad9113
Add a new UI feature called "Video AI-Enhancement" (VAE)
linckosz Feb 7, 2024
d40a8f1
Add AI Super Resolution for NVIDIA and Intel GPUs
linckosz Feb 8, 2024
2a1e226
Fix Mac build issue
linckosz Feb 10, 2024
b5061f3
Improve the rendering of HDR mode by removing visual glitches
linckosz Feb 10, 2024
1832c7b
Merge branch 'moonlight-stream:master' into master
Feb 10, 2024
7391f94
Add a new UI feature called "Video AI-Enhancement" (VAE)
linckosz Feb 7, 2024
89b6485
Add AI Super Resolution for NVIDIA and Intel GPUs
linckosz Feb 8, 2024
6c0181d
Correct spelling in comments
linckosz Feb 24, 2024
05000db
Add flag D3D11_BIND_RENDER_TARGET only if Video enhancement is enabled
linckosz Feb 24, 2024
937be56
Replace the variable m_IsHDRenabled
linckosz Feb 26, 2024
362f5ca
Change the method to get Video Driver version to a more conventional way
linckosz Feb 26, 2024
ae8118b
Use Hexadecimal value for VendorID
linckosz Feb 26, 2024
7e317ef
Correct the HDR metadata for Stream and Output sources
linckosz Feb 26, 2024
9562a59
Replace CComPtr by Microsoft::WRL::ComPtr
linckosz Feb 26, 2024
0ed68bf
Remove "reset" parameter from the method "D3D11VARenderer::createVide…
linckosz Feb 26, 2024
17d4d00
Turn off D3D11_VIDEO_PROCESSOR_FILTER_HUE in SDR mode
linckosz Feb 26, 2024
7c22abd
Add the source links of some key values for VSR and SDR->HDR features
linckosz Feb 26, 2024
4bb3eff
Remove ID3D11VideoContext1::VideoProcessorSetOutputShaderUsage as it …
linckosz Feb 27, 2024
9ca8b6f
Enable Video AI-Enhancement in Exclusive Fullscreen
linckosz Feb 27, 2024
d34d7b8
Simplifying the initialization of the Color Space for Stream and Output
linckosz Feb 27, 2024
b10243b
For Multi-GPU setup, select most appropriate GPU when Video Enhanceme…
linckosz Mar 1, 2024
cbc9fd3
Update setHDRoutput to match the display in-use
linckosz Mar 1, 2024
51753e1
Disable VSR and HDR when scan for capabilities
linckosz Mar 1, 2024
3de61ec
Bug Fixes
linckosz Mar 1, 2024
ec5c69e
Use of setHdrMode callback to set HDR MetaData for Stream and Output
linckosz Mar 1, 2024
4db0f6b
Add enableVideoEnhancement to DECODER_PARAMETERS
linckosz Mar 1, 2024
986774b
Replace VideEnhancement method used in QML by SystemProperties' ones.
linckosz Mar 1, 2024
0957d50
Remove the use of VideoProcessorSetStreamSourceRect
linckosz Mar 1, 2024
f5d3f5f
Merge branch 'master' of https://github.com/linckosz/moonlight-qt
linckosz Mar 1, 2024
cd3b3af
Merge branch 'vsr2' into vsr
linckosz Mar 1, 2024
e503d26
Resolution merge conflicts
linckosz Mar 1, 2024
8e239a3
Simplify the code for the checkbox Video Enhancement
linckosz Mar 2, 2024
51912e3
Merge branch 'vsr'
linckosz Mar 2, 2024
715fbd4
Merge branch 'moonlight-stream:master' into master
Mar 3, 2024
df93102
Add AMD Video Enhancement feature
linckosz Mar 27, 2024
01c1c79
Merge branch 'vsr-amd' into vsr
linckosz Mar 27, 2024
63101e0
Add AMD Video Enhancement feature
linckosz Mar 27, 2024
4c965db
Color rendering fix for NVIDIA and Intel when using VideoProcessor
linckosz Mar 29, 2024
2afd294
Color rendering fix for AMD when using AMF
linckosz Mar 31, 2024
336c7ad
Code formating
linckosz Mar 31, 2024
c87a4e1
Merge branch 'vsr-amd' into vsr
linckosz Mar 31, 2024
c637151
Fixing merge issues
linckosz Mar 31, 2024
175cd29
Merge upstream master onto vsr
linckosz Mar 31, 2024
889bd16
Fix Intel HDR grey screen
linckosz Apr 1, 2024
58ed19b
More explicit UI information when Video Enhancement is unavailable
linckosz Apr 5, 2024
0024573
Merge branch 'master' of https://github.com/moonlight-stream/moonligh…
linckosz Apr 21, 2024
44971fe
AMF rendering speed optimization (FSR and Memory)
linckosz Apr 21, 2024
ad903e7
Add Video Super Resolution for MacOS using MetalFX
linckosz May 6, 2024
09fcd4e
Merge remote-tracking branch 'upstream/master' into vsr
linckosz May 6, 2024
dbad1bf
Merge vsr with v6
linckosz Jun 12, 2024
0859028
Merge remote-tracking branch 'origin/vsr' into vsr
linckosz Jun 15, 2024
1caccf8
Fix crash because of CFRelease
linckosz Jun 15, 2024
645e164
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Jul 28, 2024
2068cb3
Reapply some code optimizations related to the Video Enhancement
linckosz Jul 28, 2024
f22d7ff
Fix rendering issue
linckosz Jul 28, 2024
81de32e
For Intel GPU, force binding while using VSR
linckosz Aug 2, 2024
93c5f65
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Aug 3, 2024
8477631
Clean code
linckosz Aug 3, 2024
ee7a0b6
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Aug 22, 2024
f79a57c
Submodules merge
linckosz Aug 23, 2024
bdf5a27
Code fixes
linckosz Aug 23, 2024
f5301fb
Move pixBuf to the method scope
linckosz Aug 23, 2024
da19eea
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Sep 24, 2024
7687561
Merge remote-tracking branch 'origin/master' into vsr
linckosz Sep 24, 2024
009ad8a
Fix memory leak on MacOS
linckosz Sep 27, 2024
1267df4
Merge remote-tracking branch 'origin/master' into vsr
linckosz Sep 27, 2024
77563e8
Fix duplicated variable
linckosz Sep 28, 2024
e716703
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Nov 12, 2024
40070d2
Disable Video enhancement when using Software video decoder
linckosz Nov 13, 2024
fff78a2
Enable CLI command "--video-enhancement"
linckosz Nov 13, 2024
2a40e63
Merge remote-tracking branch 'upstream/master' into vsr
linckosz Nov 16, 2024
4a48953
Disable VSR checkbox for unsupported GPU
linckosz Nov 16, 2024
ebf16e8
Relaunch build
linckosz Nov 17, 2024
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
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


**/.vs/
**/.vscode/
build/
config.tests/*/.qmake.stash
config.tests/*/Makefile
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@
path = libs
url = https://github.com/cgutman/moonlight-qt-prebuilts.git
shallow = true
[submodule "third-party/AMF"]
path = third-party/AMF
url = https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
Binary file added app/.DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion app/SDL_GameControllerDB
16 changes: 15 additions & 1 deletion app/app.pro
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ macx {
CONFIG += discord-rpc
}

LIBS += -lobjc -framework VideoToolbox -framework AVFoundation -framework CoreVideo -framework CoreGraphics -framework CoreMedia -framework AppKit -framework Metal -framework QuartzCore
LIBS += -lobjc -framework VideoToolbox -framework AVFoundation -framework CoreVideo -framework CoreGraphics -framework CoreMedia -framework AppKit -framework Metal -framework MetalFx -framework QuartzCore

# For libsoundio
LIBS += -framework CoreAudio -framework AudioUnit
Expand Down Expand Up @@ -211,6 +211,7 @@ SOURCES += \
gui/sdlgamepadkeynavigation.cpp \
streaming/video/overlaymanager.cpp \
backend/systemproperties.cpp \
streaming/video/videoenhancement.cpp \
wm.cpp

HEADERS += \
Expand All @@ -219,6 +220,7 @@ HEADERS += \
cli/pair.h \
settings/compatfetcher.h \
settings/mappingfetcher.h \
streaming/video/videoenhancement.h \
utils.h \
backend/computerseeker.h \
backend/identitymanager.h \
Expand Down Expand Up @@ -402,6 +404,18 @@ win32:!winrt {
streaming/video/ffmpeg-renderers/d3d11va.h \
streaming/video/ffmpeg-renderers/pacer/dxvsyncsource.h
}
win32:!winrt {
message(AMF enabled for AMD Drivers)

SOURCES += \
../third-party/AMF/amf/public/common/AMFFactory.cpp \
../third-party/AMF/amf/public/common/AMFSTL.cpp \
../third-party/AMF/amf/public/common/Thread.cpp \
../third-party/AMF/amf/public/common/TraceAdapter.cpp \
../third-party/AMF/amf/public/common/Windows/ThreadWindows.cpp

INCLUDEPATH += $$PWD/../third-party/AMF/amf
}
macx {
message(VideoToolbox renderer selected)

Expand Down
25 changes: 25 additions & 0 deletions app/backend/systemproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "streaming/session.h"
#include "streaming/streamutils.h"
#include "streaming/video/videoenhancement.h"

#ifdef Q_OS_WIN32
#define WIN32_LEAN_AND_MEAN
Expand Down Expand Up @@ -248,3 +249,27 @@ void SystemProperties::refreshDisplaysInternal()

SDL_QuitSubSystem(SDL_INIT_VIDEO);
}

/**
* \brief Inform if the GPU is capable of Video enhancement
*
* Check if either Video Super-Resolution or SDR-to-HDR features can be used by the GPU.
*
* \return bool Returns true if the GPU is capable
*/
bool SystemProperties::isVideoEnhancementCapable()
{
VideoEnhancement* videoEnhancement = &VideoEnhancement::getInstance();
return videoEnhancement->isUIvisible() && (videoEnhancement->isVSRcapable() || videoEnhancement->isHDRcapable());
}

/**
* \brief Inform if the GPU's driver is at an experiemental state of Video enhancement implementation
*
* \return bool Returns true if it is experimental yet
*/
bool SystemProperties::isVideoEnhancementExperimental()
{
VideoEnhancement* videoEnhancement = &VideoEnhancement::getInstance();
return videoEnhancement->isExperimental();
}
2 changes: 2 additions & 0 deletions app/backend/systemproperties.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class SystemProperties : public QObject
Q_INVOKABLE QRect getNativeResolution(int displayIndex);
Q_INVOKABLE QRect getSafeAreaResolution(int displayIndex);
Q_INVOKABLE int getRefreshRate(int displayIndex);
Q_INVOKABLE bool isVideoEnhancementCapable();
Q_INVOKABLE bool isVideoEnhancementExperimental();

signals:
void unmappedGamepadsChanged();
Expand Down
4 changes: 4 additions & 0 deletions app/cli/commandlineparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,7 @@ void StreamCommandLineParser::parse(const QStringList &args, StreamingPreference
parser.addToggleOption("game-optimization", "game optimizations");
parser.addToggleOption("audio-on-host", "audio on host PC");
parser.addToggleOption("frame-pacing", "frame pacing");
parser.addToggleOption("video-enhancement", "Enhance video with AI");
parser.addToggleOption("mute-on-focus-loss", "mute audio when Moonlight window loses focus");
parser.addToggleOption("background-gamepad", "background gamepad input");
parser.addToggleOption("reverse-scroll-direction", "inverted scroll direction");
Expand Down Expand Up @@ -474,6 +475,9 @@ void StreamCommandLineParser::parse(const QStringList &args, StreamingPreference
// Resolve --frame-pacing and --no-frame-pacing options
preferences->framePacing = parser.getToggleOptionValue("frame-pacing", preferences->framePacing);

// Resolve --video-enhancement and --no-video-enhancement options
preferences->videoEnhancement = parser.getToggleOptionValue("video-enhancement", preferences->videoEnhancement);

// Resolve --mute-on-focus-loss and --no-mute-on-focus-loss options
preferences->muteOnFocusLoss = parser.getToggleOptionValue("mute-on-focus-loss", preferences->muteOnFocusLoss);

Expand Down
48 changes: 48 additions & 0 deletions app/gui/SettingsView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -820,6 +820,44 @@ Flickable {
ToolTip.visible: hovered
ToolTip.text: qsTr("Frame pacing reduces micro-stutter by delaying frames that come in too early")
}

CheckBox {
id: videoEnhancementCheck
width: parent.width
hoverEnabled: true
text: qsTr("Video AI-Enhancement")
font.pointSize: 12
enabled: SystemProperties.isVideoEnhancementCapable()
checked: {
return SystemProperties.isVideoEnhancementCapable() && StreamingPreferences.videoEnhancement
}
property bool keepValue: checked;
onCheckedChanged: {
StreamingPreferences.videoEnhancement = checked
}
ToolTip.delay: 1000
ToolTip.timeout: 5000
ToolTip.visible: hovered
ToolTip.text:
qsTr("Enhance video quality by utilizing the GPU's AI-Enhancement capabilities.")
+ qsTr("\nThis feature effectively upscales, reduces compression artifacts and enhances the clarity of streamed content.")
+ qsTr("\nNote:")
+ qsTr("\n - If available, ensure that appropriate settings (i.e. RTX Video enhancement) are enabled in your GPU driver configuration.")
+ qsTr("\n - HDR rendering has divers issues depending on the GPU used, we are working on it but we advise to currently use Non-HDR.")
+ qsTr("\n - Be advised that using this feature on laptops running on battery power may lead to significant battery drain.")

Component.onCompleted: {
if (!SystemProperties.isVideoEnhancementCapable()){
// VSR or SDR->HDR feature could not be initialized by any GPU available
text = qsTr("Video AI-Enhancement (Not supported by the GPU)")
enabled = false;
checked = false;
} else if(SystemProperties.isVideoEnhancementExperimental()){
// Indicate if the feature is available but not officially deployed by the Vendor
text = qsTr("Video AI-Enhancement (Experimental)")
}
}
}
}
}

Expand Down Expand Up @@ -1523,6 +1561,16 @@ Flickable {
StreamingPreferences.videoDecoderSelection = decoderListModel.get(currentIndex).val
}
}
onCurrentIndexChanged: {
if(decoderListModel.get(currentIndex).val === StreamingPreferences.VDS_FORCE_SOFTWARE){
videoEnhancementCheck.enabled = false;
videoEnhancementCheck.keepValue = videoEnhancementCheck.checked;
videoEnhancementCheck.checked = false;
} else {
videoEnhancementCheck.enabled = true;
videoEnhancementCheck.checked = videoEnhancementCheck.keepValue;
}
}
}

Label {
Expand Down
3 changes: 3 additions & 0 deletions app/settings/streamingpreferences.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#define SER_ABSTOUCHMODE "abstouchmode"
#define SER_STARTWINDOWED "startwindowed"
#define SER_FRAMEPACING "framepacing"
#define SER_VIDEOENHANCEMENT "videoenhancement"
#define SER_CONNWARNINGS "connwarnings"
#define SER_UIDISPLAYMODE "uidisplaymode"
#define SER_RICHPRESENCE "richpresence"
Expand Down Expand Up @@ -131,6 +132,7 @@ void StreamingPreferences::reload()
absoluteMouseMode = settings.value(SER_ABSMOUSEMODE, false).toBool();
absoluteTouchMode = settings.value(SER_ABSTOUCHMODE, true).toBool();
framePacing = settings.value(SER_FRAMEPACING, false).toBool();
videoEnhancement = settings.value(SER_VIDEOENHANCEMENT, false).toBool();
connectionWarnings = settings.value(SER_CONNWARNINGS, true).toBool();
richPresence = settings.value(SER_RICHPRESENCE, true).toBool();
gamepadMouse = settings.value(SER_GAMEPADMOUSE, true).toBool();
Expand Down Expand Up @@ -321,6 +323,7 @@ void StreamingPreferences::save()
settings.setValue(SER_ABSMOUSEMODE, absoluteMouseMode);
settings.setValue(SER_ABSTOUCHMODE, absoluteTouchMode);
settings.setValue(SER_FRAMEPACING, framePacing);
settings.setValue(SER_VIDEOENHANCEMENT, videoEnhancement);
settings.setValue(SER_CONNWARNINGS, connectionWarnings);
settings.setValue(SER_RICHPRESENCE, richPresence);
settings.setValue(SER_GAMEPADMOUSE, gamepadMouse);
Expand Down
3 changes: 3 additions & 0 deletions app/settings/streamingpreferences.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ class StreamingPreferences : public QObject
Q_PROPERTY(bool absoluteMouseMode MEMBER absoluteMouseMode NOTIFY absoluteMouseModeChanged)
Q_PROPERTY(bool absoluteTouchMode MEMBER absoluteTouchMode NOTIFY absoluteTouchModeChanged)
Q_PROPERTY(bool framePacing MEMBER framePacing NOTIFY framePacingChanged)
Q_PROPERTY(bool videoEnhancement MEMBER videoEnhancement NOTIFY videoEnhancementChanged)
Q_PROPERTY(bool connectionWarnings MEMBER connectionWarnings NOTIFY connectionWarningsChanged)
Q_PROPERTY(bool richPresence MEMBER richPresence NOTIFY richPresenceChanged)
Q_PROPERTY(bool gamepadMouse MEMBER gamepadMouse NOTIFY gamepadMouseChanged)
Expand Down Expand Up @@ -158,6 +159,7 @@ class StreamingPreferences : public QObject
bool absoluteMouseMode;
bool absoluteTouchMode;
bool framePacing;
bool videoEnhancement;
bool connectionWarnings;
bool richPresence;
bool gamepadMouse;
Expand Down Expand Up @@ -202,6 +204,7 @@ class StreamingPreferences : public QObject
void uiDisplayModeChanged();
void windowModeChanged();
void framePacingChanged();
void videoEnhancementChanged();
void connectionWarningsChanged();
void richPresenceChanged();
void gamepadMouseChanged();
Expand Down
Binary file added app/streaming/.DS_Store
Binary file not shown.
20 changes: 11 additions & 9 deletions app/streaming/session.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ void Session::clSetControllerLED(uint16_t controllerNumber, uint8_t r, uint8_t g

bool Session::chooseDecoder(StreamingPreferences::VideoDecoderSelection vds,
SDL_Window* window, int videoFormat, int width, int height,
int frameRate, bool enableVsync, bool enableFramePacing, bool testOnly, IVideoDecoder*& chosenDecoder)
int frameRate, bool enableVsync, bool enableFramePacing, bool enableVideoEnhancement, bool testOnly, IVideoDecoder*& chosenDecoder)
{
DECODER_PARAMETERS params;

Expand All @@ -277,6 +277,7 @@ bool Session::chooseDecoder(StreamingPreferences::VideoDecoderSelection vds,
params.window = window;
params.enableVsync = enableVsync;
params.enableFramePacing = enableFramePacing;
params.enableVideoEnhancement = enableVideoEnhancement;
params.testOnly = testOnly;
params.vds = vds;

Expand Down Expand Up @@ -381,7 +382,7 @@ void Session::getDecoderInfo(SDL_Window* window,
// Try an HEVC Main10 decoder first to see if we have HDR support
if (chooseDecoder(StreamingPreferences::VDS_FORCE_HARDWARE,
window, VIDEO_FORMAT_H265_MAIN10, 1920, 1080, 60,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
isHardwareAccelerated = decoder->isHardwareAccelerated();
isFullScreenOnly = decoder->isAlwaysFullScreen();
isHdrSupported = decoder->isHdrSupported();
Expand All @@ -394,7 +395,7 @@ void Session::getDecoderInfo(SDL_Window* window,
// Try an AV1 Main10 decoder next to see if we have HDR support
if (chooseDecoder(StreamingPreferences::VDS_FORCE_HARDWARE,
window, VIDEO_FORMAT_AV1_MAIN10, 1920, 1080, 60,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
// If we've got a working AV1 Main 10-bit decoder, we'll enable the HDR checkbox
// but we will still continue probing to get other attributes for HEVC or H.264
// decoders. See the AV1 comment at the top of the function for more info.
Expand All @@ -406,10 +407,10 @@ void Session::getDecoderInfo(SDL_Window* window,
// that supports HDR rendering with software decoded frames.
if (chooseDecoder(StreamingPreferences::VDS_FORCE_SOFTWARE,
window, VIDEO_FORMAT_H265_MAIN10, 1920, 1080, 60,
false, false, true, decoder) ||
false, false, false, true, decoder) ||
chooseDecoder(StreamingPreferences::VDS_FORCE_SOFTWARE,
window, VIDEO_FORMAT_AV1_MAIN10, 1920, 1080, 60,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
isHdrSupported = decoder->isHdrSupported();
delete decoder;
}
Expand All @@ -423,7 +424,7 @@ void Session::getDecoderInfo(SDL_Window* window,
// Try a regular hardware accelerated HEVC decoder now
if (chooseDecoder(StreamingPreferences::VDS_FORCE_HARDWARE,
window, VIDEO_FORMAT_H265, 1920, 1080, 60,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
isHardwareAccelerated = decoder->isHardwareAccelerated();
isFullScreenOnly = decoder->isAlwaysFullScreen();
maxResolution = decoder->getDecoderMaxResolution();
Expand All @@ -450,7 +451,7 @@ void Session::getDecoderInfo(SDL_Window* window,
// This will fall back to software decoding, so it should always work.
if (chooseDecoder(StreamingPreferences::VDS_AUTO,
window, VIDEO_FORMAT_H264, 1920, 1080, 60,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
isHardwareAccelerated = decoder->isHardwareAccelerated();
isFullScreenOnly = decoder->isAlwaysFullScreen();
maxResolution = decoder->getDecoderMaxResolution();
Expand All @@ -470,7 +471,7 @@ Session::getDecoderAvailability(SDL_Window* window,
{
IVideoDecoder* decoder;

if (!chooseDecoder(vds, window, videoFormat, width, height, frameRate, false, false, true, decoder)) {
if (!chooseDecoder(vds, window, videoFormat, width, height, frameRate, false, false, false, true, decoder)) {
return DecoderAvailability::None;
}

Expand All @@ -491,7 +492,7 @@ bool Session::populateDecoderProperties(SDL_Window* window)
m_StreamConfig.width,
m_StreamConfig.height,
m_StreamConfig.fps,
false, false, true, decoder)) {
false, false, false, true, decoder)) {
return false;
}

Expand Down Expand Up @@ -2219,6 +2220,7 @@ void Session::execInternal()
m_ActiveVideoHeight, m_ActiveVideoFrameRate,
enableVsync,
enableVsync && m_Preferences->framePacing,
m_Preferences->videoEnhancement,
false,
s_ActiveSession->m_VideoDecoder)) {
SDL_AtomicUnlock(&m_DecoderLock);
Expand Down
2 changes: 1 addition & 1 deletion app/streaming/session.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ class Session : public QObject
bool chooseDecoder(StreamingPreferences::VideoDecoderSelection vds,
SDL_Window* window, int videoFormat, int width, int height,
int frameRate, bool enableVsync, bool enableFramePacing,
bool testOnly,
bool enableVideoEnhancement, bool testOnly,
IVideoDecoder*& chosenDecoder);

static
Expand Down
Binary file added app/streaming/video/.DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions app/streaming/video/decoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ typedef struct _DECODER_PARAMETERS {
int frameRate;
bool enableVsync;
bool enableFramePacing;
bool enableVideoEnhancement;
bool testOnly;
} DECODER_PARAMETERS, *PDECODER_PARAMETERS;

Expand Down
Loading