diff options
Diffstat (limited to 'media/libmediaplayerservice')
| -rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 47 | ||||
| -rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.h | 7 |
2 files changed, 52 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 5401ec0..b5972e7 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -329,6 +329,10 @@ status_t MediaPlayerService::AudioOutput::dump(int fd, const Vector<String16>& a snprintf(buffer, 255, " msec per frame(%f), latency (%d)\n", mMsecsPerFrame, mLatency); result.append(buffer); + snprintf(buffer, 255, " aux effect id(%d), send level (%f)\n", + mAuxEffectId, mSendLevel); + result.append(buffer); + ::write(fd, result.string(), result.size()); if (mTrack != 0) { mTrack->dump(fd, args); @@ -1093,6 +1097,21 @@ status_t MediaPlayerService::Client::setVolume(float leftVolume, float rightVolu return NO_ERROR; } +status_t MediaPlayerService::Client::setAuxEffectSendLevel(float level) +{ + LOGV("[%d] setAuxEffectSendLevel(%f)", mConnId, level); + Mutex::Autolock l(mLock); + if (mAudioOutput != 0) return mAudioOutput->setAuxEffectSendLevel(level); + return NO_ERROR; +} + +status_t MediaPlayerService::Client::attachAuxEffect(int effectId) +{ + LOGV("[%d] attachAuxEffect(%d)", mConnId, effectId); + Mutex::Autolock l(mLock); + if (mAudioOutput != 0) return mAudioOutput->attachAuxEffect(effectId); + return NO_ERROR; +} void MediaPlayerService::Client::notify(void* cookie, int msg, int ext1, int ext2) { @@ -1285,6 +1304,8 @@ MediaPlayerService::AudioOutput::AudioOutput(int sessionId) mRightVolume = 1.0; mLatency = 0; mMsecsPerFrame = 0; + mAuxEffectId = 0; + mSendLevel = 0.0; setMinBufferCount(); } @@ -1417,10 +1438,13 @@ status_t MediaPlayerService::AudioOutput::open( LOGV("setVolume"); t->setVolume(mLeftVolume, mRightVolume); + mMsecsPerFrame = 1.e3 / (float) sampleRate; mLatency = t->latency(); mTrack = t; - return NO_ERROR; + + t->setAuxEffectSendLevel(mSendLevel); + return t->attachAuxEffect(mAuxEffectId);; } void MediaPlayerService::AudioOutput::start() @@ -1428,6 +1452,7 @@ void MediaPlayerService::AudioOutput::start() LOGV("start"); if (mTrack) { mTrack->setVolume(mLeftVolume, mRightVolume); + mTrack->setAuxEffectSendLevel(mSendLevel); mTrack->start(); } } @@ -1481,6 +1506,26 @@ void MediaPlayerService::AudioOutput::setVolume(float left, float right) } } +status_t MediaPlayerService::AudioOutput::setAuxEffectSendLevel(float level) +{ + LOGV("setAuxEffectSendLevel(%f)", level); + mSendLevel = level; + if (mTrack) { + return mTrack->setAuxEffectSendLevel(level); + } + return NO_ERROR; +} + +status_t MediaPlayerService::AudioOutput::attachAuxEffect(int effectId) +{ + LOGV("attachAuxEffect(%d)", effectId); + mAuxEffectId = effectId; + if (mTrack) { + return mTrack->attachAuxEffect(effectId); + } + return NO_ERROR; +} + // static void MediaPlayerService::AudioOutput::CallbackWrapper( int event, void *cookie, void *info) { diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index 39f525e..a967ee2 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -91,6 +91,8 @@ class MediaPlayerService : public BnMediaPlayerService virtual void close(); void setAudioStreamType(int streamType) { mStreamType = streamType; } void setVolume(float left, float right); + status_t setAuxEffectSendLevel(float level); + status_t attachAuxEffect(int effectId); virtual status_t dump(int fd, const Vector<String16>& args) const; static bool isOnEmulator(); @@ -109,7 +111,8 @@ class MediaPlayerService : public BnMediaPlayerService float mMsecsPerFrame; uint32_t mLatency; int mSessionId; - + float mSendLevel; + int mAuxEffectId; static bool mIsOnEmulator; static int mMinBufferCount; // 12 for emulator; otherwise 4 @@ -221,6 +224,8 @@ private: Parcel *reply); virtual status_t suspend(); virtual status_t resume(); + virtual status_t setAuxEffectSendLevel(float level); + virtual status_t attachAuxEffect(int effectId); sp<MediaPlayerBase> createPlayer(player_type playerType); |
