Skip to content

Commit 78f58ff

Browse files
authored
Update AVInput.cpp
1 parent f42680c commit 78f58ff

File tree

1 file changed

+50
-18
lines changed

1 file changed

+50
-18
lines changed

AVInput/AVInput.cpp

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#define AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT "getEdid2AllmSupport"
5151
#define AVINPUT_METHOD_SET_VRR_SUPPORT "setVRRSupport"
5252
#define AVINPUT_METHOD_GET_VRR_SUPPORT "getVRRSupport"
53+
#define AVINPUT_METHOD_GET_VRR_FRAME_RATE "getVRRFrameRate"
5354
#define AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION "getHdmiVersion"
5455
#define AVINPUT_METHOD_SET_MIXER_LEVELS "setMixerLevels"
5556
#define AVINPUT_METHOD_START_INPUT "startInput"
@@ -242,6 +243,7 @@ void AVInput::RegisterAll()
242243
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_EDID_ALLM_SUPPORT), &AVInput::getEdid2AllmSupportWrapper, this);
243244
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_SET_VRR_SUPPORT), &AVInput::setVRRSupportWrapper, this);
244245
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_VRR_SUPPORT), &AVInput::getVRRSupportWrapper, this);
246+
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_VRR_FRAME_RATE), &AVInput::getVRRFrameRateWrapper, this);
245247
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_GET_HDMI_COMPATIBILITY_VERSION), &AVInput::getHdmiVersionWrapper, this);
246248
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_START_INPUT), &AVInput::startInput, this);
247249
Register<JsonObject, JsonObject>(_T(AVINPUT_METHOD_STOP_INPUT), &AVInput::stopInput, this);
@@ -265,6 +267,7 @@ void AVInput::UnregisterAll()
265267
Unregister(_T(AVINPUT_METHOD_READ_SPD));
266268
Unregister(_T(AVINPUT_METHOD_SET_VRR_SUPPORT));
267269
Unregister(_T(AVINPUT_METHOD_GET_VRR_SUPPORT));
270+
Unregister(_T(AVINPUT_METHOD_GET_VRR_FRAME_RATE));
268271
Unregister(_T(AVINPUT_METHOD_SET_EDID_VERSION));
269272
Unregister(_T(AVINPUT_METHOD_GET_EDID_VERSION));
270273
Unregister(_T(AVINPUT_METHOD_START_INPUT));
@@ -1137,39 +1140,39 @@ uint32_t AVInput::getGameFeatureStatusWrapper(const JsonObject& parameters, Json
11371140
else if(strcmp (sGameFeature.c_str(), "VRR-HDMI") == 0)
11381141
{
11391142
bool hdmi_vrr = false;
1140-
dsVRRType_t vrrType;
1141-
getVRRStatus(portId, &vrrType);
1142-
if(vrrType == dsVRR_HDMI_VRR)
1143+
dsHdmiInVrrStatus_t vrrStatus;
1144+
getVRRStatus(portId, &vrrStatus);
1145+
if(vrrStatus.vrrType == dsVRR_HDMI_VRR)
11431146
hdmi_vrr = true;
11441147
LOGWARN("AVInput::getGameFeatureStatusWrapper HDMI VRR MODE:%d", hdmi_vrr);
11451148
response["mode"] = hdmi_vrr;
11461149
}
11471150
else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC") == 0)
11481151
{
11491152
bool freesync = false;
1150-
dsVRRType_t vrrType;
1151-
getVRRStatus(portId, &vrrType);
1152-
if(vrrType == dsVRR_AMD_FREESYNC)
1153+
dsHdmiInVrrStatus_t vrrStatus;
1154+
getVRRStatus(portId, &vrrStatus);
1155+
if(vrrStatus.vrrType == dsVRR_AMD_FREESYNC)
11531156
freesync = true;
11541157
LOGWARN("AVInput::getGameFeatureStatusWrapper FREESYNC MODE:%d", freesync);
11551158
response["mode"] = freesync;
11561159
}
11571160
else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC-PREMIUM") == 0)
11581161
{
11591162
bool freesync_premium = false;
1160-
dsVRRType_t vrrType;
1161-
getVRRStatus(portId, &vrrType);
1162-
if(vrrType == dsVRR_AMD_FREESYNC_PREMIUM)
1163+
dsHdmiInVrrStatus_t vrrStatus;
1164+
getVRRStatus(portId, &vrrStatus);
1165+
if(vrrStatus.vrrType == dsVRR_AMD_FREESYNC_PREMIUM)
11631166
freesync_premium = true;
11641167
LOGWARN("AVInput::getGameFeatureStatusWrapper FREESYNC PREMIUM MODE:%d", freesync_premium);
11651168
response["mode"] = freesync_premium;
11661169
}
11671170
else if(strcmp (sGameFeature.c_str(), "VRR-FREESYNC-PREMIUM-PRO") == 0)
11681171
{
11691172
bool freesync_premium_pro = false;
1170-
dsVRRType_t vrrType;
1171-
getVRRStatus(portId, &vrrType);
1172-
if(vrrType == dsVRR_AMD_FREESYNC_PREMIUM_PRO)
1173+
dsHdmiInVrrStatus_t vrrStatus;
1174+
getVRRStatus(portId, &vrrStatus);
1175+
if(vrrStatus.vrrType == dsVRR_AMD_FREESYNC_PREMIUM_PRO)
11731176
freesync_premium_pro = true;
11741177
LOGWARN("AVInput::getGameFeatureStatusWrapper FREESYNC PREMIUM PRO MODE:%d", freesync_premium_pro);
11751178
response["mode"] = freesync_premium_pro;
@@ -1198,19 +1201,20 @@ bool AVInput::getALLMStatus(int iPort)
11981201
return allm;
11991202
}
12001203

1201-
void AVInput::getVRRStatus(int iPort, dsVRRType_t *vrrType)
1204+
void AVInput::getVRRStatus(int iPort, dsHdmiInVrrStatus_t *vrrStatus)
12021205
{
1203-
1206+
bool ret = true;
12041207
try
12051208
{
1206-
device::HdmiInput::getInstance().getVRRStatus (iPort, vrrType);
1207-
LOGWARN("AVInput::getVRRStatus VRR TYPE: %d", *vrrType);
1209+
device::HdmiInput::getInstance().getVRRStatus (iPort, vrrStatus);
1210+
LOGWARN("AVInput::getVRRStatus VRR TYPE: %d, VRR FRAMERATE: %f", vrrStatus->vrrType,vrrStatus->vrrAmdfreesyncFramerate_Hz);
12081211
}
12091212
catch (const device::Exception& err)
12101213
{
12111214
LOG_DEVICE_EXCEPTION1(std::to_string(iPort));
1215+
ret = false;
12121216
}
1213-
1217+
return ret;
12141218
}
12151219

12161220
uint32_t AVInput::getRawSPDWrapper(const JsonObject& parameters, JsonObject& response)
@@ -1504,11 +1508,11 @@ bool AVInput::getVRRSupport(int portId,bool *vrrSupportValue)
15041508
uint32_t AVInput::getVRRSupportWrapper(const JsonObject& parameters, JsonObject& response)
15051509
{
15061510
LOGINFOMETHOD();
1511+
returnIfParamNotFound(parameters, "portId");
15071512
string sPortId = parameters["portId"].String();
15081513

15091514
int portId = 0;
15101515
bool vrrSupport = true;
1511-
returnIfParamNotFound(parameters, "portId");
15121516

15131517
try {
15141518
portId = stoi(sPortId);
@@ -1575,6 +1579,34 @@ uint32_t AVInput::setVRRSupportWrapper(const JsonObject& parameters, JsonObject&
15751579
}
15761580
}
15771581

1582+
uint32_t AVInput::getVRRFrameRateWrapper(const JsonObject& parameters, JsonObject& response)
1583+
{
1584+
LOGINFOMETHOD();
1585+
returnIfParamNotFound(parameters, "portId");
1586+
string sPortId = parameters["portId"].String();
1587+
1588+
int portId = 0;
1589+
dsHdmiInVrrStatus_t vrrStatus;
1590+
1591+
try {
1592+
portId = stoi(sPortId);
1593+
}catch (const std::exception& err) {
1594+
LOGWARN("sPortId invalid paramater: %s ", sPortId.c_str());
1595+
returnResponse(false);
1596+
}
1597+
1598+
bool result = getVRRStatus(portId, &vrrStatus);
1599+
if(result == true)
1600+
{
1601+
response["currentVRRVideoFrameRate"] = vrrStatus.vrrAmdfreesyncFramerate_Hz;
1602+
returnResponse(true);
1603+
}
1604+
else
1605+
{
1606+
returnResponse(false);
1607+
}
1608+
}
1609+
15781610
uint32_t AVInput::setEdidVersionWrapper(const JsonObject& parameters, JsonObject& response)
15791611
{
15801612
LOGINFOMETHOD();

0 commit comments

Comments
 (0)