m_device = *(data->device);
}
m_extError = false;
- m_extSilence = false;
+ m_extSilenceTimer = 0;
ReturnBuffers();
OpenSink();
switch (signal)
{
case CSinkControlProtocol::SILENCEMODE:
- m_extSilence = *(bool*)msg->data;
- if (CSettings::Get().GetBool("audiooutput.streamsilence"))
- m_extSilence = true;
- if (m_extSilence)
+ bool silencemode;
+ silencemode = *(bool*)msg->data;
+ if (silencemode)
+ m_extSilenceTimeout = XbmcThreads::EndTime::InfiniteValue;
+ else
+ m_extSilenceTimeout = CSettings::Get().GetInt("audiooutput.streamsilence") * 60000;
+ m_extSilenceTimer.Set(m_extSilenceTimeout);
+ if (!m_extSilenceTimer.IsTimePast())
{
m_state = S_TOP_CONFIGURED_SILENCE;
m_extTimeout = 0;
{
m_state = S_TOP_CONFIGURED_PLAY;
m_extTimeout = delay / 2;
+ m_extSilenceTimer.Set(m_extSilenceTimeout);
}
return;
default:
switch (signal)
{
case CSinkControlProtocol::TIMEOUT:
- if (m_extSilence)
+ if (!m_extSilenceTimer.IsTimePast())
{
m_state = S_TOP_CONFIGURED_SILENCE;
m_extTimeout = 0;
m_sink = NULL;
m_state = S_TOP_CONFIGURED_SUSPEND;
}
+ else
+ m_state = S_TOP_CONFIGURED_PLAY;
m_extTimeout = 0;
return;
default:
bool m_bStateMachineSelfTrigger;
int m_extTimeout;
bool m_extError;
- bool m_extSilence;
+ int m_extSilenceTimeout;
+ XbmcThreads::EndTime m_extSilenceTimer;
CSampleBuffer m_sampleOfSilence;
uint8_t *m_convertBuffer;