MP2: replace AudioSystem APIs with public ones in mediaplayer2.cpp
Bug: 112549970
Test: MediaPlayer2Test, RoutingTest
Change-Id: Ib2520c29370dee88667e64044b3fcdc053623dbf
diff --git a/media/libmediaplayer2/JAudioTrack.cpp b/media/libmediaplayer2/JAudioTrack.cpp
index cb139c9..d42bb1e 100644
--- a/media/libmediaplayer2/JAudioTrack.cpp
+++ b/media/libmediaplayer2/JAudioTrack.cpp
@@ -34,7 +34,7 @@
callback_t cbf, // Offload
void* user, // Offload
size_t frameCount, // bufferSizeInBytes
- audio_session_t sessionId, // AudioTrack
+ int32_t sessionId, // AudioTrack
const jobject attributes, // AudioAttributes
float maxRequiredSpeed) { // bufferSizeInBytes
@@ -496,11 +496,11 @@
return env->CallObjectMethod(mAudioTrackObj, jGetRoutedDevice);
}
-audio_session_t JAudioTrack::getAudioSessionId() {
+int32_t JAudioTrack::getAudioSessionId() {
JNIEnv *env = JavaVMHelper::getJNIEnv();
jmethodID jGetAudioSessionId = env->GetMethodID(mAudioTrackCls, "getAudioSessionId", "()I");
jint sessionId = env->CallIntMethod(mAudioTrackObj, jGetAudioSessionId);
- return (audio_session_t) sessionId;
+ return sessionId;
}
status_t JAudioTrack::setPreferredDevice(jobject device) {
diff --git a/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
index 7457d84..98a3e75 100644
--- a/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
+++ b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
@@ -59,7 +59,7 @@
return NO_ERROR;
}
-MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(audio_session_t sessionId, uid_t uid, int pid,
+MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(int32_t sessionId, uid_t uid, int pid,
const jobject attributes)
: mCallback(nullptr),
mCallbackCookie(nullptr),
@@ -623,14 +623,14 @@
data->unlock();
}
-audio_session_t MediaPlayer2AudioOutput::getSessionId() const {
+int32_t MediaPlayer2AudioOutput::getSessionId() const {
Mutex::Autolock lock(mLock);
return mSessionId;
}
-void MediaPlayer2AudioOutput::setSessionId(const audio_session_t id) {
+void MediaPlayer2AudioOutput::setSessionId(const int32_t sessionId) {
Mutex::Autolock lock(mLock);
- mSessionId = id;
+ mSessionId = sessionId;
}
uint32_t MediaPlayer2AudioOutput::getSampleRate() const {
diff --git a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
index 13cf85a..8ea70ef 100644
--- a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
+++ b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
@@ -114,7 +114,7 @@
callback_t cbf,
void* user,
size_t frameCount = 0,
- audio_session_t sessionId = AUDIO_SESSION_ALLOCATE,
+ int32_t sessionId = AUDIO_SESSION_ALLOCATE,
const jobject pAttributes = NULL,
float maxRequiredSpeed = 1.0f);
@@ -341,7 +341,7 @@
jobject getRoutedDevice();
/* Returns the ID of the audio session this AudioTrack belongs to. */
- audio_session_t getAudioSessionId();
+ int32_t getAudioSessionId();
/* Sets the preferred audio device to use for output of this AudioTrack.
*
diff --git a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
index fc020ca..bda4f61 100644
--- a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
+++ b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
@@ -38,7 +38,7 @@
class CallbackData;
public:
- MediaPlayer2AudioOutput(audio_session_t sessionId,
+ MediaPlayer2AudioOutput(int32_t sessionId,
uid_t uid,
int pid,
const jobject attributes);
@@ -57,8 +57,8 @@
virtual status_t getTimestamp(AudioTimestamp &ts) const;
virtual int64_t getPlayedOutDurationUs(int64_t nowUs) const;
virtual status_t getFramesWritten(uint32_t *frameswritten) const;
- virtual audio_session_t getSessionId() const;
- virtual void setSessionId(const audio_session_t id);
+ virtual int32_t getSessionId() const;
+ virtual void setSessionId(const int32_t id);
virtual uint32_t getSampleRate() const;
virtual int64_t getBufferDurationInUs() const;
@@ -117,7 +117,7 @@
uint32_t mSampleRateHz; // sample rate of the content, as set in open()
float mMsecsPerFrame;
size_t mFrameSize;
- audio_session_t mSessionId;
+ int32_t mSessionId;
uid_t mUid;
int mPid;
float mSendLevel;
diff --git a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2Interface.h b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2Interface.h
index 07a7946..4b19e38 100644
--- a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2Interface.h
+++ b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2Interface.h
@@ -94,7 +94,7 @@
virtual status_t getTimestamp(AudioTimestamp &ts) const = 0;
virtual int64_t getPlayedOutDurationUs(int64_t nowUs) const = 0;
virtual status_t getFramesWritten(uint32_t *frameswritten) const = 0;
- virtual audio_session_t getSessionId() const = 0;
+ virtual int32_t getSessionId() const = 0;
virtual audio_stream_type_t getAudioStreamType() const = 0;
virtual uint32_t getSampleRate() const = 0;
virtual int64_t getBufferDurationInUs() const = 0;
diff --git a/media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h b/media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h
index d881813..4bc1a4a 100644
--- a/media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h
+++ b/media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h
@@ -55,7 +55,7 @@
public:
~MediaPlayer2();
- static sp<MediaPlayer2> Create();
+ static sp<MediaPlayer2> Create(int32_t sessionId);
static status_t DumpAll(int fd, const Vector<String16>& args);
void disconnect();
@@ -96,8 +96,8 @@
void notify(int64_t srcId, int msg, int ext1, int ext2,
const PlayerMessage *obj = NULL);
status_t invoke(const PlayerMessage &request, PlayerMessage *reply);
- status_t setAudioSessionId(audio_session_t sessionId);
- audio_session_t getAudioSessionId();
+ status_t setAudioSessionId(int32_t sessionId);
+ int32_t getAudioSessionId();
status_t setAuxEffectSendLevel(float level);
status_t attachAuxEffect(int effectId);
status_t setAudioAttributes(const jobject attributes);
@@ -116,7 +116,7 @@
status_t dump(int fd, const Vector<String16>& args);
private:
- MediaPlayer2();
+ MediaPlayer2(int32_t sessionId);
bool init();
// Disconnect from the currently connected ANativeWindow.
@@ -150,7 +150,7 @@
float mVolume;
int mVideoWidth;
int mVideoHeight;
- audio_session_t mAudioSessionId;
+ int32_t mAudioSessionId;
sp<JObjectHolder> mAudioAttributes;
float mSendLevel;
sp<ANativeWindowWrapper> mConnectedWindow;
diff --git a/media/libmediaplayer2/mediaplayer2.cpp b/media/libmediaplayer2/mediaplayer2.cpp
index 04a6f68..921a5b7 100644
--- a/media/libmediaplayer2/mediaplayer2.cpp
+++ b/media/libmediaplayer2/mediaplayer2.cpp
@@ -218,8 +218,8 @@
} // anonymous namespace
//static
-sp<MediaPlayer2> MediaPlayer2::Create() {
- sp<MediaPlayer2> player = new MediaPlayer2();
+sp<MediaPlayer2> MediaPlayer2::Create(int32_t sessionId) {
+ sp<MediaPlayer2> player = new MediaPlayer2(sessionId);
if (!player->init()) {
return NULL;
@@ -236,7 +236,7 @@
return dumpPlayers(fd, args);
}
-MediaPlayer2::MediaPlayer2() {
+MediaPlayer2::MediaPlayer2(int32_t sessionId) {
ALOGV("constructor");
mSrcId = 0;
mLockThreadId = 0;
@@ -251,20 +251,17 @@
mLoop = false;
mVolume = 1.0;
mVideoWidth = mVideoHeight = 0;
- mAudioSessionId = (audio_session_t) AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_SESSION);
- AudioSystem::acquireAudioSessionId(mAudioSessionId, -1);
mSendLevel = 0;
// TODO: get pid and uid from JAVA
mPid = IPCThreadState::self()->getCallingPid();
mUid = IPCThreadState::self()->getCallingUid();
- mAudioOutput = new MediaPlayer2AudioOutput(mAudioSessionId, mUid, mPid, NULL /*attributes*/);
+ mAudioOutput = new MediaPlayer2AudioOutput(sessionId, mUid, mPid, NULL /*attributes*/);
}
MediaPlayer2::~MediaPlayer2() {
ALOGV("destructor");
- AudioSystem::releaseAudioSessionId(mAudioSessionId, -1);
disconnect();
removePlayer(this);
}
@@ -891,7 +888,7 @@
return OK;
}
-status_t MediaPlayer2::setAudioSessionId(audio_session_t sessionId) {
+status_t MediaPlayer2::setAudioSessionId(int32_t sessionId) {
ALOGV("MediaPlayer2::setAudioSessionId(%d)", sessionId);
Mutex::Autolock _l(mLock);
if (!(mCurrentState & MEDIA_PLAYER2_IDLE)) {
@@ -901,20 +898,18 @@
if (sessionId < 0) {
return BAD_VALUE;
}
- if (sessionId != mAudioSessionId) {
- AudioSystem::acquireAudioSessionId(sessionId, -1);
- AudioSystem::releaseAudioSessionId(mAudioSessionId, -1);
- mAudioSessionId = sessionId;
- }
- if (mAudioOutput != NULL && mAudioSessionId != mAudioOutput->getSessionId()) {
+ if (mAudioOutput != NULL && sessionId != mAudioOutput->getSessionId()) {
mAudioOutput->setSessionId(sessionId);
}
return NO_ERROR;
}
-audio_session_t MediaPlayer2::getAudioSessionId() {
+int32_t MediaPlayer2::getAudioSessionId() {
Mutex::Autolock _l(mLock);
- return mAudioSessionId;
+ if (mAudioOutput != NULL) {
+ return mAudioOutput->getSessionId();
+ }
+ return 0;
}
status_t MediaPlayer2::setAuxEffectSendLevel(float level) {