From f02f5d3db4ada798246f0896e33610530e535c24 Mon Sep 17 00:00:00 2001 From: "neethu.arambilsunny@sky.uk" Date: Thu, 3 Apr 2025 13:55:17 +0100 Subject: [PATCH 01/22] RDKEMW-3138: Stub for VVR support Reason for change: Stub for VVR support Test Procedure: refer the ticket Risks: None Signed-off-by: Neethu A S neethu.arambilsunny@sky.uk --- AVInput/AVInput.cpp | 1 + AVInput/AVInput.h | 1 + 2 files changed, 2 insertions(+) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 8c71c7a6..f673bfc7 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -65,6 +65,7 @@ #define AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED "gameFeatureStatusUpdate" #define AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED "aviContentTypeUpdate" +//demo static bool isAudioBalanceSet = false; static int planeType = 0; diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 22b61827..0661c1ae 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -27,6 +27,7 @@ #define MAX_PRIM_VOL_LEVEL 100 #define DEFAULT_INPUT_VOL_LEVEL 100 +//demo namespace WPEFramework { namespace Plugin { From aca4b460cad68d7461efe8649758415285a28bec Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Thu, 3 Apr 2025 19:50:42 +0530 Subject: [PATCH 02/22] Update AVInput.h --- AVInput/AVInput.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 0661c1ae..ffb44f9f 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -80,6 +80,8 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC uint32_t getEdidVersionWrapper(const JsonObject& parameters, JsonObject& response); uint32_t setEdid2AllmSupportWrapper(const JsonObject& parameters, JsonObject& response); uint32_t getEdid2AllmSupportWrapper(const JsonObject& parameters, JsonObject& response); + uint32_t setVRRSupportWrapper(const JsonObject& parameters, JsonObject& response); + uint32_t getVRRSupportWrapper(const JsonObject& parameters, JsonObject& response); uint32_t startInput(const JsonObject& parameters, JsonObject& response); uint32_t stopInput(const JsonObject& parameters, JsonObject& response); uint32_t setVideoRectangleWrapper(const JsonObject& parameters, JsonObject& response); From 8ae173d658d195981b8bd2920a82ff67349ab4d4 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Thu, 3 Apr 2025 19:51:25 +0530 Subject: [PATCH 03/22] Update AVInput.h --- AVInput/AVInput.h | 1 - 1 file changed, 1 deletion(-) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index ffb44f9f..3f58d67b 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -27,7 +27,6 @@ #define MAX_PRIM_VOL_LEVEL 100 #define DEFAULT_INPUT_VOL_LEVEL 100 -//demo namespace WPEFramework { namespace Plugin { From e0c3ea3ee5d2ccd697f91e4d4fb65a6854bf48c3 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Thu, 3 Apr 2025 20:51:24 +0530 Subject: [PATCH 04/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index f673bfc7..1fb55399 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -48,6 +48,8 @@ #define AVINPUT_METHOD_GET_EDID_VERSION "getEdidVersion" #define AVINPUT_METHOD_SET_EDID_ALLM_SUPPORT "setEdid2AllmSupport" #define AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT "getEdid2AllmSupport" +#define AVINPUT_METHOD_SET_VRR_SUPPORT "setVRRSupport" +#define AVINPUT_METHOD_GET_VRR_SUPPORT "getVRRSupport" #define AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION "getHdmiVersion" #define AVINPUT_METHOD_SET_MIXER_LEVELS "setMixerLevels" #define AVINPUT_METHOD_START_INPUT "startInput" @@ -65,7 +67,6 @@ #define AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED "gameFeatureStatusUpdate" #define AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED "aviContentTypeUpdate" -//demo static bool isAudioBalanceSet = false; static int planeType = 0; @@ -232,6 +233,8 @@ void AVInput::RegisterAll() Register(_T(AVINPUT_METHOD_SET_MIXER_LEVELS), &AVInput::setMixerLevels, this); Register(_T(AVINPUT_METHOD_SET_EDID_ALLM_SUPPORT), &AVInput::setEdid2AllmSupportWrapper, this); Register(_T(AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT), &AVInput::getEdid2AllmSupportWrapper, this); + Register(_T(AVINPUT_METHOD_SET_VRR_SUPPORT), &AVInput::setVRRSupportWrapper, this); + Register(_T(AVINPUT_METHOD_GET_VRR_SUPPORT), &AVInput::getVRRSupportWrapper, this); Register(_T(AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION), &AVInput::getHdmiVersionWrapper, this); Register(_T(AVINPUT_METHOD_START_INPUT), &AVInput::startInput, this); Register(_T(AVINPUT_METHOD_STOP_INPUT), &AVInput::stopInput, this); @@ -1364,6 +1367,77 @@ uint32_t AVInput::getEdid2AllmSupportWrapper(const JsonObject& parameters, JsonO } } +bool getVRRSupport(int portId,bool *vrrSupportValue) +{ + bool ret = true; + //To implement + return ret; +} + +uint32_t AVInput::getVRRSupportWrapper(const JsonObject& parameters, JsonObject& response) +{ + LOGINFOMETHOD(); + string sPortId = parameters["portId"].String(); + + int portId = 0; + bool vrrSupport = true; + returnIfParamNotFound(parameters, "portId"); + + try { + portId = stoi(sPortId); + }catch (const std::exception& err) { + LOGWARN("sPortId invalid paramater: %s ", sPortId.c_str()); + returnResponse(false); + } + + bool result = getVRRSupport(portId, &allmSupport); + if(result == true) + { + response["vrrSupport"] = vrrSupport; + returnResponse(true); + } + else + { + returnResponse(false); + } +} + +bool setVRRSupport(int portId, bool vrrSupport) +{ + bool ret = true; + //To implement +return ret; +} + +uint32_t AVInput::setVRRSupportWrapper(const JsonObject& parameters, JsonObject& response) +{ + LOGINFOMETHOD(); + + returnIfParamNotFound(parameters, "portId"); + returnIfParamNotFound(parameters, "vrrSupport"); + + int portId = 0; + string sPortId = parameters["portId"].String(); + bool vrrSupport = parameters["vrrSupport"].Boolean(); + + try { + portId = stoi(sPortId); + }catch (const std::exception& err) { + LOGWARN("sPortId invalid paramater: %s ", sPortId.c_str()); + returnResponse(false); + } + + bool result = setVRRSupport(portId, vrrSupport); + if(result == true) + { + returnResponse(true); + } + else + { + returnResponse(false); + } +} + uint32_t AVInput::setEdidVersionWrapper(const JsonObject& parameters, JsonObject& response) { LOGINFOMETHOD(); From b3a96969d3b33296a33856914eea07ba45f80228 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Thu, 3 Apr 2025 20:59:16 +0530 Subject: [PATCH 05/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 1fb55399..447acea5 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -255,6 +255,8 @@ void AVInput::UnregisterAll() Unregister(_T(AVINPUT_METHOD_READ_EDID)); Unregister(_T(AVINPUT_METHOD_READ_RAWSPD)); Unregister(_T(AVINPUT_METHOD_READ_SPD)); + Unregister(_T(AVINPUT_METHOD_GET_VRR_SUPPORT)); + Unregister(_T(AVINPUT_METHOD_SET_VRR_SUPPORT)); Unregister(_T(AVINPUT_METHOD_SET_EDID_VERSION)); Unregister(_T(AVINPUT_METHOD_GET_EDID_VERSION)); Unregister(_T(AVINPUT_METHOD_START_INPUT)); From 269cfc6bf9a0085e380c2eb5e609c0f9620cfc32 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Fri, 4 Apr 2025 10:17:47 +0530 Subject: [PATCH 06/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 447acea5..1fe9997c 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1392,7 +1392,7 @@ uint32_t AVInput::getVRRSupportWrapper(const JsonObject& parameters, JsonObject& returnResponse(false); } - bool result = getVRRSupport(portId, &allmSupport); + bool result = getVRRSupport(portId, &vrrSupport); if(result == true) { response["vrrSupport"] = vrrSupport; From c761d54af39adafde55ff921fa0d7551140a4317 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Fri, 4 Apr 2025 14:47:03 +0530 Subject: [PATCH 07/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 1fe9997c..c953c36e 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1073,13 +1073,24 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json LOGWARN("AVInput::getGameFeatureStatusWrapper ALLM MODE:%d", allm); response["mode"] = allm; } + else if(strcmp (sGameFeature.c_str(), "HDMI VRR") == 0) + { + bool hdmi_vrr = getVRRStatus(portId); + LOGWARN("AVInput::getGameFeatureStatusWrapper HDMI VRR MODE:%d", hdmi_vrr); + response["mode"] = hdmi_vrr; + } + else if(strcmp (sGameFeature.c_str(), "AMD FreeSync Premium") == 0) + { + bool amd_freesync_premium = getVRRStatus(portId); + LOGWARN("AVInput::getGameFeatureStatusWrapper AMD FreeSync Premium MODE:%d", amd_freesync_premium); + response["mode"] = amd_freesync_premium; + } else { - LOGWARN("AVInput::getGameFeatureStatusWrapper Mode is not supported. Supported mode: ALLM"); + LOGWARN("AVInput::getGameFeatureStatusWrapper Mode is not supported. Supported mode: ALLM, HDMI VRR, AMD FreeSync Premium"); returnResponse(false); } returnResponse(true); -} bool AVInput::getALLMStatus(int iPort) { @@ -1097,6 +1108,14 @@ bool AVInput::getALLMStatus(int iPort) return allm; } +bool AVInput::getVRRStatus(int iPort) +{ + bool vrr = true; + /* + to be implemented + */ + return vrr; +} uint32_t AVInput::getRawSPDWrapper(const JsonObject& parameters, JsonObject& response) { LOGINFOMETHOD(); @@ -1372,7 +1391,9 @@ uint32_t AVInput::getEdid2AllmSupportWrapper(const JsonObject& parameters, JsonO bool getVRRSupport(int portId,bool *vrrSupportValue) { bool ret = true; - //To implement + /* + to be implemented + */ return ret; } @@ -1407,8 +1428,10 @@ uint32_t AVInput::getVRRSupportWrapper(const JsonObject& parameters, JsonObject& bool setVRRSupport(int portId, bool vrrSupport) { bool ret = true; - //To implement -return ret; + /* + to be implemented + */ + return ret; } uint32_t AVInput::setVRRSupportWrapper(const JsonObject& parameters, JsonObject& response) From 501b9a565c472458376c013b98d8988617b79d62 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Fri, 4 Apr 2025 16:36:25 +0530 Subject: [PATCH 08/22] Update AVInput.h --- AVInput/AVInput.h | 1 + 1 file changed, 1 insertion(+) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 3f58d67b..5b92eb87 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -99,6 +99,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC int getEdidVersion(int iPort); bool setVideoRectangle(int x, int y, int width, int height, int type); bool getALLMStatus(int iPort); + bool getVRRStatus(int iPort); void AVInputHotplug(int input , int connect, int type); static void dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); From 34da75401a821323dde0bff7c023cc61b9ecf537 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Sat, 5 Apr 2025 20:26:24 +0530 Subject: [PATCH 09/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index c953c36e..333e60f1 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1091,6 +1091,7 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json returnResponse(false); } returnResponse(true); +} bool AVInput::getALLMStatus(int iPort) { From 1c47de58321e6d18182297573c25f68d1922d4a4 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 16:39:11 +0530 Subject: [PATCH 10/22] Update AVInput.h --- AVInput/AVInput.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 5b92eb87..d3885639 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -47,6 +47,15 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC int m_primVolume; int m_inputVolume; //Player Volume + + typedef enum { + VRR_NONE, // No VRR support + VRR_HDMI_VRR, // VRR (HDMI v2.1 flavour) + VRR_AMD_FREESYNC, // AMD FreeSync + VRR_AMD_FREESYNC_PREMIUM, // AMD FreeSync Premium + VRR_AMD_FREESYNC_PREMIUM_PRO // AMD FreeSync Premium Pro + }VRRType_t; + public: // IPlugin methods // ------------------------------------------------------------------------------------------------------- @@ -99,7 +108,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC int getEdidVersion(int iPort); bool setVideoRectangle(int x, int y, int width, int height, int type); bool getALLMStatus(int iPort); - bool getVRRStatus(int iPort); + bool getVRRStatus(int iPort, VRRType_t vrrType); void AVInputHotplug(int input , int connect, int type); static void dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); @@ -114,6 +123,9 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC static void dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); void AVInputALLMChange( int port , bool allmMode); + void AVInput::AVInputHDMIVRRChange( int port , bool vrr_mode); + void AVInput::AVInputAMDFreeSyncChange( int port , bool vrr_mode); + static void dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); void hdmiInputAviContentTypeChange(int port, int content_type); From db1486cd482f5010ce485b8a0d7a4ea48b770d71 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 17:14:49 +0530 Subject: [PATCH 11/22] Update AVInput.h --- AVInput/AVInput.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index d3885639..f6a72ac9 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -108,7 +108,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC int getEdidVersion(int iPort); bool setVideoRectangle(int x, int y, int width, int height, int type); bool getALLMStatus(int iPort); - bool getVRRStatus(int iPort, VRRType_t vrrType); + void getVRRStatus(int iPort, VRRType_t *vrrType); void AVInputHotplug(int input , int connect, int type); static void dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); From 23f0e3f6f1c8bef1975cf9911562c3ac978b4afc Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 17:42:45 +0530 Subject: [PATCH 12/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 86 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 10 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 333e60f1..4780ee35 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -158,6 +158,10 @@ void AVInput::InitializeIARM() IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, dsAVGameFeatureStatusEventHandler)); + IARM_CHECK(IARM_Bus_RegisterEventHandler( + IARM_BUS_DSMGR_NAME, + IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, + dsAVGameFeatureStatusEventHandler)); IARM_CHECK(IARM_Bus_RegisterEventHandler( IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, @@ -200,6 +204,9 @@ void AVInput::DeinitializeIARM() IARM_CHECK(IARM_Bus_RemoveEventHandler( IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, dsAVGameFeatureStatusEventHandler)); + IARM_CHECK(IARM_Bus_RemoveEventHandler( + IARM_BUS_DSMGR_NAME, + IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS,dsAVGameFeatureStatusEventHandler)); IARM_CHECK(IARM_Bus_RemoveEventHandler( IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsAVEventHandler)); @@ -1007,6 +1014,28 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_ AVInput::_instance->AVInputALLMChange(hdmi_in_port, allm_mode); } + if (IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS == eventId) + { + bool vrr_mode = true; + // Hardcoding the values + int hdmi_in_port = 0; + dsVRRType_t vrrType = VRR_HDMI_VRR; + // + if(!vrrType) + { + vrr_mode = false + AVInput::_instance->AVInputHDMIVRRChange(hdmi_in_port, vrr_mode); + AVInput::_instance->AVInputAMDFreeSyncChange(hdmi_in_port, vrr_mode); + } + elseif(vrrType == VRR_HDMI_VRR) + { + AVInput::_instance->AVInputHDMIVRRChange(hdmi_in_port, vrr_mode); + } + elseif(vrrType == VRR_AMD_FREESYNC_PREMIUM) + { + AVInput::_instance->AVInputAMDFreeSyncChange(hdmi_in_port, vrr_mode); + } + } } void AVInput::AVInputALLMChange( int port , bool allm_mode) @@ -1018,6 +1047,25 @@ void AVInput::AVInputALLMChange( int port , bool allm_mode) sendNotify(AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params); } +void AVInput::AVInputHDMIVRRChange( int port , bool vrr_mode) +{ + JsonObject params; + params["id"] = port; + params["gameFeature"] = "VRR-HDMI"; + params["mode"] = vrr_mode; + + sendNotify(AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params); +} + +void AVInput::AVInputAMDFreeSyncChange( int port , bool vrr_mode) +{ + JsonObject params; + params["id"] = port; + params["gameFeature"] = "VRR-FREESYNC-PREMIUM"; + params["mode"] = vrr_mode; + + sendNotify(AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED, params); +} uint32_t AVInput::getSupportedGameFeatures(const JsonObject& parameters, JsonObject& response) { @@ -1073,15 +1121,29 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json LOGWARN("AVInput::getGameFeatureStatusWrapper ALLM MODE:%d", allm); response["mode"] = allm; } - else if(strcmp (sGameFeature.c_str(), "HDMI VRR") == 0) + else if(strcmp (sGameFeature.c_str(), "VRR-HDMI") == 0) { - bool hdmi_vrr = getVRRStatus(portId); + bool hdmi_vrr = false; + dsVRRType_t vrrType = VRR_HDMI_VRR; + dsVRRType_t n_vrrType; + getVRRStatus(portId, &n_vrrType); + if(vrrType == n_vrrType) + hdmi_vrr = true; + else + hdmi_vrr = false; LOGWARN("AVInput::getGameFeatureStatusWrapper HDMI VRR MODE:%d", hdmi_vrr); response["mode"] = hdmi_vrr; } - else if(strcmp (sGameFeature.c_str(), "AMD FreeSync Premium") == 0) + else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC-PREMIUM") == 0) { - bool amd_freesync_premium = getVRRStatus(portId); + bool amd_freesync_premium = false; + dsVRRType_t vrrType = VRR_AMD_FREESYNC_PREMIUM; + dsVRRType_t n_vrrType; + getVRRStatus(portId, &n_vrrType); + if(vrrType == n_vrrType) + amd_freesync_premium = true; + else + amd_freesync_premium = false; LOGWARN("AVInput::getGameFeatureStatusWrapper AMD FreeSync Premium MODE:%d", amd_freesync_premium); response["mode"] = amd_freesync_premium; } @@ -1109,14 +1171,17 @@ bool AVInput::getALLMStatus(int iPort) return allm; } -bool AVInput::getVRRStatus(int iPort) +void AVInput::getVRRStatus(int iPort, VRRType_t *vrrType) { - bool vrr = true; - /* - to be implemented + /* to be implemented + + //device::HdmiInput::getInstance().getVRRStatus (iPort, vrrType); + */ - return vrr; + //hardcoding the vrrType to VRR_HDMI_VRR + *vrrType = VRR_HDMI_VRR; } + uint32_t AVInput::getRawSPDWrapper(const JsonObject& parameters, JsonObject& response) { LOGINFOMETHOD(); @@ -1394,6 +1459,7 @@ bool getVRRSupport(int portId,bool *vrrSupportValue) bool ret = true; /* to be implemented + device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue); */ return ret; } @@ -1430,7 +1496,7 @@ bool setVRRSupport(int portId, bool vrrSupport) { bool ret = true; /* - to be implemented + device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue); */ return ret; } From a34556c6787c8d4cc3d09e91f743953bcb4f519d Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 17:45:54 +0530 Subject: [PATCH 13/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 4780ee35..80de268d 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1496,7 +1496,7 @@ bool setVRRSupport(int portId, bool vrrSupport) { bool ret = true; /* - device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue); + device::HdmiInput::getInstance().setVRRSupport (portId, vrrSupport); */ return ret; } From cd644338bfd7a8c354deebf759ac108159d3f130 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 18:49:21 +0530 Subject: [PATCH 14/22] Update AVInput.h --- AVInput/AVInput.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index f6a72ac9..81f3a076 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -123,8 +123,8 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC static void dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); void AVInputALLMChange( int port , bool allmMode); - void AVInput::AVInputHDMIVRRChange( int port , bool vrr_mode); - void AVInput::AVInputAMDFreeSyncChange( int port , bool vrr_mode); + void AVInputHDMIVRRChange( int port , bool vrr_mode); + void AVInputAMDFreeSyncChange( int port , bool vrr_mode); static void dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); From f922522c63dc5f11c68c159346a0a79c99cccb31 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 18:52:17 +0530 Subject: [PATCH 15/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 80de268d..fb57380f 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1019,19 +1019,19 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_ bool vrr_mode = true; // Hardcoding the values int hdmi_in_port = 0; - dsVRRType_t vrrType = VRR_HDMI_VRR; + VRRType_t vrrType = VRR_HDMI_VRR; // if(!vrrType) { - vrr_mode = false + vrr_mode = false; AVInput::_instance->AVInputHDMIVRRChange(hdmi_in_port, vrr_mode); AVInput::_instance->AVInputAMDFreeSyncChange(hdmi_in_port, vrr_mode); } - elseif(vrrType == VRR_HDMI_VRR) + else if(vrrType == VRR_HDMI_VRR) { AVInput::_instance->AVInputHDMIVRRChange(hdmi_in_port, vrr_mode); } - elseif(vrrType == VRR_AMD_FREESYNC_PREMIUM) + else if(vrrType == VRR_AMD_FREESYNC_PREMIUM) { AVInput::_instance->AVInputAMDFreeSyncChange(hdmi_in_port, vrr_mode); } @@ -1124,8 +1124,8 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json else if(strcmp (sGameFeature.c_str(), "VRR-HDMI") == 0) { bool hdmi_vrr = false; - dsVRRType_t vrrType = VRR_HDMI_VRR; - dsVRRType_t n_vrrType; + VRRType_t vrrType = VRR_HDMI_VRR; + VRRType_t n_vrrType; getVRRStatus(portId, &n_vrrType); if(vrrType == n_vrrType) hdmi_vrr = true; @@ -1137,8 +1137,8 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC-PREMIUM") == 0) { bool amd_freesync_premium = false; - dsVRRType_t vrrType = VRR_AMD_FREESYNC_PREMIUM; - dsVRRType_t n_vrrType; + VRRType_t vrrType = VRR_AMD_FREESYNC_PREMIUM; + VRRType_t n_vrrType; getVRRStatus(portId, &n_vrrType); if(vrrType == n_vrrType) amd_freesync_premium = true; From 85c81440e6861e39bd96567e5a2a89d3321bf570 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Mon, 7 Apr 2025 20:22:07 +0530 Subject: [PATCH 16/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index fb57380f..2916b529 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1021,7 +1021,7 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_ int hdmi_in_port = 0; VRRType_t vrrType = VRR_HDMI_VRR; // - if(!vrrType) + if(vrrType == VRR_NONE) { vrr_mode = false; AVInput::_instance->AVInputHDMIVRRChange(hdmi_in_port, vrr_mode); @@ -1124,10 +1124,9 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json else if(strcmp (sGameFeature.c_str(), "VRR-HDMI") == 0) { bool hdmi_vrr = false; - VRRType_t vrrType = VRR_HDMI_VRR; - VRRType_t n_vrrType; - getVRRStatus(portId, &n_vrrType); - if(vrrType == n_vrrType) + VRRType_t vrrType; + getVRRStatus(portId, &vrrType); + if(vrrType == VRR_HDMI_VRR) hdmi_vrr = true; else hdmi_vrr = false; @@ -1137,10 +1136,9 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC-PREMIUM") == 0) { bool amd_freesync_premium = false; - VRRType_t vrrType = VRR_AMD_FREESYNC_PREMIUM; - VRRType_t n_vrrType; - getVRRStatus(portId, &n_vrrType); - if(vrrType == n_vrrType) + VRRType_t vrrType; + getVRRStatus(portId, &vrrType); + if(vrrType == VRR_AMD_FREESYNC_PREMIUM) amd_freesync_premium = true; else amd_freesync_premium = false; From 0d8654571e3097e45f616e6201e3d7be2bc1e34a Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Tue, 8 Apr 2025 14:05:33 +0530 Subject: [PATCH 17/22] Update AVInput.h --- AVInput/AVInput.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 81f3a076..7ae5bb0b 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -56,6 +56,9 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC VRR_AMD_FREESYNC_PREMIUM_PRO // AMD FreeSync Premium Pro }VRRType_t; + bool new_vrrMode; + VRRType_t new_vrrType; + public: // IPlugin methods // ------------------------------------------------------------------------------------------------------- @@ -106,6 +109,8 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC std::string getSPD(int iPort); int setEdidVersion(int iPort, int iEdidVer); int getEdidVersion(int iPort); + bool setVRRSupport(int portId, bool vrrSupport); + bool getVRRSupport(int portId, bool *vrrSupportValue); bool setVideoRectangle(int x, int y, int width, int height, int type); bool getALLMStatus(int iPort); void getVRRStatus(int iPort, VRRType_t *vrrType); From eab5ca2fa9d6ee71951c5aa67ba4f344cb4721cb Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Tue, 8 Apr 2025 14:27:46 +0530 Subject: [PATCH 18/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 2916b529..f9581602 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -1176,8 +1176,8 @@ void AVInput::getVRRStatus(int iPort, VRRType_t *vrrType) //device::HdmiInput::getInstance().getVRRStatus (iPort, vrrType); */ - //hardcoding the vrrType to VRR_HDMI_VRR - *vrrType = VRR_HDMI_VRR; + + *vrrType = new_vrrType; } uint32_t AVInput::getRawSPDWrapper(const JsonObject& parameters, JsonObject& response) @@ -1452,13 +1452,14 @@ uint32_t AVInput::getEdid2AllmSupportWrapper(const JsonObject& parameters, JsonO } } -bool getVRRSupport(int portId,bool *vrrSupportValue) +bool AVInput::getVRRSupport(int portId,bool *vrrSupportValue) { bool ret = true; /* to be implemented device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue); - */ + */ + *vrrSupportValue = new_vrrMode; return ret; } @@ -1490,12 +1491,18 @@ uint32_t AVInput::getVRRSupportWrapper(const JsonObject& parameters, JsonObject& } } -bool setVRRSupport(int portId, bool vrrSupport) +bool AVInput::setVRRSupport(int portId, bool vrrSupport) { bool ret = true; /* device::HdmiInput::getInstance().setVRRSupport (portId, vrrSupport); - */ + */ + new_vrrMode = vrrSupport; + if(new_vrrMode) + new_vrrType = VRR_HDMI_VRR; + else + new_vrrType = VRR_NONE; + return ret; } From d7f51f14c1b4c8e2cf3c6b1dc6b2c57e2623e2d6 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Tue, 8 Apr 2025 16:30:54 +0530 Subject: [PATCH 19/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index f9581602..7a5b1136 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -250,6 +250,8 @@ void AVInput::RegisterAll() Register(_T(AVINPUT_METHOD_GAME_FEATURE_STATUS), &AVInput::getGameFeatureStatusWrapper, this); m_primVolume = DEFAULT_PRIM_VOL_LEVEL; m_inputVolume = DEFAULT_INPUT_VOL_LEVEL; + new_vrrMode = false; + new_vrrType = VRR_NONE; } void AVInput::UnregisterAll() From 89511674caabf9113a19ae3d396e19576d8641f7 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Wed, 9 Apr 2025 13:31:54 +0530 Subject: [PATCH 20/22] Update AVInput.h --- AVInput/AVInput.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index 7ae5bb0b..0219e4d0 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -56,8 +56,8 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC VRR_AMD_FREESYNC_PREMIUM_PRO // AMD FreeSync Premium Pro }VRRType_t; - bool new_vrrMode; - VRRType_t new_vrrType; + bool m_vrrMode; + VRRType_t m_vrrType; public: // IPlugin methods From 4a58cf594ab2e7dd2cebc449724876afaec7a7d9 Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Wed, 9 Apr 2025 13:33:39 +0530 Subject: [PATCH 21/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index 7a5b1136..b36ea6c3 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -250,8 +250,8 @@ void AVInput::RegisterAll() Register(_T(AVINPUT_METHOD_GAME_FEATURE_STATUS), &AVInput::getGameFeatureStatusWrapper, this); m_primVolume = DEFAULT_PRIM_VOL_LEVEL; m_inputVolume = DEFAULT_INPUT_VOL_LEVEL; - new_vrrMode = false; - new_vrrType = VRR_NONE; + m_vrrMode = false; + m_vrrType = VRR_NONE; } void AVInput::UnregisterAll() @@ -1179,7 +1179,7 @@ void AVInput::getVRRStatus(int iPort, VRRType_t *vrrType) */ - *vrrType = new_vrrType; + *vrrType = m_vrrType; } uint32_t AVInput::getRawSPDWrapper(const JsonObject& parameters, JsonObject& response) @@ -1461,7 +1461,7 @@ bool AVInput::getVRRSupport(int portId,bool *vrrSupportValue) to be implemented device::HdmiInput::getInstance().getVRRSupport (portId, vrrSupportValue); */ - *vrrSupportValue = new_vrrMode; + *vrrSupportValue = m_vrrMode; return ret; } @@ -1499,11 +1499,11 @@ bool AVInput::setVRRSupport(int portId, bool vrrSupport) /* device::HdmiInput::getInstance().setVRRSupport (portId, vrrSupport); */ - new_vrrMode = vrrSupport; - if(new_vrrMode) - new_vrrType = VRR_HDMI_VRR; + m_vrrMode = vrrSupport; + if(m_vrrMode) + m_vrrType = VRR_HDMI_VRR; else - new_vrrType = VRR_NONE; + m_vrrType = VRR_NONE; return ret; } From b4143ccab78325bad705798d7fb0a7ef2d81978d Mon Sep 17 00:00:00 2001 From: neethuas379 Date: Sun, 13 Apr 2025 21:53:59 +0530 Subject: [PATCH 22/22] Update AVInput.cpp --- AVInput/AVInput.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index b36ea6c3..5033764b 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -66,6 +66,7 @@ #define AVINPUT_EVENT_ON_VIDEO_MODE_UPDATED "videoStreamInfoUpdate" #define AVINPUT_EVENT_ON_GAME_FEATURE_STATUS_CHANGED "gameFeatureStatusUpdate" #define AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED "aviContentTypeUpdate" +#define IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS 35 static bool isAudioBalanceSet = false; static int planeType = 0;