NetEQ-related bug in ACM
Fixing a bug when creating new NetEQ slave instances in ACM. The old code called WebRtcNetEQ_GetCurrentDelay() for the master instance to get a delay value for WebRtcNetEQ_SetExtraDelay(). This is wrong, since WebRtcNetEQ_GetCurrentDelay() reports on the current total buffer length, while WebRtcNetEQ_SetExtraDelay() is the extra delay that is desired to in order to sync with video. The fix includes keeping the extra delay value in a member variable in the ACMNetEQ class. Review URL: http://webrtc-codereview.appspot.com/295001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1001 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
543c3eaa46
commit
4257790d2d
@ -44,6 +44,7 @@ _numSlaves(0),
|
|||||||
_receivedStereo(false),
|
_receivedStereo(false),
|
||||||
_masterSlaveInfo(NULL),
|
_masterSlaveInfo(NULL),
|
||||||
_previousAudioActivity(AudioFrame::kVadUnknown),
|
_previousAudioActivity(AudioFrame::kVadUnknown),
|
||||||
|
_extraDelay(0),
|
||||||
_callbackCritSect(CriticalSectionWrapper::CreateCriticalSection())
|
_callbackCritSect(CriticalSectionWrapper::CreateCriticalSection())
|
||||||
{
|
{
|
||||||
for(int n = 0; n < MAX_NUM_SLAVE_NETEQ + 1; n++)
|
for(int n = 0; n < MAX_NUM_SLAVE_NETEQ + 1; n++)
|
||||||
@ -333,6 +334,7 @@ ACMNetEQ::SetExtraDelay(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_extraDelay = delayInMS;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1186,16 +1188,8 @@ ACMNetEQ::AddSlave(
|
|||||||
_numSlaves = 1;
|
_numSlaves = 1;
|
||||||
_isInitialized[slaveIdx] = true;
|
_isInitialized[slaveIdx] = true;
|
||||||
|
|
||||||
// Set Slave delay as Master delay
|
// Set Slave delay as all other instances.
|
||||||
WebRtc_UWord16 currentDelayMs;
|
if(WebRtcNetEQ_SetExtraDelay(_inst[slaveIdx], _extraDelay) < 0)
|
||||||
if(WebRtcNetEQ_GetCurrentDelay(_inst[0], ¤tDelayMs) < 0)
|
|
||||||
{
|
|
||||||
LogError("GetCurrentDelay", 0);
|
|
||||||
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, _id,
|
|
||||||
"AddSlave: AddSlave Failed, Could not Get Current Delay from Master.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(WebRtcNetEQ_SetExtraDelay(_inst[slaveIdx], currentDelayMs) < 0)
|
|
||||||
{
|
{
|
||||||
LogError("SetExtraDelay", slaveIdx);
|
LogError("SetExtraDelay", slaveIdx);
|
||||||
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, _id,
|
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, _id,
|
||||||
|
@ -401,6 +401,7 @@ private:
|
|||||||
bool _receivedStereo;
|
bool _receivedStereo;
|
||||||
void* _masterSlaveInfo;
|
void* _masterSlaveInfo;
|
||||||
AudioFrame::VADActivity _previousAudioActivity;
|
AudioFrame::VADActivity _previousAudioActivity;
|
||||||
|
WebRtc_Word32 _extraDelay;
|
||||||
|
|
||||||
CriticalSectionWrapper* _callbackCritSect;
|
CriticalSectionWrapper* _callbackCritSect;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user