Merge "libwilhelm: Remove direct usage of TrackPlayerBase::mAudioTrack" into main am: 6a6c177d80 am: b85ecbb09a
Original change: https://android-review.googlesource.com/c/platform/frameworks/wilhelm/+/2928911
Change-Id: Ida3c79a11ace7369d8bb780912d1b90d5bfbd95e
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index 5df053d..134bf3d 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -623,7 +623,7 @@
//-----------------------------------------------------------------------------
void audioPlayer_auxEffectUpdate(CAudioPlayer* ap) {
- if ((ap->mTrackPlayer->mAudioTrack != 0) && (ap->mAuxEffect != 0)) {
+ if ((ap->mTrackPlayer->getAudioTrack() != 0) && (ap->mAuxEffect != 0)) {
android_fxSend_attach(ap, true, ap->mAuxEffect, ap->mVolume.mLevel + ap->mAuxSendLevel);
}
}
@@ -877,8 +877,9 @@
case android::GenericPlayer::kEventEndOfStream: {
audioPlayer_dispatch_headAtEnd_lockPlay(ap, true /*set state to paused?*/, true);
- if ((ap->mTrackPlayer->mAudioTrack != 0) && (!ap->mSeek.mLoopEnabled)) {
- ap->mTrackPlayer->mAudioTrack->stop();
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
+ if ((audioTrack != 0) && (!ap->mSeek.mLoopEnabled)) {
+ audioTrack->stop();
}
ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STOPPED, AUDIO_PORT_HANDLE_NONE);
}
@@ -1542,7 +1543,7 @@
// AudioTrack to adjust performance mode based on actual output flags
static void checkAndSetPerformanceModePost(CAudioPlayer *pAudioPlayer)
{
- audio_output_flags_t flags = pAudioPlayer->mTrackPlayer->mAudioTrack->getFlags();
+ audio_output_flags_t flags = pAudioPlayer->mTrackPlayer->getAudioTrack()->getFlags();
switch (pAudioPlayer->mPerformanceMode) {
case ANDROID_PERFORMANCE_MODE_LATENCY:
if ((flags & (AUDIO_OUTPUT_FLAG_FAST | AUDIO_OUTPUT_FLAG_RAW)) ==
@@ -1698,11 +1699,11 @@
j_env->ExceptionClear();
j_env->CallVoidMethod(pAudioPlayer->mAndroidConfiguration.mRoutingProxy,
midRoutingProxy_connect,
- (jlong)pAudioPlayer->mTrackPlayer->mAudioTrack.get());
+ (jlong)pAudioPlayer->mTrackPlayer->getAudioTrack().get());
if (j_env->ExceptionCheck()) {
SL_LOGE("Java exception releasing player routing object.");
result = SL_RESULT_INTERNAL_ERROR;
- pAudioPlayer->mTrackPlayer->mAudioTrack.clear();
+ pAudioPlayer->mTrackPlayer->clearAudioTrack();
return result;
}
}
@@ -1988,8 +1989,9 @@
// get the content sample rate
uint32_t contentRate = sles_to_android_sampleRate(ap->mSampleRateMilliHz);
// apply the SL ES playback rate on the AudioTrack as a factor of its content sample rate
- if (ap->mTrackPlayer->mAudioTrack != 0) {
- ap->mTrackPlayer->mAudioTrack->setSampleRate(contentRate * (rate/1000.0f));
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
+ if (audioTrack != 0) {
+ audioTrack->setSampleRate(contentRate * (rate/1000.0f));
}
}
break;
@@ -2195,8 +2197,10 @@
SLuint32 playState = ap->mPlay.mState;
audio_port_handle_t deviceId = AUDIO_PORT_HANDLE_NONE;
- if (ap->mTrackPlayer != 0 && ap->mTrackPlayer->mAudioTrack != 0) {
- deviceId = ap->mTrackPlayer->mAudioTrack->getRoutedDeviceId();
+ android::sp<android::AudioTrack> audioTrack =
+ ap->mTrackPlayer != 0 ? ap->mTrackPlayer->getAudioTrack() : nullptr;
+ if (audioTrack != 0) {
+ deviceId = audioTrack->getRoutedDeviceId();
}
switch (ap->mAndroidObjType) {
@@ -2212,7 +2216,7 @@
break;
case SL_PLAYSTATE_PLAYING:
SL_LOGV("setting AudioPlayer to SL_PLAYSTATE_PLAYING");
- if (ap->mTrackPlayer->mAudioTrack != 0) {
+ if (audioTrack != 0) {
// instead of ap->mTrackPlayer->mAudioTrack->start();
if (!ap->mDeferredStart) {
// state change
@@ -2268,19 +2272,20 @@
/*switch (ap->mAndroidObjType) {
case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE:*/
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
if (ap->mAPlayer != 0) {
- assert(ap->mTrackPlayer->mAudioTrack == 0);
+ assert(audioTrack == 0);
ap->mAPlayer->setPlayEvents((int32_t) eventFlags, (int32_t) pPlayItf->mMarkerPosition,
(int32_t) pPlayItf->mPositionUpdatePeriod);
return;
}
- if (ap->mTrackPlayer->mAudioTrack == 0) {
+ if (audioTrack == 0) {
return;
}
if (eventFlags & SL_PLAYEVENT_HEADATMARKER) {
- ap->mTrackPlayer->mAudioTrack->setMarkerPosition(
+ audioTrack->setMarkerPosition(
(uint32_t) (
(int64_t) pPlayItf->mMarkerPosition *
sles_to_android_sampleRate(ap->mSampleRateMilliHz) /
@@ -2288,16 +2293,16 @@
));
} else {
// clear marker
- ap->mTrackPlayer->mAudioTrack->setMarkerPosition(0);
+ audioTrack->setMarkerPosition(0);
}
if (eventFlags & SL_PLAYEVENT_HEADATNEWPOS) {
- ap->mTrackPlayer->mAudioTrack->setPositionUpdatePeriod(
+ audioTrack->setPositionUpdatePeriod(
(uint32_t)((((int64_t)pPlayItf->mPositionUpdatePeriod
* sles_to_android_sampleRate(ap->mSampleRateMilliHz)))/1000));
} else {
// clear periodic update
- ap->mTrackPlayer->mAudioTrack->setPositionUpdatePeriod(0);
+ audioTrack->setPositionUpdatePeriod(0);
}
if (eventFlags & SL_PLAYEVENT_HEADATEND) {
@@ -2348,16 +2353,18 @@
CAudioPlayer *ap = (CAudioPlayer *)pPlayItf->mThis;
switch (ap->mAndroidObjType) {
- case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE:
- if (ap->mSampleRateMilliHz == UNKNOWN_SAMPLERATE || ap->mTrackPlayer->mAudioTrack == 0) {
+ case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE: {
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
+ if (ap->mSampleRateMilliHz == UNKNOWN_SAMPLERATE || audioTrack == 0) {
*pPosMsec = 0;
} else {
uint32_t positionInFrames;
- ap->mTrackPlayer->mAudioTrack->getPosition(&positionInFrames);
+ audioTrack->getPosition(&positionInFrames);
*pPosMsec = ((int64_t)positionInFrames * 1000) /
sles_to_android_sampleRate(ap->mSampleRateMilliHz);
}
break;
+ }
case AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE: // intended fall-through
case AUDIOPLAYER_FROM_URIFD:
@@ -2447,9 +2454,10 @@
// the AudioTrack associated with the AudioPlayer receiving audio from a PCM buffer
// queue was stopped when the queue become empty, we restart as soon as a new buffer
// has been enqueued since we're in playing state
- if (ap->mTrackPlayer->mAudioTrack != 0) {
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
+ if (audioTrack != 0) {
ap->mTrackPlayer->reportEvent(android::PLAYER_STATE_STARTED,
- ap->mTrackPlayer->mAudioTrack->getRoutedDeviceId());
+ audioTrack->getRoutedDeviceId());
// instead of ap->mTrackPlayer->mAudioTrack->start();
ap->mDeferredStart = true;
}
@@ -2484,11 +2492,13 @@
switch (ap->mAndroidObjType) {
//-----------------------------------
// AudioTrack
- case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE:
- if (ap->mTrackPlayer->mAudioTrack != 0) {
- ap->mTrackPlayer->mAudioTrack->flush();
+ case AUDIOPLAYER_FROM_PCM_BUFFERQUEUE: {
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
+ if (audioTrack != 0) {
+ audioTrack->flush();
}
break;
+ }
default:
result = SL_RESULT_INTERNAL_ERROR;
break;
diff --git a/src/android/android_Effect.cpp b/src/android/android_Effect.cpp
index c87e584..8d7607e 100644
--- a/src/android/android_Effect.cpp
+++ b/src/android/android_Effect.cpp
@@ -511,8 +511,9 @@
// mAPlayer == 0 && mAudioTrack != 0 means playing PCM audio
// mAPlayer == 0 && mAudioTrack == 0 means player not fully configured yet
// The asserts document and verify this.
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
if (ap->mAPlayer != 0) {
- assert(ap->mTrackPlayer->mAudioTrack == 0);
+ assert(audioTrack == 0);
if (attach) {
ap->mAPlayer->attachAuxEffect(pFx->id());
ap->mAPlayer->setAuxEffectSendLevel( sles_to_android_amplification(sendLevel) );
@@ -522,7 +523,7 @@
return android::NO_ERROR;
}
- if (ap->mTrackPlayer->mAudioTrack == 0) {
+ if (audioTrack == 0) {
// the player doesn't have an AudioTrack at the moment, so store this info to use it
// when the AudioTrack becomes available
if (attach) {
@@ -536,16 +537,15 @@
}
if (attach) {
- android::status_t status = ap->mTrackPlayer->mAudioTrack->attachAuxEffect(pFx->id());
+ android::status_t status = audioTrack->attachAuxEffect(pFx->id());
//SL_LOGV("attachAuxEffect(%d) returned %d", pFx->id(), status);
if (android::NO_ERROR == status) {
- status =
- ap->mTrackPlayer->mAudioTrack->setAuxEffectSendLevel(
- sles_to_android_amplification(sendLevel) );
+ status = audioTrack->setAuxEffectSendLevel(
+ sles_to_android_amplification(sendLevel) );
}
return status;
} else {
- return ap->mTrackPlayer->mAudioTrack->attachAuxEffect(0);
+ return audioTrack->attachAuxEffect(0);
}
}
@@ -593,17 +593,18 @@
// we keep track of the send level, independently of the current audio player level
ap->mAuxSendLevel = sendLevel - ap->mVolume.mLevel;
+ auto audioTrack = ap->mTrackPlayer->getAudioTrack();
if (ap->mAPlayer != 0) {
- assert(ap->mTrackPlayer->mAudioTrack == 0);
+ assert(audioTrack == 0);
ap->mAPlayer->setAuxEffectSendLevel( sles_to_android_amplification(sendLevel) );
return android::NO_ERROR;
}
- if (ap->mTrackPlayer->mAudioTrack == 0) {
+ if (audioTrack == 0) {
return android::NO_ERROR;
}
- return ap->mTrackPlayer->mAudioTrack->setAuxEffectSendLevel(
+ return audioTrack->setAuxEffectSendLevel(
sles_to_android_amplification(sendLevel) );
}
diff --git a/src/itf/IAndroidConfiguration.cpp b/src/itf/IAndroidConfiguration.cpp
index 412ef70..f3d23e1 100644
--- a/src/itf/IAndroidConfiguration.cpp
+++ b/src/itf/IAndroidConfiguration.cpp
@@ -154,7 +154,7 @@
SLresult result;
IObject* configObj = iConfig->mThis; // get corresponding object
- android::AudioTrack* pAudioTrack = ((CAudioPlayer*)configObj)->mTrackPlayer->mAudioTrack.get();
+ auto audioTrack = ((CAudioPlayer*)configObj)->mTrackPlayer->getAudioTrack();
JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
@@ -163,7 +163,7 @@
jobject localObjRef =
j_env->NewObject(gClsAudioTrackRoutingProxy,
gMidAudioTrackRoutingProxy_ctor,
- (jlong)pAudioTrack /*audioTrackObjInLong*/);
+ (jlong)audioTrack.get() /*audioTrackObjInLong*/);
*proxyObj = j_env->NewGlobalRef(localObjRef);
@@ -381,4 +381,3 @@
thiz->mItf->ReleaseJavaProxy(&thiz->mItf, SL_ANDROID_JAVA_PROXY_ROUTING);
}
}
-
diff --git a/src/itf/IAndroidEffect.cpp b/src/itf/IAndroidEffect.cpp
index 6748561..e17ad7b 100644
--- a/src/itf/IAndroidEffect.cpp
+++ b/src/itf/IAndroidEffect.cpp
@@ -28,7 +28,7 @@
IAndroidEffect *thiz = (IAndroidEffect *) self;
if (SL_OBJECTID_AUDIOPLAYER == IObjectToObjectID(thiz->mThis)) {
CAudioPlayer *ap = (CAudioPlayer *)thiz->mThis;
- if (ap->mTrackPlayer->mAudioTrack != 0) {
+ if (ap->mTrackPlayer->getAudioTrack() != 0) {
result = android_genericFx_createEffect(thiz, effectImplementationId, ap->mSessionId);
} else {
result = SL_RESULT_RESOURCE_ERROR;
diff --git a/src/locks.cpp b/src/locks.cpp
index f3edd33..d2d7cb5 100644
--- a/src/locks.cpp
+++ b/src/locks.cpp
@@ -228,7 +228,7 @@
ap->mPrefetchStatus.mDeferredPrefetchContext = NULL;
ap->mPrefetchStatus.mDeferredPrefetchEvents = SL_PREFETCHEVENT_NONE;
if (ap->mDeferredStart) {
- audioTrack = ap->mTrackPlayer->mAudioTrack;
+ audioTrack = ap->mTrackPlayer->getAudioTrack();
ap->mDeferredStart = false;
}
}