diff options
author | Eric Laurent <elaurent@google.com> | 2015-07-16 00:25:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-16 00:25:38 +0000 |
commit | a8dc93efc9be8d5e37c7473601fb8654804188c1 (patch) | |
tree | 3711e25321d019cb2ad0fbcbf8ccfa437918b0f9 /media/libmediaplayerservice | |
parent | 3d6a3ede377833d5f4fc40daab6cd958543a5fb0 (diff) | |
parent | 4356269be6d2b62bbb945364e8fc4beb99e1aada (diff) | |
download | frameworks_av-a8dc93efc9be8d5e37c7473601fb8654804188c1.zip frameworks_av-a8dc93efc9be8d5e37c7473601fb8654804188c1.tar.gz frameworks_av-a8dc93efc9be8d5e37c7473601fb8654804188c1.tar.bz2 |
Merge "mediaplayer: fix audio attributes override by stream type" into mnc-dev
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 16 | ||||
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.h | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 0ecfb1e..abbbc20 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -45,6 +45,7 @@ #include <utils/Timers.h> #include <utils/Vector.h> +#include <media/AudioPolicyHelper.h> #include <media/IMediaHTTPService.h> #include <media/IRemoteDisplay.h> #include <media/IRemoteDisplayClient.h> @@ -1351,6 +1352,10 @@ MediaPlayerService::AudioOutput::AudioOutput(int sessionId, int uid, int pid, mFlags(AUDIO_OUTPUT_FLAG_NONE) { ALOGV("AudioOutput(%d)", sessionId); + if (attr != NULL) { + mStreamType = audio_attributes_to_stream_type(attr); + } + setMinBufferCount(); } @@ -1464,6 +1469,17 @@ String8 MediaPlayerService::AudioOutput::getParameters(const String8& keys) void MediaPlayerService::AudioOutput::setAudioAttributes(const audio_attributes_t * attributes) { Mutex::Autolock lock(mLock); mAttributes = attributes; + if (attributes != NULL) { + mStreamType = audio_attributes_to_stream_type(attributes); + } +} + +void MediaPlayerService::AudioOutput::setAudioStreamType(audio_stream_type_t streamType) +{ + // do not allow direct stream type modification if attributes have been set + if (mAttributes == NULL) { + mStreamType = streamType; + } } void MediaPlayerService::AudioOutput::deleteRecycledTrack_l() diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h index 9e6ca52..1c32597 100644 --- a/media/libmediaplayerservice/MediaPlayerService.h +++ b/media/libmediaplayerservice/MediaPlayerService.h @@ -107,8 +107,7 @@ class MediaPlayerService : public BnMediaPlayerService virtual void flush(); virtual void pause(); virtual void close(); - void setAudioStreamType(audio_stream_type_t streamType) { - mStreamType = streamType; } + void setAudioStreamType(audio_stream_type_t streamType); virtual audio_stream_type_t getAudioStreamType() const { return mStreamType; } void setAudioAttributes(const audio_attributes_t * attributes); |