summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordhavalc <dhavalc@google.com>2023-02-01 09:14:00 +0000
committerdhavalc <dhavalc@google.com>2023-02-10 18:50:15 +0000
commitaceadd0b885d07f1fb805a8b334c36d466508aa1 (patch)
treece1707d526e878d7632b85db2f658fb104a19d95
parentb1c779b9291172543706b419c8704da727a38e60 (diff)
downloadImsMedia-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
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/ImsMediaAudioSource.cpp6
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/android/include/ImsMediaAudioSource.h8
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/nodes/IAudioSourceNode.cpp9
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/nodes/IAudioSourceNode.h1
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