Set the piid for the MediaPlayer AudioTrack
This enables the mapping between piid and portId in the AudioService.
The mapping is used for the playback mute notifications.
Test: dumpsys audio & atest android.media.audio.cts.AudioPlaybackConfigurationTest
Bug: 235521198
Change-Id: I60f0b154f7464fe6012e546c0a30e65220482181
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 8e19d02..f3cbdb0 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1805,7 +1805,8 @@
MediaPlayerService::AudioOutput::AudioOutput(audio_session_t sessionId,
const AttributionSourceState& attributionSource, const audio_attributes_t* attr,
const sp<AudioSystem::AudioDeviceCallback>& deviceCallback)
- : mCallback(NULL),
+ : mCachedPlayerIId(PLAYER_PIID_INVALID),
+ mCallback(NULL),
mCallbackCookie(NULL),
mCallbackData(NULL),
mStreamType(AUDIO_STREAM_MUSIC),
@@ -2314,6 +2315,10 @@
return t->applyVolumeShaper(shaper.mConfiguration, operationToEnd);
});
+ if (mCachedPlayerIId != PLAYER_PIID_INVALID) {
+ t->setPlayerIId(mCachedPlayerIId);
+ }
+
mSampleRateHz = sampleRate;
mFlags = flags;
mMsecsPerFrame = 1E3f / (mPlaybackRate.mSpeed * sampleRate);
@@ -2366,6 +2371,17 @@
return NO_INIT;
}
+void MediaPlayerService::AudioOutput::setPlayerIId(int32_t playerIId)
+{
+ ALOGV("setPlayerIId(%d)", playerIId);
+ Mutex::Autolock lock(mLock);
+ mCachedPlayerIId = playerIId;
+
+ if (mTrack != nullptr) {
+ mTrack->setPlayerIId(mCachedPlayerIId);
+ }
+}
+
void MediaPlayerService::AudioOutput::setNextOutput(const sp<AudioOutput>& nextOutput) {
Mutex::Autolock lock(mLock);
mNextOutput = nextOutput;