Skip to content

Commit a927f06

Browse files
RDKEMW-6582: Improve the ARC volume logo smoothness during the Volume +/- press and hold scenario (#215)
Co-authored-by: [email protected] <[email protected]>
1 parent 71b8500 commit a927f06

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

HdmiCecSink/HdmiCecSink.cpp

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
#define HDMICECSINK_NUMBER_TV_ADDR 2
7676
#define HDMICECSINK_UPDATE_POWER_STATUS_INTERVA_MS (60 * 1000)
7777
#define HDMISINK_ARC_START_STOP_MAX_WAIT_MS 4000
78-
#define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 500
78+
#define HDMICECSINK_UPDATE_AUDIO_STATUS_INTERVAL_MS 2000
7979

8080

8181
#define SAD_FMT_CODE_AC3 2
@@ -710,6 +710,7 @@ namespace WPEFramework
710710
m_isHdmiInConnected = false;
711711
hdmiCecAudioDeviceConnected = false;
712712
m_isAudioStatusInfoUpdated = false;
713+
m_audioStatusRequestedCount = 0;
713714
m_audioStatusReceived = false;
714715
m_audioStatusTimerStarted = false;
715716
m_audioDevicePowerStatusRequested = false;
@@ -1161,9 +1162,11 @@ namespace WPEFramework
11611162
LOGINFO("AudioStatus received from the Audio Device and the timer is still active. So stopping the timer!\n");
11621163
m_audioStatusDetectionTimer.stop();
11631164
}
1164-
LOGINFO("AudioStatus received from the Audio Device. Updating the AudioStatus info! m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
1165+
LOGINFO("AudioStatus received from the Audio Device. Updating the AudioStatus info! m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
11651166
}
1166-
LOGINFO("Command: ReportAudioStatus %s audio Mute status %d means %s and current Volume level is %d \n",GetOpName(msg.opCode()),msg.status.getAudioMuteStatus(),msg.status.toString().c_str(),msg.status.getAudioVolume());
1167+
if(m_audioStatusRequestedCount > 0)
1168+
m_audioStatusRequestedCount--;
1169+
LOGINFO("Command: ReportAudioStatus %s audio Mute status %d means %s and current Volume level is %d \n",GetOpName(msg.opCode()),msg.status.getAudioMuteStatus(),msg.status.toString().c_str(),msg.status.getAudioVolume());
11671170
params["muteStatus"] = msg.status.getAudioMuteStatus();
11681171
params["volumeLevel"] = msg.status.getAudioVolume();
11691172
sendNotify(eventString[HDMICECSINK_EVENT_REPORT_AUDIO_STATUS], params);
@@ -1355,7 +1358,15 @@ namespace WPEFramework
13551358
return;
13561359
if(!(_instance->smConnection))
13571360
return;
1361+
if (m_audioStatusDetectionTimer.isActive())
1362+
{
1363+
LOGINFO("Stopping the Audio Status Timer!\n");
1364+
m_audioStatusDetectionTimer.stop();
1365+
m_audioStatusTimerStarted = false;
1366+
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
1367+
}
13581368
LOGINFO(" Send GiveAudioStatus ");
1369+
m_audioStatusRequestedCount++;
13591370
_instance->smConnection->sendTo(LogicalAddress::AUDIO_SYSTEM,MessageEncoder().encode(GiveAudioStatus()), 100);
13601371

13611372
}
@@ -2497,10 +2508,11 @@ namespace WPEFramework
24972508
m_audioStatusDetectionTimer.stop();
24982509
}
24992510
m_isAudioStatusInfoUpdated = false;
2511+
m_audioStatusRequestedCount = 0;
25002512
m_audioStatusReceived = false;
25012513
m_audioStatusTimerStarted = false;
2502-
LOGINFO("Audio device removed, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
2503-
sendNotify(eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params);
2514+
LOGINFO("Audio device removed, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
2515+
sendNotify(eventString[HDMICECSINK_EVENT_AUDIO_DEVICE_CONNECTED_STATUS], params);
25042516
}
25052517

25062518
_instance->deviceList[logicalAddress].m_isRequestRetry = 0;
@@ -3121,10 +3133,10 @@ namespace WPEFramework
31213133
m_audioStatusDetectionTimer.stop();
31223134
}
31233135
m_isAudioStatusInfoUpdated = false;
3136+
m_audioStatusRequestedCount = 0;
31243137
m_audioStatusReceived = false;
31253138
m_audioStatusTimerStarted = false;
3126-
LOGINFO("CEC Disabled, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusReceived,m_audioStatusTimerStarted);
3127-
3139+
LOGINFO("CEC Disabled, reset the audio status info. m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ", m_isAudioStatusInfoUpdated,m_audioStatusRequestedCount,m_audioStatusReceived,m_audioStatusTimerStarted);
31283140

31293141
for(int i=0; i< 16; i++)
31303142
{
@@ -3361,6 +3373,8 @@ namespace WPEFramework
33613373
keyInfo = _instance->m_SendKeyQueue.front();
33623374
_instance->m_SendKeyQueue.pop();
33633375

3376+
if((keyInfo.logicalAddr != 0x5) || ((keyInfo.logicalAddr == 0x5) && (_instance->hdmiCecAudioDeviceConnected == true)))
3377+
{
33643378
if(keyInfo.UserControl == "sendUserControlPressed" )
33653379
{
33663380
LOGINFO("sendUserControlPressed : logical addr:0x%x keyCode: 0x%x queue size :%zu \n",keyInfo.logicalAddr,keyInfo.keyCode,_instance->m_SendKeyQueue.size());
@@ -3380,16 +3394,16 @@ namespace WPEFramework
33803394

33813395
if((_instance->m_SendKeyQueue.size()<=1 || (_instance->m_SendKeyQueue.size() % 2 == 0)) && ((keyInfo.keyCode == VOLUME_UP) || (keyInfo.keyCode == VOLUME_DOWN) || (keyInfo.keyCode == MUTE)) )
33823396
{
3397+
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusRequestedCount :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusRequestedCount,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted);
33833398
if(keyInfo.keyCode == MUTE)
33843399
{
33853400
_instance->sendGiveAudioStatusMsg();
33863401
}
33873402
else
33883403
{
3389-
LOGINFO("m_isAudioStatusInfoUpdated :%d, m_audioStatusReceived :%d, m_audioStatusTimerStarted:%d ",_instance->m_isAudioStatusInfoUpdated,_instance->m_audioStatusReceived,_instance->m_audioStatusTimerStarted);
33903404
if (!_instance->m_isAudioStatusInfoUpdated)
33913405
{
3392-
if ( !(_instance->m_audioStatusDetectionTimer.isActive()))
3406+
if ((!(_instance->m_audioStatusDetectionTimer.isActive())) && (_instance->m_audioStatusRequestedCount == 0))
33933407
{
33943408
LOGINFO("Audio status info not updated. Starting the Timer!");
33953409
_instance->m_audioStatusTimerStarted = true;
@@ -3404,6 +3418,7 @@ namespace WPEFramework
34043418
}
34053419
}
34063420
}
3421+
}
34073422
}
34083423

34093424
}//while(!_instance->m_sendKeyEventThreadExit)

HdmiCecSink/HdmiCecSink.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ namespace WPEFramework {
673673
bool m_isAudioStatusInfoUpdated;
674674
bool m_audioStatusReceived;
675675
bool m_audioStatusTimerStarted;
676+
int m_audioStatusRequestedCount;
676677
std::thread m_sendKeyEventThread;
677678
std::mutex m_sendKeyEventMutex;
678679
std::queue<SendKeyInfo> m_SendKeyQueue;

0 commit comments

Comments
 (0)