summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordhavalc <dhavalc@google.com>2023-03-30 10:18:58 +0000
committerdhavalc <dhavalc@google.com>2023-04-04 05:00:31 +0000
commitb8f9b2e19b229559fad0e853a98d227223871220 (patch)
treef186d135a1b04ab8d8a84a0df7782db6053ade71
parent079ac227d80cbfe1ab72f4f03abf2a91ac283c3b (diff)
downloadImsMedia-b8f9b2e19b229559fad0e853a98d227223871220.tar.gz
Added implementation for calling AoC decoder every 20ms from IAudioPlayerNode to avoid timing issue on AoC side when SID packets are flowing every 160ms when there is silence in call.
Fix: 275528243 Test: Tested with device and confirmed from logs that decoder is called even no data in jitter buffer Change-Id: I4bf874a8567504e085c40ade426f1aadc2c2bc71
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioPlayerNode.cpp16
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioPlayerNode.h1
2 files changed, 10 insertions, 7 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioPlayerNode.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioPlayerNode.cpp
index 9e57dc90..08975fb9 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioPlayerNode.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioPlayerNode.cpp
@@ -80,7 +80,6 @@ ImsMediaResult IAudioPlayerNode::ProcessStart()
IMLOGE0("[IAudioPlayer] Not able to start AudioPlayer");
}
- mFirstFrame = false;
mNodeState = kNodeStateRunning;
StartThread();
return RESULT_SUCCESS;
@@ -198,6 +197,7 @@ void* IAudioPlayerNode::run()
bool bMark = false;
uint32_t nSeqNum = 0;
uint64_t nNextTime = ImsMediaTimer::GetTimeInMicroSeconds();
+ bool isFirstFrameReceived = false;
while (true)
{
@@ -210,24 +210,28 @@ void* IAudioPlayerNode::run()
if (GetData(&subtype, &pData, &nDataSize, &nTimestamp, &bMark, &nSeqNum, &datatype) == true)
{
+ IMLOGD_PACKET2(IM_PACKET_LOG_AUDIO, "[run] write buffer size[%d], TS[%u]", nDataSize,
+ nTimestamp);
if (nDataSize != 0)
{
- IMLOGD_PACKET2(IM_PACKET_LOG_AUDIO, "[run] write buffer size[%d], TS[%u]",
- nDataSize, nTimestamp);
if (mAudioPlayer->onDataFrame(pData, nDataSize))
{
// send buffering complete message to client
- if (mFirstFrame == false)
+ if (isFirstFrameReceived == false)
{
mCallback->SendEvent(kImsMediaEventFirstPacketReceived,
reinterpret_cast<uint64_t>(new AudioConfig(*mConfig)));
- mFirstFrame = true;
+ isFirstFrameReceived = true;
}
}
}
-
DeleteData();
}
+ else if (isFirstFrameReceived)
+ {
+ IMLOGE0("[run] GetData returned 0 bytes");
+ mAudioPlayer->onDataFrame(nullptr, 0);
+ }
nNextTime += 20000;
uint64_t nCurrTime = ImsMediaTimer::GetTimeInMicroSeconds();
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioPlayerNode.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioPlayerNode.h
index a041f25f..afea1a56 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioPlayerNode.h
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioPlayerNode.h
@@ -49,7 +49,6 @@ private:
int32_t mCodecType;
uint32_t mMode;
ImsMediaCondition mCondition;
- bool mFirstFrame;
int8_t mEvsChannelAwOffset;
kEvsBandwidth mEvsBandwidth;
int8_t mSamplingRate;