diff options
author | dhavalc <dhavalc@google.com> | 2023-02-01 09:14:00 +0000 |
---|---|---|
committer | dhavalc <dhavalc@google.com> | 2023-02-10 18:50:15 +0000 |
commit | aceadd0b885d07f1fb805a8b334c36d466508aa1 (patch) | |
tree | ce1707d526e878d7632b85db2f658fb104a19d95 | |
parent | b1c779b9291172543706b419c8704da727a38e60 (diff) | |
download | ImsMedia-aceadd0b885d07f1fb805a8b334c36d466508aa1.tar.gz |
Added implementation to handle audio media direction on IAudioSource node
Fix: 267299910
Test: Tested with hold/unhold cases and direction reflected properly
Change-Id: Ifbd6565df26321b5211098b437e20700c0b63a60
4 files changed, 22 insertions, 2 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/ImsMediaAudioSource.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/ImsMediaAudioSource.cpp index 348cd0a3..9117e0ad 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/ImsMediaAudioSource.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/ImsMediaAudioSource.cpp @@ -49,6 +49,7 @@ ImsMediaAudioSource::ImsMediaAudioSource() mEvsBitRate = 0; mEvsChAwOffset = 0; mIsEvsInitialized = false; + mMediaDirection = 0; } ImsMediaAudioSource::~ImsMediaAudioSource() {} @@ -98,6 +99,11 @@ void ImsMediaAudioSource::SetEvsBandwidth(int32_t evsBandwidth) mEvsBandwidth = (kEvsBandwidth)evsBandwidth; } +void ImsMediaAudioSource::SetMediaDirection(int32_t direction) +{ + mMediaDirection = direction; +} + bool ImsMediaAudioSource::Start() { char kMimeType[128] = {'\0'}; diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/include/ImsMediaAudioSource.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/include/ImsMediaAudioSource.h index cd484db7..63ed1ad7 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/include/ImsMediaAudioSource.h +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/include/ImsMediaAudioSource.h @@ -95,6 +95,13 @@ public: void SetEvsChAwOffset(int32_t offset); /** + * @brief Sets audio media direction of the RTP session + * + * @param direction can be NO_FLOW, SEND_ONLY, RECEIVE_ONLY, SEND_RECEIVE, INACTIVE + */ + void SetMediaDirection(int32_t direction); + + /** * @brief Starts aaudio and ndk audio codec to get the audio frame and encode the audio frames * with given configuration * @@ -141,6 +148,7 @@ private: int32_t mEvsChAwOffset; ImsMediaCondition mConditionExit; bool mIsEvsInitialized; + int32_t mMediaDirection; }; #endif diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioSourceNode.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioSourceNode.cpp index 43f09cb7..9e0fe4e0 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioSourceNode.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioSourceNode.cpp @@ -32,6 +32,7 @@ IAudioSourceNode::IAudioSourceNode(BaseSessionCallback* callback) : mCodecMode = 0; mRunningCodecMode = 0; mFirstFrame = false; + mMediaDirection = 0; } IAudioSourceNode::~IAudioSourceNode() {} @@ -52,6 +53,7 @@ ImsMediaResult IAudioSourceNode::Start() mRunningCodecMode = ImsMediaAudioUtil::GetMaximumAmrMode(mCodecMode); mAudioSource->SetPtime(mPtime); mAudioSource->SetSamplingRate(mSamplingRate * 1000); + mAudioSource->SetMediaDirection(mMediaDirection); if (mCodecType == kAudioCodecEvs) { @@ -122,6 +124,7 @@ void IAudioSourceNode::SetConfig(void* config) mEvsChAwOffset = pConfig->getEvsParams().getChannelAwareMode(); } + mMediaDirection = pConfig->getMediaDirection(); mSamplingRate = pConfig->getSamplingRateKHz(); mPtime = pConfig->getPtimeMillis(); } @@ -140,7 +143,8 @@ bool IAudioSourceNode::IsSameConfig(void* config) if (mCodecType == kAudioCodecAmr || mCodecType == kAudioCodecAmrWb) { return (mCodecMode == pConfig->getAmrParams().getAmrMode() && - mSamplingRate == pConfig->getSamplingRateKHz()); + mSamplingRate == pConfig->getSamplingRateKHz() && + mMediaDirection == pConfig->getMediaDirection()); } else if (mCodecType == kAudioCodecEvs) { @@ -149,7 +153,8 @@ bool IAudioSourceNode::IsSameConfig(void* config) ImsMediaAudioUtil::FindMaxEvsBandwidthFromRange( pConfig->getEvsParams().getEvsBandwidth()) && mEvsChAwOffset == pConfig->getEvsParams().getChannelAwareMode() && - mSamplingRate == pConfig->getSamplingRateKHz()); + mSamplingRate == pConfig->getSamplingRateKHz() && + mMediaDirection == pConfig->getMediaDirection()); } } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioSourceNode.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioSourceNode.h index e96ac672..794e655e 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioSourceNode.h +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioSourceNode.h @@ -66,6 +66,7 @@ public: kEvsBandwidth mEvsBandwidth; int8_t mSamplingRate; int8_t mEvsChAwOffset; + int32_t mMediaDirection; }; #endif |