summaryrefslogtreecommitdiff
path: root/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp')
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp116
1 files changed, 59 insertions, 57 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
index 49efef54..e957cc3b 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
@@ -23,9 +23,18 @@ using namespace android;
AudioManager* AudioManager::sManager = nullptr;
-AudioManager::AudioManager() {}
+AudioManager::AudioManager()
+{
+ mRequestHandler.Init("AUDIO_REQUEST_EVENT");
+ mResponseHandler.Init("AUDIO_RESPONSE_EVENT");
+}
-AudioManager::~AudioManager() {}
+AudioManager::~AudioManager()
+{
+ mRequestHandler.Deinit();
+ mResponseHandler.Deinit();
+ sManager = nullptr;
+}
AudioManager* AudioManager::getInstance()
{
@@ -203,6 +212,22 @@ void AudioManager::setMediaQualityThreshold(int sessionId, MediaQualityThreshold
}
}
+void AudioManager::SendInternalEvent(
+ uint32_t event, uint64_t sessionId, uint64_t paramA, uint64_t paramB)
+{
+ auto session = mSessions.find(sessionId);
+ IMLOGI1("[SendInternalEvent] sessionId[%d]", sessionId);
+
+ if (session != mSessions.end())
+ {
+ (session->second)->SendInternalEvent(event, paramA, paramB);
+ }
+ else
+ {
+ IMLOGE1("[SendInternalEvent] no session id[%d]", sessionId);
+ }
+}
+
void AudioManager::sendMessage(const int sessionId, const android::Parcel& parcel)
{
int nMsg = parcel.readInt32();
@@ -283,35 +308,19 @@ void AudioManager::sendMessage(const int sessionId, const android::Parcel& parce
}
}
-void AudioManager::SendInternalEvent(
- uint32_t event, uint64_t sessionId, uint64_t paramA, uint64_t paramB)
-{
- auto session = mSessions.find(sessionId);
- IMLOGI1("[SendInternalEvent] sessionId[%d]", sessionId);
-
- if (session != mSessions.end())
- {
- (session->second)->SendInternalEvent(event, paramA, paramB);
- }
- else
- {
- IMLOGE1("[SendInternalEvent] no session id[%d]", sessionId);
- }
-}
-
-AudioManager::RequestHandler::RequestHandler() :
- ImsMediaEventHandler("AUDIO_REQUEST_EVENT")
-{
-}
-
-AudioManager::RequestHandler::~RequestHandler() {}
-
void AudioManager::RequestHandler::processEvent(
uint32_t event, uint64_t sessionId, uint64_t paramA, uint64_t paramB)
{
IMLOGI4("[processEvent] event[%d], sessionId[%d], paramA[%d], paramB[%d]", event, sessionId,
paramA, paramB);
ImsMediaResult result = RESULT_SUCCESS;
+
+ if (sManager == nullptr)
+ {
+ IMLOGE0("[processEvent] not ready");
+ return;
+ }
+
switch (event)
{
case kAudioOpenSession:
@@ -320,7 +329,7 @@ void AudioManager::RequestHandler::processEvent(
if (param != nullptr)
{
AudioConfig* pConfig = reinterpret_cast<AudioConfig*>(param->mConfig);
- result = AudioManager::getInstance()->openSession(
+ result = sManager->openSession(
static_cast<int>(sessionId), param->rtpFd, param->rtcpFd, pConfig);
if (result == RESULT_SUCCESS)
@@ -349,8 +358,7 @@ void AudioManager::RequestHandler::processEvent(
}
break;
case kAudioCloseSession:
- if (AudioManager::getInstance()->closeSession(static_cast<int>(sessionId)) ==
- RESULT_SUCCESS)
+ if (sManager->closeSession(static_cast<int>(sessionId)) == RESULT_SUCCESS)
{
ImsMediaEventHandler::SendEvent(
"AUDIO_RESPONSE_EVENT", kAudioSessionClosed, sessionId, 0, 0);
@@ -359,8 +367,7 @@ void AudioManager::RequestHandler::processEvent(
case kAudioModifySession:
{
AudioConfig* config = reinterpret_cast<AudioConfig*>(paramA);
- result =
- AudioManager::getInstance()->modifySession(static_cast<int>(sessionId), config);
+ result = sManager->modifySession(static_cast<int>(sessionId), config);
ImsMediaEventHandler::SendEvent(
"AUDIO_RESPONSE_EVENT", kAudioModifySessionResponse, sessionId, result, paramA);
}
@@ -368,7 +375,7 @@ void AudioManager::RequestHandler::processEvent(
case kAudioAddConfig:
{
AudioConfig* config = reinterpret_cast<AudioConfig*>(paramA);
- result = AudioManager::getInstance()->addConfig(static_cast<int>(sessionId), config);
+ result = sManager->addConfig(static_cast<int>(sessionId), config);
ImsMediaEventHandler::SendEvent(
"AUDIO_RESPONSE_EVENT", kAudioAddConfigResponse, sessionId, result, paramA);
}
@@ -376,8 +383,7 @@ void AudioManager::RequestHandler::processEvent(
case kAudioConfirmConfig:
{
AudioConfig* config = reinterpret_cast<AudioConfig*>(paramA);
- result =
- AudioManager::getInstance()->confirmConfig(static_cast<int>(sessionId), config);
+ result = sManager->confirmConfig(static_cast<int>(sessionId), config);
ImsMediaEventHandler::SendEvent(
"AUDIO_RESPONSE_EVENT", kAudioConfirmConfigResponse, sessionId, result, paramA);
}
@@ -387,7 +393,7 @@ void AudioManager::RequestHandler::processEvent(
AudioConfig* config = reinterpret_cast<AudioConfig*>(paramA);
if (config != nullptr)
{
- AudioManager::getInstance()->deleteConfig(static_cast<int>(sessionId), config);
+ sManager->deleteConfig(static_cast<int>(sessionId), config);
delete config;
}
}
@@ -397,8 +403,7 @@ void AudioManager::RequestHandler::processEvent(
EventParamDtmf* param = reinterpret_cast<EventParamDtmf*>(paramA);
if (param != nullptr)
{
- AudioManager::getInstance()->sendDtmf(
- static_cast<int>(sessionId), param->digit, param->duration);
+ sManager->sendDtmf(static_cast<int>(sessionId), param->digit, param->duration);
delete param;
}
}
@@ -410,8 +415,7 @@ void AudioManager::RequestHandler::processEvent(
if (listExtension != nullptr)
{
- AudioManager::getInstance()->sendRtpHeaderExtension(
- static_cast<int>(sessionId), listExtension);
+ sManager->sendRtpHeaderExtension(static_cast<int>(sessionId), listExtension);
delete listExtension;
}
}
@@ -421,34 +425,32 @@ void AudioManager::RequestHandler::processEvent(
MediaQualityThreshold* threshold = reinterpret_cast<MediaQualityThreshold*>(paramA);
if (threshold != nullptr)
{
- AudioManager::getInstance()->setMediaQualityThreshold(
- static_cast<int>(sessionId), threshold);
+ sManager->setMediaQualityThreshold(static_cast<int>(sessionId), threshold);
delete threshold;
}
}
break;
case kRequestAudioCmr:
case kRequestSendRtcpXrReport:
- AudioManager::getInstance()->SendInternalEvent(
- event, static_cast<int>(sessionId), paramA, paramB);
+ sManager->SendInternalEvent(event, static_cast<int>(sessionId), paramA, paramB);
break;
default:
break;
}
}
-AudioManager::ResponseHandler::ResponseHandler() :
- ImsMediaEventHandler("AUDIO_RESPONSE_EVENT")
-{
-}
-
-AudioManager::ResponseHandler::~ResponseHandler() {}
-
void AudioManager::ResponseHandler::processEvent(
uint32_t event, uint64_t sessionId, uint64_t paramA, uint64_t paramB)
{
IMLOGI4("[processEvent] event[%d], sessionId[%d], paramA[%d], paramB[%d]", event, sessionId,
paramA, paramB);
+
+ if (sManager == nullptr)
+ {
+ IMLOGE0("[processEvent] not ready");
+ return;
+ }
+
android::Parcel parcel;
switch (event)
{
@@ -461,7 +463,7 @@ void AudioManager::ResponseHandler::processEvent(
// fail reason
parcel.writeInt32(static_cast<int>(paramA));
}
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
break;
case kAudioModifySessionResponse: // fall through
case kAudioAddConfigResponse: // fall through
@@ -473,7 +475,7 @@ void AudioManager::ResponseHandler::processEvent(
if (config != nullptr)
{
config->writeToParcel(&parcel);
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
delete config;
}
}
@@ -485,7 +487,7 @@ void AudioManager::ResponseHandler::processEvent(
if (config != nullptr)
{
config->writeToParcel(&parcel);
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
delete config;
}
}
@@ -505,7 +507,7 @@ void AudioManager::ResponseHandler::processEvent(
extension.writeToParcel(&parcel);
}
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
delete listExtension;
}
}
@@ -517,7 +519,7 @@ void AudioManager::ResponseHandler::processEvent(
if (status != nullptr)
{
status->writeToParcel(&parcel);
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
delete status;
}
}
@@ -529,7 +531,7 @@ void AudioManager::ResponseHandler::processEvent(
parcel.writeInt32(event);
parcel.writeByte(static_cast<uint8_t>(paramA));
parcel.writeInt32(static_cast<int>(paramB));
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
break;
case kAudioCallQualityChangedInd:
{
@@ -538,7 +540,7 @@ void AudioManager::ResponseHandler::processEvent(
if (quality != nullptr)
{
quality->writeToParcel(&parcel);
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
delete quality;
}
}
@@ -546,7 +548,7 @@ void AudioManager::ResponseHandler::processEvent(
case kAudioSessionClosed:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(sessionId));
- AudioManager::getInstance()->sendResponse(sessionId, parcel);
+ sManager->sendResponse(sessionId, parcel);
break;
default:
break;