Loading media/libmediaplayer2/MediaPlayer2AudioOutput.cpp +7 −22 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ status_t MediaPlayer2AudioOutput::dump(int fd, const Vector<String16>& args) con } MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(audio_session_t sessionId, uid_t uid, int pid, const jobject attributes, std::vector<jobject>& routingDelegatesBackup) const jobject attributes) : mCallback(nullptr), mCallbackCookie(nullptr), mCallbackData(nullptr), Loading @@ -77,20 +77,12 @@ MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(audio_session_t sessionId, uid_ mFlags(AUDIO_OUTPUT_FLAG_NONE) { ALOGV("MediaPlayer2AudioOutput(%d)", sessionId); if (mAttributes != nullptr) { mAttributes->~JObjectHolder(); } if (attributes != nullptr) { mAttributes = new JObjectHolder(attributes); } setMinBufferCount(); mRoutingDelegates.clear(); for (auto routingDelegate : routingDelegatesBackup) { mRoutingDelegates.push_back(std::pair<jobject, jobject>( JAudioTrack::getListener(routingDelegate), routingDelegate)); } routingDelegatesBackup.clear(); } MediaPlayer2AudioOutput::~MediaPlayer2AudioOutput() { Loading Loading @@ -251,11 +243,8 @@ status_t MediaPlayer2AudioOutput::getFramesWritten(uint32_t *frameswritten) cons void MediaPlayer2AudioOutput::setAudioAttributes(const jobject attributes) { Mutex::Autolock lock(mLock); if (mAttributes != nullptr) { mAttributes->~JObjectHolder(); } if (attributes != nullptr) { mAttributes = new JObjectHolder(attributes); sp<JObjectHolder> x = new JObjectHolder(attributes); } } Loading Loading @@ -564,15 +553,6 @@ status_t MediaPlayer2AudioOutput::removeAudioDeviceCallback(jobject listener) { return NO_ERROR; } void MediaPlayer2AudioOutput::copyAudioDeviceCallback( std::vector<jobject>& routingDelegateTarget) { ALOGV("copyAudioDeviceCallback"); for (std::vector<std::pair<jobject, jobject>>::iterator it = mRoutingDelegates.begin(); it != mRoutingDelegates.end(); it++) { routingDelegateTarget.push_back(it->second); } } // static void MediaPlayer2AudioOutput::CallbackWrapper( int event, void *cookie, void *info) { Loading Loading @@ -650,6 +630,11 @@ audio_session_t MediaPlayer2AudioOutput::getSessionId() const { return mSessionId; } void MediaPlayer2AudioOutput::setSessionId(const audio_session_t id) { Mutex::Autolock lock(mLock); mSessionId = id; } uint32_t MediaPlayer2AudioOutput::getSampleRate() const { Mutex::Autolock lock(mLock); if (mJAudioTrack == 0) { Loading media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h +2 −3 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public: MediaPlayer2AudioOutput(audio_session_t sessionId, uid_t uid, int pid, const jobject attributes, std::vector<jobject>& routingDelegatesBackup); const jobject attributes); virtual ~MediaPlayer2AudioOutput(); virtual bool ready() const { Loading @@ -59,6 +58,7 @@ public: 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 uint32_t getSampleRate() const; virtual int64_t getBufferDurationInUs() const; Loading Loading @@ -99,7 +99,6 @@ public: virtual jobject getRoutedDevice(); virtual status_t addAudioDeviceCallback(jobject routingDelegate); virtual status_t removeAudioDeviceCallback(jobject listener); virtual void copyAudioDeviceCallback(std::vector<jobject>& routingDelegateTarget); private: static void setMinBufferCount(); Loading media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h +0 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <mediaplayer2/MediaPlayer2Types.h> #include <mediaplayer2/JObjectHolder.h> #include <vector> #include <jni.h> #include <utils/Errors.h> #include <utils/Mutex.h> Loading Loading @@ -154,7 +153,6 @@ private: audio_session_t mAudioSessionId; sp<JObjectHolder> mAudioAttributes; float mSendLevel; std::vector<jobject> mRoutingDelegates; sp<ANativeWindowWrapper> mConnectedWindow; }; Loading media/libmediaplayer2/mediaplayer2.cpp +5 −8 Original line number Diff line number Diff line Loading @@ -258,6 +258,8 @@ MediaPlayer2::MediaPlayer2() { // TODO: get pid and uid from JAVA mPid = IPCThreadState::self()->getCallingPid(); mUid = IPCThreadState::self()->getCallingUid(); mAudioOutput = new MediaPlayer2AudioOutput(mAudioSessionId, mUid, mPid, NULL /*attributes*/); } MediaPlayer2::~MediaPlayer2() { Loading Loading @@ -352,14 +354,7 @@ status_t MediaPlayer2::setDataSource(const sp<DataSourceDesc> &dsd) { clear_l(); if (mAudioOutput != NULL) { mAudioOutput->copyAudioDeviceCallback(mRoutingDelegates); } player->setListener(new proxyListener(this)); mAudioOutput = new MediaPlayer2AudioOutput(mAudioSessionId, mUid, mPid, mAudioAttributes != NULL ? mAudioAttributes->getJObject() : NULL, mRoutingDelegates); player->setAudioSink(mAudioOutput); err = player->setDataSource(dsd); Loading Loading @@ -911,6 +906,9 @@ status_t MediaPlayer2::setAudioSessionId(audio_session_t sessionId) { AudioSystem::releaseAudioSessionId(mAudioSessionId, -1); mAudioSessionId = sessionId; } if (mAudioOutput != NULL && mAudioSessionId != mAudioOutput->getSessionId()) { mAudioOutput->setSessionId(sessionId); } return NO_ERROR; } Loading Loading @@ -1184,7 +1182,6 @@ status_t MediaPlayer2::addAudioDeviceCallback(jobject routingDelegate) { Mutex::Autolock _l(mLock); if (mAudioOutput == NULL) { ALOGV("addAudioDeviceCallback: player not init"); mRoutingDelegates.push_back(routingDelegate); return NO_INIT; } return mAudioOutput->addAudioDeviceCallback(routingDelegate); Loading Loading
media/libmediaplayer2/MediaPlayer2AudioOutput.cpp +7 −22 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ status_t MediaPlayer2AudioOutput::dump(int fd, const Vector<String16>& args) con } MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(audio_session_t sessionId, uid_t uid, int pid, const jobject attributes, std::vector<jobject>& routingDelegatesBackup) const jobject attributes) : mCallback(nullptr), mCallbackCookie(nullptr), mCallbackData(nullptr), Loading @@ -77,20 +77,12 @@ MediaPlayer2AudioOutput::MediaPlayer2AudioOutput(audio_session_t sessionId, uid_ mFlags(AUDIO_OUTPUT_FLAG_NONE) { ALOGV("MediaPlayer2AudioOutput(%d)", sessionId); if (mAttributes != nullptr) { mAttributes->~JObjectHolder(); } if (attributes != nullptr) { mAttributes = new JObjectHolder(attributes); } setMinBufferCount(); mRoutingDelegates.clear(); for (auto routingDelegate : routingDelegatesBackup) { mRoutingDelegates.push_back(std::pair<jobject, jobject>( JAudioTrack::getListener(routingDelegate), routingDelegate)); } routingDelegatesBackup.clear(); } MediaPlayer2AudioOutput::~MediaPlayer2AudioOutput() { Loading Loading @@ -251,11 +243,8 @@ status_t MediaPlayer2AudioOutput::getFramesWritten(uint32_t *frameswritten) cons void MediaPlayer2AudioOutput::setAudioAttributes(const jobject attributes) { Mutex::Autolock lock(mLock); if (mAttributes != nullptr) { mAttributes->~JObjectHolder(); } if (attributes != nullptr) { mAttributes = new JObjectHolder(attributes); sp<JObjectHolder> x = new JObjectHolder(attributes); } } Loading Loading @@ -564,15 +553,6 @@ status_t MediaPlayer2AudioOutput::removeAudioDeviceCallback(jobject listener) { return NO_ERROR; } void MediaPlayer2AudioOutput::copyAudioDeviceCallback( std::vector<jobject>& routingDelegateTarget) { ALOGV("copyAudioDeviceCallback"); for (std::vector<std::pair<jobject, jobject>>::iterator it = mRoutingDelegates.begin(); it != mRoutingDelegates.end(); it++) { routingDelegateTarget.push_back(it->second); } } // static void MediaPlayer2AudioOutput::CallbackWrapper( int event, void *cookie, void *info) { Loading Loading @@ -650,6 +630,11 @@ audio_session_t MediaPlayer2AudioOutput::getSessionId() const { return mSessionId; } void MediaPlayer2AudioOutput::setSessionId(const audio_session_t id) { Mutex::Autolock lock(mLock); mSessionId = id; } uint32_t MediaPlayer2AudioOutput::getSampleRate() const { Mutex::Autolock lock(mLock); if (mJAudioTrack == 0) { Loading
media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h +2 −3 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public: MediaPlayer2AudioOutput(audio_session_t sessionId, uid_t uid, int pid, const jobject attributes, std::vector<jobject>& routingDelegatesBackup); const jobject attributes); virtual ~MediaPlayer2AudioOutput(); virtual bool ready() const { Loading @@ -59,6 +58,7 @@ public: 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 uint32_t getSampleRate() const; virtual int64_t getBufferDurationInUs() const; Loading Loading @@ -99,7 +99,6 @@ public: virtual jobject getRoutedDevice(); virtual status_t addAudioDeviceCallback(jobject routingDelegate); virtual status_t removeAudioDeviceCallback(jobject listener); virtual void copyAudioDeviceCallback(std::vector<jobject>& routingDelegateTarget); private: static void setMinBufferCount(); Loading
media/libmediaplayer2/include/mediaplayer2/mediaplayer2.h +0 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ #include <mediaplayer2/MediaPlayer2Types.h> #include <mediaplayer2/JObjectHolder.h> #include <vector> #include <jni.h> #include <utils/Errors.h> #include <utils/Mutex.h> Loading Loading @@ -154,7 +153,6 @@ private: audio_session_t mAudioSessionId; sp<JObjectHolder> mAudioAttributes; float mSendLevel; std::vector<jobject> mRoutingDelegates; sp<ANativeWindowWrapper> mConnectedWindow; }; Loading
media/libmediaplayer2/mediaplayer2.cpp +5 −8 Original line number Diff line number Diff line Loading @@ -258,6 +258,8 @@ MediaPlayer2::MediaPlayer2() { // TODO: get pid and uid from JAVA mPid = IPCThreadState::self()->getCallingPid(); mUid = IPCThreadState::self()->getCallingUid(); mAudioOutput = new MediaPlayer2AudioOutput(mAudioSessionId, mUid, mPid, NULL /*attributes*/); } MediaPlayer2::~MediaPlayer2() { Loading Loading @@ -352,14 +354,7 @@ status_t MediaPlayer2::setDataSource(const sp<DataSourceDesc> &dsd) { clear_l(); if (mAudioOutput != NULL) { mAudioOutput->copyAudioDeviceCallback(mRoutingDelegates); } player->setListener(new proxyListener(this)); mAudioOutput = new MediaPlayer2AudioOutput(mAudioSessionId, mUid, mPid, mAudioAttributes != NULL ? mAudioAttributes->getJObject() : NULL, mRoutingDelegates); player->setAudioSink(mAudioOutput); err = player->setDataSource(dsd); Loading Loading @@ -911,6 +906,9 @@ status_t MediaPlayer2::setAudioSessionId(audio_session_t sessionId) { AudioSystem::releaseAudioSessionId(mAudioSessionId, -1); mAudioSessionId = sessionId; } if (mAudioOutput != NULL && mAudioSessionId != mAudioOutput->getSessionId()) { mAudioOutput->setSessionId(sessionId); } return NO_ERROR; } Loading Loading @@ -1184,7 +1182,6 @@ status_t MediaPlayer2::addAudioDeviceCallback(jobject routingDelegate) { Mutex::Autolock _l(mLock); if (mAudioOutput == NULL) { ALOGV("addAudioDeviceCallback: player not init"); mRoutingDelegates.push_back(routingDelegate); return NO_INIT; } return mAudioOutput->addAudioDeviceCallback(routingDelegate); Loading