From 4356269be6d2b62bbb945364e8fc4beb99e1aada Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Wed, 15 Jul 2015 16:49:07 -0700 Subject: mediaplayer: fix audio attributes override by stream type Make sure that when audio attributes are set, the stream type is always derived from them. Bug: 22481669. Change-Id: Ia10c7017eb27e7753faf97a42dd4f44e15f2c986 --- media/libmediaplayerservice/MediaPlayerService.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp') 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 #include +#include #include #include #include @@ -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() -- cgit v1.1