Merge "Camera: derive post RAW sensitivity keys for BC" into nyc-dev
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index eaaef4a..fc7217a 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -201,6 +201,10 @@
binder to AudioFlinger.
It will return an error instead. The application will recreate
the track based on offloading or different channel configuration, etc.
+ * maxRequiredSpeed: For PCM tracks, this creates an appropriate buffer size that will allow
+ * maxRequiredSpeed playback. Values less than 1.0f and greater than
+ * AUDIO_TIMESTRETCH_SPEED_MAX will be clamped. For non-PCM tracks
+ * and direct or offloaded tracks, this parameter is ignored.
* threadCanCallJava: Not present in parameter list, and so is fixed at false.
*/
@@ -219,7 +223,8 @@
int uid = -1,
pid_t pid = -1,
const audio_attributes_t* pAttributes = NULL,
- bool doNotReconnect = false);
+ bool doNotReconnect = false,
+ float maxRequiredSpeed = 1.0f);
/* Creates an audio track and registers it with AudioFlinger.
* With this constructor, the track is configured for static buffer mode.
@@ -248,7 +253,8 @@
int uid = -1,
pid_t pid = -1,
const audio_attributes_t* pAttributes = NULL,
- bool doNotReconnect = false);
+ bool doNotReconnect = false,
+ float maxRequiredSpeed = 1.0f);
/* Terminates the AudioTrack and unregisters it from AudioFlinger.
* Also destroys all resources associated with the AudioTrack.
@@ -293,7 +299,8 @@
int uid = -1,
pid_t pid = -1,
const audio_attributes_t* pAttributes = NULL,
- bool doNotReconnect = false);
+ bool doNotReconnect = false,
+ float maxRequiredSpeed = 1.0f);
/* Result of constructing the AudioTrack. This must be checked for successful initialization
* before using any AudioTrack API (except for set()), because using
@@ -333,6 +340,10 @@
*/
ssize_t getBufferSizeInFrames();
+ /* Returns the buffer duration in microseconds at current playback rate.
+ */
+ status_t getBufferDurationInUs(int64_t *duration);
+
/* Set the effective size of audio buffer that an application writes to.
* This is used to determine the amount of available room in the buffer,
* which determines when a write will block.
@@ -916,6 +927,7 @@
mutable uint32_t mSampleRate; // mutable because getSampleRate() can update it
uint32_t mOriginalSampleRate;
AudioPlaybackRate mPlaybackRate;
+ float mMaxRequiredSpeed; // use PCM buffer size to allow this speed
// Corresponds to current IAudioTrack, value is reported back by AudioFlinger to the client.
// This allocated buffer size is maintained by the proxy.
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
index 54862d1..4977efd 100644
--- a/include/media/MediaPlayerInterface.h
+++ b/include/media/MediaPlayerInterface.h
@@ -104,6 +104,7 @@
virtual audio_session_t getSessionId() const = 0;
virtual audio_stream_type_t getAudioStreamType() const = 0;
virtual uint32_t getSampleRate() const = 0;
+ virtual int64_t getBufferDurationInUs() const = 0;
// If no callback is specified, use the "write" API below to submit
// audio data.
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index e757c7c..b9138f2 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -191,7 +191,8 @@
int uid,
pid_t pid,
const audio_attributes_t* pAttributes,
- bool doNotReconnect)
+ bool doNotReconnect,
+ float maxRequiredSpeed)
: mStatus(NO_INIT),
mState(STATE_STOPPED),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
@@ -202,7 +203,7 @@
mStatus = set(streamType, sampleRate, format, channelMask,
frameCount, flags, cbf, user, notificationFrames,
0 /*sharedBuffer*/, false /*threadCanCallJava*/, sessionId, transferType,
- offloadInfo, uid, pid, pAttributes, doNotReconnect);
+ offloadInfo, uid, pid, pAttributes, doNotReconnect, maxRequiredSpeed);
}
AudioTrack::AudioTrack(
@@ -221,7 +222,8 @@
int uid,
pid_t pid,
const audio_attributes_t* pAttributes,
- bool doNotReconnect)
+ bool doNotReconnect,
+ float maxRequiredSpeed)
: mStatus(NO_INIT),
mState(STATE_STOPPED),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
@@ -232,7 +234,7 @@
mStatus = set(streamType, sampleRate, format, channelMask,
0 /*frameCount*/, flags, cbf, user, notificationFrames,
sharedBuffer, false /*threadCanCallJava*/, sessionId, transferType, offloadInfo,
- uid, pid, pAttributes, doNotReconnect);
+ uid, pid, pAttributes, doNotReconnect, maxRequiredSpeed);
}
AudioTrack::~AudioTrack()
@@ -281,7 +283,8 @@
int uid,
pid_t pid,
const audio_attributes_t* pAttributes,
- bool doNotReconnect)
+ bool doNotReconnect,
+ float maxRequiredSpeed)
{
ALOGV("set(): streamType %d, sampleRate %u, format %#x, channelMask %#x, frameCount %zu, "
"flags #%x, notificationFrames %u, sessionId %d, transferType %d, uid %d, pid %d",
@@ -422,6 +425,8 @@
mSampleRate = sampleRate;
mOriginalSampleRate = sampleRate;
mPlaybackRate = AUDIO_PLAYBACK_RATE_DEFAULT;
+ // 1.0 <= mMaxRequiredSpeed <= AUDIO_TIMESTRETCH_SPEED_MAX
+ mMaxRequiredSpeed = min(max(maxRequiredSpeed, 1.0f), AUDIO_TIMESTRETCH_SPEED_MAX);
// Make copy of input parameter offloadInfo so that in the future:
// (a) createTrack_l doesn't need it as an input parameter
@@ -532,24 +537,23 @@
mTimestampStartupGlitchReported = false;
mRetrogradeMotionReported = false;
- // If previousState == STATE_STOPPED, we clear the timestamp so that it
- // needs a new server push. We also reactivate markers (mMarkerPosition != 0)
- // as the position is reset to 0. This is legacy behavior. This is not done
- // in stop() to avoid a race condition where the last marker event is issued twice.
- // Note: the if is technically unnecessary because previousState == STATE_FLUSHED
- // is only for streaming tracks, and mMarkerReached is already set to false.
- if (previousState == STATE_STOPPED) {
- // read last server side position change via timestamp
- ExtendedTimestamp ets;
- if (mProxy->getTimestamp(&ets) == OK &&
- ets.mTimeNs[ExtendedTimestamp::LOCATION_SERVER] > 0) {
- mFramesWrittenServerOffset = -(ets.mPosition[ExtendedTimestamp::LOCATION_SERVER]
- + ets.mFlushed);
- }
- mFramesWritten = 0;
- mProxy->clearTimestamp(); // need new server push for valid timestamp
- mMarkerReached = false;
+ // read last server side position change via timestamp.
+ ExtendedTimestamp ets;
+ if (mProxy->getTimestamp(&ets) == OK &&
+ ets.mTimeNs[ExtendedTimestamp::LOCATION_SERVER] > 0) {
+ // Server side has consumed something, but is it finished consuming?
+ // It is possible since flush and stop are asynchronous that the server
+ // is still active at this point.
+ ALOGV("start: server read:%lld cumulative flushed:%lld client written:%lld",
+ (long long)(mFramesWrittenServerOffset
+ + ets.mPosition[ExtendedTimestamp::LOCATION_SERVER]),
+ (long long)ets.mFlushed,
+ (long long)mFramesWritten);
+ mFramesWrittenServerOffset = -ets.mPosition[ExtendedTimestamp::LOCATION_SERVER];
}
+ mFramesWritten = 0;
+ mProxy->clearTimestamp(); // need new server push for valid timestamp
+ mMarkerReached = false;
// For offloaded tracks, we don't know if the hardware counters are really zero here,
// since the flush is asynchronous and stop may not fully drain.
@@ -825,6 +829,9 @@
if (mFlags & AUDIO_OUTPUT_FLAG_FAST) {
return INVALID_OPERATION;
}
+
+ ALOGV("setPlaybackRate (input): mSampleRate:%u mSpeed:%f mPitch:%f",
+ mSampleRate, playbackRate.mSpeed, playbackRate.mPitch);
// pitch is emulated by adjusting speed and sampleRate
const uint32_t effectiveRate = adjustSampleRate(mSampleRate, playbackRate.mPitch);
const float effectiveSpeed = adjustSpeed(playbackRate.mSpeed, playbackRate.mPitch);
@@ -833,12 +840,18 @@
playbackRateTemp.mSpeed = effectiveSpeed;
playbackRateTemp.mPitch = effectivePitch;
+ ALOGV("setPlaybackRate (effective): mSampleRate:%u mSpeed:%f mPitch:%f",
+ effectiveRate, effectiveSpeed, effectivePitch);
+
if (!isAudioPlaybackRateValid(playbackRateTemp)) {
+ ALOGV("setPlaybackRate(%f, %f) failed (effective rate out of bounds)",
+ playbackRate.mSpeed, playbackRate.mPitch);
return BAD_VALUE;
}
// Check if the buffer size is compatible.
if (!isSampleRateSpeedAllowed_l(effectiveRate, effectiveSpeed)) {
- ALOGV("setPlaybackRate(%f, %f) failed", playbackRate.mSpeed, playbackRate.mPitch);
+ ALOGV("setPlaybackRate(%f, %f) failed (buffer size)",
+ playbackRate.mSpeed, playbackRate.mPitch);
return BAD_VALUE;
}
@@ -876,6 +889,24 @@
return (ssize_t) mProxy->getBufferSizeInFrames();
}
+status_t AudioTrack::getBufferDurationInUs(int64_t *duration)
+{
+ if (duration == nullptr) {
+ return BAD_VALUE;
+ }
+ AutoMutex lock(mLock);
+ if (mOutput == AUDIO_IO_HANDLE_NONE || mProxy.get() == 0) {
+ return NO_INIT;
+ }
+ ssize_t bufferSizeInFrames = (ssize_t) mProxy->getBufferSizeInFrames();
+ if (bufferSizeInFrames < 0) {
+ return (status_t)bufferSizeInFrames;
+ }
+ *duration = (int64_t)((double)bufferSizeInFrames * 1000000
+ / ((double)mSampleRate * mPlaybackRate.mSpeed));
+ return NO_ERROR;
+}
+
ssize_t AudioTrack::setBufferSizeInFrames(size_t bufferSizeInFrames)
{
AutoMutex lock(mLock);
@@ -1276,9 +1307,11 @@
if ((mFlags & AUDIO_OUTPUT_FLAG_FAST) == 0) {
// for normal tracks precompute the frame count based on speed.
+ const float speed = !isPurePcmData_l() || isOffloadedOrDirect_l() ? 1.0f :
+ max(mMaxRequiredSpeed, mPlaybackRate.mSpeed);
const size_t minFrameCount = calculateMinFrameCount(
mAfLatency, mAfFrameCount, mAfSampleRate, mSampleRate,
- mPlaybackRate.mSpeed);
+ speed);
if (frameCount < minFrameCount) {
frameCount = minFrameCount;
}
@@ -2206,18 +2239,18 @@
return INVALID_OPERATION; // not supported
}
status_t status = mProxy->getTimestamp(timestamp);
+ LOG_ALWAYS_FATAL_IF(status != OK, "status %d not allowed from proxy getTimestamp", status);
bool found = false;
- if (status == OK) {
- timestamp->mPosition[ExtendedTimestamp::LOCATION_CLIENT] = mFramesWritten;
- timestamp->mTimeNs[ExtendedTimestamp::LOCATION_CLIENT] = 0;
- // server side frame offset in case AudioTrack has been restored.
- for (int i = ExtendedTimestamp::LOCATION_SERVER;
- i < ExtendedTimestamp::LOCATION_MAX; ++i) {
- if (timestamp->mTimeNs[i] >= 0) {
- // apply server offset and the "flush frame correction here"
- timestamp->mPosition[i] += mFramesWrittenServerOffset + timestamp->mFlushed;
- found = true;
- }
+ timestamp->mPosition[ExtendedTimestamp::LOCATION_CLIENT] = mFramesWritten;
+ timestamp->mTimeNs[ExtendedTimestamp::LOCATION_CLIENT] = 0;
+ // server side frame offset in case AudioTrack has been restored.
+ for (int i = ExtendedTimestamp::LOCATION_SERVER;
+ i < ExtendedTimestamp::LOCATION_MAX; ++i) {
+ if (timestamp->mTimeNs[i] >= 0) {
+ // apply server offset (frames flushed is ignored
+ // so we don't report the jump when the flush occurs).
+ timestamp->mPosition[i] += mFramesWrittenServerOffset;
+ found = true;
}
}
return found ? OK : WOULD_BLOCK;
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 1a3013a..424215e 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -94,6 +94,8 @@
// Max number of entries in the filter.
const int kMaxFilterSize = 64; // I pulled that out of thin air.
+const float kMaxRequiredSpeed = 8.0f; // for PCM tracks allow up to 8x speedup.
+
// FIXME: Move all the metadata related function in the Metadata.cpp
@@ -1749,6 +1751,14 @@
mAttributes,
doNotReconnect);
} else {
+ // TODO: Due to buffer memory concerns, we use a max target playback speed
+ // based on mPlaybackRate at the time of open (instead of kMaxRequiredSpeed),
+ // also clamping the target speed to 1.0 <= targetSpeed <= kMaxRequiredSpeed.
+ const float targetSpeed =
+ std::min(std::max(mPlaybackRate.mSpeed, 1.0f), kMaxRequiredSpeed);
+ ALOGW_IF(targetSpeed != mPlaybackRate.mSpeed,
+ "track target speed:%f clamped from playback speed:%f",
+ targetSpeed, mPlaybackRate.mSpeed);
t = new AudioTrack(
mStreamType,
sampleRate,
@@ -1765,7 +1775,8 @@
mUid,
mPid,
mAttributes,
- doNotReconnect);
+ doNotReconnect,
+ targetSpeed);
}
if ((t == 0) || (t->initCheck() != NO_ERROR)) {
@@ -2127,6 +2138,19 @@
return mTrack->getSampleRate();
}
+int64_t MediaPlayerService::AudioOutput::getBufferDurationInUs() const
+{
+ Mutex::Autolock lock(mLock);
+ if (mTrack == 0) {
+ return 0;
+ }
+ int64_t duration;
+ if (mTrack->getBufferDurationInUs(&duration) != OK) {
+ return 0;
+ }
+ return duration;
+}
+
////////////////////////////////////////////////////////////////////////////////
struct CallbackThread : public Thread {
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 1581b49..80593b2 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -92,6 +92,7 @@
virtual status_t getFramesWritten(uint32_t *frameswritten) const;
virtual audio_session_t getSessionId() const;
virtual uint32_t getSampleRate() const;
+ virtual int64_t getBufferDurationInUs() const;
virtual status_t open(
uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
index cbb9d95..c38a23b 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp
@@ -19,6 +19,7 @@
#include <utils/Log.h>
#include "NuPlayerRenderer.h"
+#include <algorithm>
#include <cutils/properties.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -487,8 +488,14 @@
// Let's give it more data after about half that time
// has elapsed.
+ delayUs /= 2;
+ // check the buffer size to estimate maximum delay permitted.
+ const int64_t maxDrainDelayUs = std::max(
+ mAudioSink->getBufferDurationInUs(), (int64_t)500000 /* half second */);
+ ALOGD_IF(delayUs > maxDrainDelayUs, "postDrainAudioQueue long delay: %lld > %lld",
+ (long long)delayUs, (long long)maxDrainDelayUs);
Mutex::Autolock autoLock(mLock);
- postDrainAudioQueue_l(delayUs / 2);
+ postDrainAudioQueue_l(delayUs);
}
break;
}
@@ -1876,6 +1883,10 @@
// NuPlayer a chance to switch from non-offload mode to offload mode.
// So we only set doNotReconnect when there's no video.
const bool doNotReconnect = !hasVideo;
+
+ // We should always be able to set our playback settings if the sink is closed.
+ LOG_ALWAYS_FATAL_IF(mAudioSink->setPlaybackRate(mPlaybackSettings) != OK,
+ "onOpenAudioSink: can't set playback rate on closed sink");
status_t err = mAudioSink->open(
sampleRate,
numChannels,
@@ -1888,9 +1899,6 @@
NULL,
doNotReconnect,
frameCount);
- if (err == OK) {
- err = mAudioSink->setPlaybackRate(mPlaybackSettings);
- }
if (err != OK) {
ALOGW("openAudioSink: non offloaded open failed status: %d", err);
mAudioSink->close();
diff --git a/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp b/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
index 7df6156..54736f8 100644
--- a/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
+++ b/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
@@ -564,6 +564,8 @@
mChangingResolution = false;
resetDecoder();
resetPlugin();
+ mStride = outputBufferWidth();
+ setParams(mStride);
continue;
}
diff --git a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
index f648bb3..be04e08 100644
--- a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
+++ b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
@@ -84,7 +84,7 @@
def.eDir = OMX_DirInput;
def.nBufferCountMin = kNumBuffers;
def.nBufferCountActual = def.nBufferCountMin;
- def.nBufferSize = 8192;
+ def.nBufferSize = kMaxNumSamplesPerBuffer * sizeof(int16_t);
def.bEnabled = OMX_TRUE;
def.bPopulated = OMX_FALSE;
def.eDomain = OMX_PortDomainAudio;
diff --git a/services/audioflinger/PatchPanel.cpp b/services/audioflinger/PatchPanel.cpp
index d85ac87..89de68e 100644
--- a/services/audioflinger/PatchPanel.cpp
+++ b/services/audioflinger/PatchPanel.cpp
@@ -248,14 +248,27 @@
goto exit;
}
}
- uint32_t channelCount = newPatch->mPlaybackThread->channelCount();
audio_devices_t device = patch->sources[0].ext.device.type;
String8 address = String8(patch->sources[0].ext.device.address);
audio_config_t config = AUDIO_CONFIG_INITIALIZER;
- audio_channel_mask_t inChannelMask = audio_channel_in_mask_from_count(channelCount);
- config.sample_rate = newPatch->mPlaybackThread->sampleRate();
- config.channel_mask = inChannelMask;
- config.format = newPatch->mPlaybackThread->format();
+ // open input stream with source device audio properties if provided or
+ // default to peer output stream properties otherwise.
+ if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_SAMPLE_RATE) {
+ config.sample_rate = patch->sources[0].sample_rate;
+ } else {
+ config.sample_rate = newPatch->mPlaybackThread->sampleRate();
+ }
+ if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_CHANNEL_MASK) {
+ config.channel_mask = patch->sources[0].channel_mask;
+ } else {
+ config.channel_mask =
+ audio_channel_in_mask_from_count(newPatch->mPlaybackThread->channelCount());
+ }
+ if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_FORMAT) {
+ config.format = patch->sources[0].format;
+ } else {
+ config.format = newPatch->mPlaybackThread->format();
+ }
audio_io_handle_t input = AUDIO_IO_HANDLE_NONE;
newPatch->mRecordThread = audioflinger->openInput_l(srcModule,
&input,
@@ -265,7 +278,7 @@
AUDIO_SOURCE_MIC,
AUDIO_INPUT_FLAG_NONE);
ALOGV("audioflinger->openInput_l() returned %p inChannelMask %08x",
- newPatch->mRecordThread.get(), inChannelMask);
+ newPatch->mRecordThread.get(), config.channel_mask);
if (newPatch->mRecordThread == 0) {
status = NO_MEMORY;
goto exit;
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 00de4f0..61b30c1 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -1114,7 +1114,6 @@
mAudioTrackServerProxy->setDrained(true);
}
// Set correction for flushed frames that are not accounted for in released.
- // This is important for the new 64 bit timestamps which do not reset to 0 on flush.
local.mFlushed = mAudioTrackServerProxy->framesFlushed();
mServerProxy->setTimestamp(local);
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index fe03429..44f380a 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -228,7 +228,17 @@
void DeviceDescriptor::toAudioPortConfig(struct audio_port_config *dstConfig,
const struct audio_port_config *srcConfig) const
{
- dstConfig->config_mask = AUDIO_PORT_CONFIG_CHANNEL_MASK|AUDIO_PORT_CONFIG_GAIN;
+ dstConfig->config_mask = AUDIO_PORT_CONFIG_GAIN;
+ if (mSamplingRate != 0) {
+ dstConfig->config_mask |= AUDIO_PORT_CONFIG_SAMPLE_RATE;
+ }
+ if (mChannelMask != AUDIO_CHANNEL_NONE) {
+ dstConfig->config_mask |= AUDIO_PORT_CONFIG_CHANNEL_MASK;
+ }
+ if (mFormat != AUDIO_FORMAT_INVALID) {
+ dstConfig->config_mask |= AUDIO_PORT_CONFIG_FORMAT;
+ }
+
if (srcConfig != NULL) {
dstConfig->config_mask |= srcConfig->config_mask;
}
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml
index be86b8d..bc7ad6b 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml
@@ -939,6 +939,12 @@
<SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
</CompoundRule>
</Configuration>
+ <Configuration Name="Line">
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ </Configuration>
<Configuration Name="UsbDevice">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="UsbDevice"/>
@@ -988,12 +994,6 @@
<SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
</CompoundRule>
</Configuration>
- <Configuration Name="Line">
- <CompoundRule Type="All">
- <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
- <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceSpeaker"/>
- </CompoundRule>
- </Configuration>
<Configuration Name="Speaker">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Speaker"/>
@@ -1448,6 +1448,59 @@
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
</Configuration>
+ <Configuration Name="Line">
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/telephony_tx">
+ <BitParameter Name="telephony_tx">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/line">
+ <BitParameter Name="line">1</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
<Configuration Name="UsbDevice">
<ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/earpiece">
<BitParameter Name="earpiece">0</BitParameter>
@@ -1766,59 +1819,6 @@
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="Line">
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/earpiece">
- <BitParameter Name="earpiece">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/wired_headset">
- <BitParameter Name="wired_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/wired_headphone">
- <BitParameter Name="wired_headphone">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco">
- <BitParameter Name="bluetooth_sco">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco_headset">
- <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_sco_carkit">
- <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp">
- <BitParameter Name="bluetooth_a2dp">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp_headphones">
- <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/bluetooth_a2dp_speaker">
- <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/hdmi">
- <BitParameter Name="hdmi">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/angl_dock_headset">
- <BitParameter Name="angl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/dgtl_dock_headset">
- <BitParameter Name="dgtl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/usb_accessory">
- <BitParameter Name="usb_accessory">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/usb_device">
- <BitParameter Name="usb_device">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/telephony_tx">
- <BitParameter Name="telephony_tx">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/line">
- <BitParameter Name="line">1</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/speaker">
- <BitParameter Name="speaker">0</BitParameter>
- </ConfigurableElement>
- </Configuration>
<Configuration Name="Speaker">
<ConfigurableElement Path="/Policy/policy/strategies/phone/selected_output_devices/mask/earpiece">
<BitParameter Name="earpiece">0</BitParameter>
@@ -2093,7 +2093,8 @@
<SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
<SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
</CompoundRule>
- <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceSpeaker"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Excludes" Value="WiredHeadset"/>
</CompoundRule>
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
@@ -3082,12 +3083,25 @@
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadphone"/>
</CompoundRule>
</Configuration>
- <Configuration Name="LineWhenFollowMediaStrategy">
+ <Configuration Name="Line">
<CompoundRule Type="All">
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
- <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadphone"/>
- <SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Excludes" Value="WiredHeadset"/>
+ </CompoundRule>
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadphone"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
</CompoundRule>
</Configuration>
<Configuration Name="WiredHeadset">
@@ -3172,16 +3186,6 @@
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Earpiece"/>
</CompoundRule>
</Configuration>
- <Configuration Name="Line">
- <CompoundRule Type="All">
- <CompoundRule Type="Any">
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
- </CompoundRule>
- <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceSpeaker"/>
- <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
- </CompoundRule>
- </Configuration>
</Configurations>
<ConfigurableElements>
<ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/earpiece"/>
@@ -3530,7 +3534,7 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="LineWhenFollowMediaStrategy">
+ <Configuration Name="Line">
<ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/earpiece">
<BitParameter Name="earpiece">0</BitParameter>
</ConfigurableElement>
@@ -3906,53 +3910,6 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="Line">
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/earpiece">
- <BitParameter Name="earpiece">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_sco">
- <BitParameter Name="bluetooth_sco">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_sco_headset">
- <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_sco_carkit">
- <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_a2dp_headphones">
- <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_a2dp_speaker">
- <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/bluetooth_a2dp">
- <BitParameter Name="bluetooth_a2dp">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/wired_headset">
- <BitParameter Name="wired_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/wired_headphone">
- <BitParameter Name="wired_headphone">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/line">
- <BitParameter Name="line">1</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/angl_dock_headset">
- <BitParameter Name="angl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/dgtl_dock_headset">
- <BitParameter Name="dgtl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/usb_accessory">
- <BitParameter Name="usb_accessory">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/usb_device">
- <BitParameter Name="usb_device">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/sonification_respectful/selected_output_devices/mask/hdmi">
- <BitParameter Name="hdmi">0</BitParameter>
- </ConfigurableElement>
- </Configuration>
</Settings>
</ConfigurableDomain>
<ConfigurableDomain Name="DeviceForStrategy.Dtmf.UnreachableDevices" SequenceAware="false">
@@ -4060,10 +4017,22 @@
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadphone"/>
</CompoundRule>
</Configuration>
- <Configuration Name="LineWhenFollowingMedia">
+ <Configuration Name="Line">
<CompoundRule Type="All">
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Excludes" Value="WiredHeadset"/>
+ </CompoundRule>
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ </CompoundRule>
+ </CompoundRule>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
</CompoundRule>
</Configuration>
@@ -4144,16 +4113,6 @@
<SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
</CompoundRule>
</Configuration>
- <Configuration Name="LineWhenFallThroughPhone">
- <CompoundRule Type="All">
- <CompoundRule Type="Any">
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
- <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
- </CompoundRule>
- <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
- <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceSpeaker"/>
- </CompoundRule>
- </Configuration>
<Configuration Name="Speaker">
<CompoundRule Type="All">
<CompoundRule Type="Any">
@@ -4621,7 +4580,7 @@
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="LineWhenFollowingMedia">
+ <Configuration Name="Line">
<ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
@@ -5045,59 +5004,6 @@
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="LineWhenFallThroughPhone">
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/remote_submix">
- <BitParameter Name="remote_submix">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/earpiece">
- <BitParameter Name="earpiece">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/wired_headset">
- <BitParameter Name="wired_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/wired_headphone">
- <BitParameter Name="wired_headphone">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/bluetooth_sco">
- <BitParameter Name="bluetooth_sco">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/bluetooth_sco_headset">
- <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/bluetooth_a2dp">
- <BitParameter Name="bluetooth_a2dp">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/bluetooth_a2dp_headphones">
- <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/bluetooth_a2dp_speaker">
- <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/hdmi">
- <BitParameter Name="hdmi">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/angl_dock_headset">
- <BitParameter Name="angl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/dgtl_dock_headset">
- <BitParameter Name="dgtl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/usb_accessory">
- <BitParameter Name="usb_accessory">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/usb_device">
- <BitParameter Name="usb_device">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/telephony_tx">
- <BitParameter Name="telephony_tx">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/line">
- <BitParameter Name="line">1</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/speaker">
- <BitParameter Name="speaker">0</BitParameter>
- </ConfigurableElement>
- </Configuration>
<Configuration Name="Speaker">
<ConfigurableElement Path="/Policy/policy/strategies/dtmf/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
@@ -6286,10 +6192,6 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/aux_line"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/fm"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker_safe"/>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece"/>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco"/>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset"/>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/telephony_tx"/>
</ConfigurableElements>
<Settings>
@@ -6309,39 +6211,33 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker_safe">
<BitParameter Name="speaker_safe">0</BitParameter>
</ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
- <BitParameter Name="earpiece">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
- <BitParameter Name="bluetooth_sco">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
- <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
- <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
- </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/telephony_tx">
<BitParameter Name="telephony_tx">0</BitParameter>
</ConfigurableElement>
</Configuration>
</Settings>
</ConfigurableDomain>
- <ConfigurableDomain Name="DeviceForStrategy.Accessibility.Device2" SequenceAware="false">
+ <ConfigurableDomain Name="DeviceForStrategy.Accessibility.Device" SequenceAware="false">
<Configurations>
<Configuration Name="RemoteSubmix">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="RemoteSubmix"/>
</CompoundRule>
</Configuration>
<Configuration Name="BluetoothA2dp">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="ForceNoBtA2dp"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothA2dp"/>
</CompoundRule>
</Configuration>
<Configuration Name="BluetoothA2dpHeadphone">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="ForceNoBtA2dp"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothA2dpHeadphones"/>
</CompoundRule>
@@ -6349,56 +6245,159 @@
<Configuration Name="BluetoothA2dpSpeaker">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="ForceNoBtA2dp"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothA2dpSpeaker"/>
</CompoundRule>
</Configuration>
- <Configuration Name="ForceSpeaker">
+ <Configuration Name="ForceSpeakerWhenNotInCall">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="Is" Value="ForceSpeaker"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Speaker"/>
</CompoundRule>
</Configuration>
+ <Configuration Name="BluetoothScoCarkit">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothScoCarkit"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceBtSco"/>
+ </CompoundRule>
+ </Configuration>
+ <Configuration Name="BluetoothScoHeadset">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothScoHeadset"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceBtSco"/>
+ </CompoundRule>
+ </Configuration>
+ <Configuration Name="BluetoothSco">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BluetoothSco"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceBtSco"/>
+ </CompoundRule>
+ </Configuration>
<Configuration Name="WiredHeadphone">
<CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ </CompoundRule>
+ </CompoundRule>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadphone"/>
</CompoundRule>
</Configuration>
<Configuration Name="Line">
<CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Excludes" Value="WiredHeadset"/>
+ </CompoundRule>
+ </CompoundRule>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Line"/>
</CompoundRule>
</Configuration>
<Configuration Name="WiredHeadset">
<CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ </CompoundRule>
+ </CompoundRule>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="WiredHeadset"/>
</CompoundRule>
</Configuration>
- <Configuration Name="UsbAccessory">
- <CompoundRule Type="All">
- <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="UsbAccessory"/>
- </CompoundRule>
- </Configuration>
<Configuration Name="UsbDevice">
<CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Excludes" Value="UsbAccessory"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="Is" Value="ForceSpeaker"/>
+ </CompoundRule>
+ </CompoundRule>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="UsbDevice"/>
</CompoundRule>
</Configuration>
+ <Configuration Name="UsbAccessory">
+ <CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="UsbAccessory"/>
+ </CompoundRule>
+ </Configuration>
<Configuration Name="DgtlDockHeadset">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="DgtlDockHeadset"/>
</CompoundRule>
</Configuration>
<Configuration Name="AuxDigital">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Hdmi"/>
</CompoundRule>
</Configuration>
<Configuration Name="AnlgDockHeadset">
<CompoundRule Type="All">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="IsNot" Value="InCommunication"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="AnlgDockHeadset"/>
<SelectionCriterionRule SelectionCriterion="ForceUseForDock" MatchesWhen="Is" Value="ForceAnalogDock"/>
</CompoundRule>
</Configuration>
+ <Configuration Name="Earpiece">
+ <CompoundRule Type="All">
+ <CompoundRule Type="Any">
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCall"/>
+ <SelectionCriterionRule SelectionCriterion="TelephonyMode" MatchesWhen="Is" Value="InCommunication"/>
+ </CompoundRule>
+ <SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Earpiece"/>
+ <SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="ForceSpeaker"/>
+ </CompoundRule>
+ </Configuration>
<Configuration Name="Speaker">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="Speaker"/>
@@ -6410,9 +6409,13 @@
</Configurations>
<ConfigurableElements>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix"/>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker"/>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset"/>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit"/>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset"/>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone"/>
@@ -6428,6 +6431,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">1</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6437,6 +6443,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6469,6 +6484,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">1</BitParameter>
</ConfigurableElement>
@@ -6478,6 +6496,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6510,6 +6537,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6519,6 +6549,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6551,6 +6590,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6560,6 +6602,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">1</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6588,10 +6639,13 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="ForceSpeaker">
+ <Configuration Name="ForceSpeakerWhenNotInCall">
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6601,6 +6655,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">1</BitParameter>
</ConfigurableElement>
@@ -6629,10 +6692,13 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="WiredHeadphone">
+ <Configuration Name="BluetoothScoCarkit">
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6642,6 +6708,174 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">1</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
+ <BitParameter Name="line">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
+ <Configuration Name="BluetoothScoHeadset">
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
+ <BitParameter Name="remote_submix">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">1</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
+ <BitParameter Name="line">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
+ <Configuration Name="BluetoothSco">
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
+ <BitParameter Name="remote_submix">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">1</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
+ <BitParameter Name="line">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
+ <Configuration Name="WiredHeadphone">
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
+ <BitParameter Name="remote_submix">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6674,6 +6908,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6683,6 +6920,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6715,6 +6961,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6724,6 +6973,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6752,51 +7010,13 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="UsbAccessory">
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
- <BitParameter Name="remote_submix">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
- <BitParameter Name="bluetooth_a2dp">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
- <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
- <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
- <BitParameter Name="speaker">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
- <BitParameter Name="wired_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
- <BitParameter Name="wired_headphone">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
- <BitParameter Name="line">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
- <BitParameter Name="angl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
- <BitParameter Name="dgtl_dock_headset">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
- <BitParameter Name="usb_accessory">1</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
- <BitParameter Name="usb_device">0</BitParameter>
- </ConfigurableElement>
- <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
- <BitParameter Name="hdmi">0</BitParameter>
- </ConfigurableElement>
- </Configuration>
<Configuration Name="UsbDevice">
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6806,6 +7026,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6834,10 +7063,13 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="DgtlDockHeadset">
+ <Configuration Name="UsbAccessory">
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6847,6 +7079,68 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
+ <BitParameter Name="line">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">1</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
+ <Configuration Name="DgtlDockHeadset">
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
+ <BitParameter Name="remote_submix">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6879,6 +7173,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6888,6 +7185,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6920,6 +7226,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6929,6 +7238,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
@@ -6957,10 +7275,13 @@
<BitParameter Name="hdmi">0</BitParameter>
</ConfigurableElement>
</Configuration>
- <Configuration Name="Speaker">
+ <Configuration Name="Earpiece">
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">1</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -6970,6 +7291,68 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
+ <BitParameter Name="speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headset">
+ <BitParameter Name="wired_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/wired_headphone">
+ <BitParameter Name="wired_headphone">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/line">
+ <BitParameter Name="line">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/angl_dock_headset">
+ <BitParameter Name="angl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/dgtl_dock_headset">
+ <BitParameter Name="dgtl_dock_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_accessory">
+ <BitParameter Name="usb_accessory">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/usb_device">
+ <BitParameter Name="usb_device">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/hdmi">
+ <BitParameter Name="hdmi">0</BitParameter>
+ </ConfigurableElement>
+ </Configuration>
+ <Configuration Name="Speaker">
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
+ <BitParameter Name="remote_submix">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
+ <BitParameter Name="bluetooth_a2dp">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_headphones">
+ <BitParameter Name="bluetooth_a2dp_headphones">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
+ <BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">1</BitParameter>
</ConfigurableElement>
@@ -7002,6 +7385,9 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/remote_submix">
<BitParameter Name="remote_submix">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/earpiece">
+ <BitParameter Name="earpiece">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp">
<BitParameter Name="bluetooth_a2dp">0</BitParameter>
</ConfigurableElement>
@@ -7011,6 +7397,15 @@
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_a2dp_speaker">
<BitParameter Name="bluetooth_a2dp_speaker">0</BitParameter>
</ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_headset">
+ <BitParameter Name="bluetooth_sco_headset">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco_carkit">
+ <BitParameter Name="bluetooth_sco_carkit">0</BitParameter>
+ </ConfigurableElement>
+ <ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/bluetooth_sco">
+ <BitParameter Name="bluetooth_sco">0</BitParameter>
+ </ConfigurableElement>
<ConfigurableElement Path="/Policy/policy/strategies/accessibility/selected_output_devices/mask/speaker">
<BitParameter Name="speaker">0</BitParameter>
</ConfigurableElement>
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw
index e8ab33b..dacf5b2 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw
@@ -2,9 +2,10 @@
supDomain: Accessibility
#
- # @FIXME: STRATEGY_ACCESSIBILITY follows STRATEGY_MEDIA for now
+ # STRATEGY_ACCESSIBILITY follows STRATEGY_PHONE if in call widely speaking
+ # STRATEGY_ACCESSIBILITY follows STRATEGY_MEDIA otherwise
#
- # @FIXME: How to disable HDMI if !audio_is_linear_pcm other than programmatically???
+ # Other case are handled programmatically has involving activity of streams.
#
domain: UnreachableDevices
conf: Calibration
@@ -14,21 +15,26 @@
aux_line = 0
fm = 0
speaker_safe = 0
- earpiece = 0
- bluetooth_sco = 0
- bluetooth_sco_headset = 0
- bluetooth_sco_carkit = 0
telephony_tx = 0
- domain: Device2
+ domain: Device
conf: RemoteSubmix
+ #
+ # Accessibility follows Media strategy if not in call
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes RemoteSubmix
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 1
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -40,14 +46,23 @@
hdmi = 0
conf: BluetoothA2dp
+ #
+ # Accessibility falls through media strategy if not in call (widely speaking)
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
ForceUseForMedia IsNot ForceNoBtA2dp
AvailableOutputDevices Includes BluetoothA2dp
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 1
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -59,14 +74,23 @@
hdmi = 0
conf: BluetoothA2dpHeadphone
+ #
+ # Accessibility falls through media strategy if not in call (widely speaking)
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
ForceUseForMedia IsNot ForceNoBtA2dp
AvailableOutputDevices Includes BluetoothA2dpHeadphones
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 1
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -78,14 +102,23 @@
hdmi = 0
conf: BluetoothA2dpSpeaker
+ #
+ # Accessibility falls through media strategy if not in call (widely speaking)
+ #
ForceUseForMedia IsNot ForceNoBtA2dp
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes BluetoothA2dpSpeaker
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 1
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -96,15 +129,24 @@
usb_device = 0
hdmi = 0
- conf: ForceSpeaker
+ conf: ForceSpeakerWhenNotInCall
+ #
+ # Accessibility follows Media strategy if not in call
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
ForceUseForMedia Is ForceSpeaker
AvailableOutputDevices Includes Speaker
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 1
wired_headset = 0
wired_headphone = 0
@@ -115,14 +157,120 @@
usb_device = 0
hdmi = 0
+ conf: BluetoothScoCarkit
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ AvailableOutputDevices Includes BluetoothScoCarkit
+ ForceUseForCommunication Is ForceBtSco
+
+ component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
+ remote_submix = 0
+ earpiece = 0
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 1
+ bluetooth_sco = 0
+ speaker = 0
+ wired_headset = 0
+ wired_headphone = 0
+ line = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 0
+ usb_device = 0
+ hdmi = 0
+
+ conf: BluetoothScoHeadset
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ AvailableOutputDevices Includes BluetoothScoHeadset
+ ForceUseForCommunication Is ForceBtSco
+
+ component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
+ remote_submix = 0
+ earpiece = 0
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 1
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
+ speaker = 0
+ wired_headset = 0
+ wired_headphone = 0
+ line = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 0
+ usb_device = 0
+ hdmi = 0
+
+ conf: BluetoothSco
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ AvailableOutputDevices Includes BluetoothSco
+ ForceUseForCommunication Is ForceBtSco
+
+ component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
+ remote_submix = 0
+ earpiece = 0
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 1
+ speaker = 0
+ wired_headset = 0
+ wired_headphone = 0
+ line = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 0
+ usb_device = 0
+ hdmi = 0
+
conf: WiredHeadphone
+ ANY
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ #
+ # accessibility follows Media strategy if not in call
+ #
+ ALL
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes WiredHeadphone
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 1
@@ -134,13 +282,31 @@
hdmi = 0
conf: Line
+ ANY
+ #
+ # accessibility falls through Phone strategy if in call
+ # but Line has a lower priority than WiredHeadset in this case.
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ AvailableOutputDevices Excludes WiredHeadset
+ #
+ # accessibility follows Media strategy if not in call
+ #
AvailableOutputDevices Includes Line
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -152,13 +318,32 @@
hdmi = 0
conf: WiredHeadset
+ ANY
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ #
+ # accessibility follows Media strategy if not in call
+ #
+ ALL
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes WiredHeadset
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 1
wired_headphone = 0
@@ -169,32 +354,36 @@
usb_device = 0
hdmi = 0
- conf: UsbAccessory
- AvailableOutputDevices Includes UsbAccessory
-
- component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
- remote_submix = 0
- bluetooth_a2dp = 0
- bluetooth_a2dp_headphones = 0
- bluetooth_a2dp_speaker = 0
- speaker = 0
- wired_headset = 0
- wired_headphone = 0
- line = 0
- angl_dock_headset = 0
- dgtl_dock_headset = 0
- usb_accessory = 1
- usb_device = 0
- hdmi = 0
-
conf: UsbDevice
+ ANY
+ #
+ # accessibility falls through Phone strategy if in call (widely speaking)
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ #
+ # accessibility follows Media strategy if not in call
+ # Media strategy inverts the priority of USB device vs accessory
+ #
+ ALL
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
+ AvailableOutputDevices Excludes UsbAccessory
+ ForceUseForCommunication Is ForceSpeaker
AvailableOutputDevices Includes UsbDevice
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -205,14 +394,57 @@
usb_device = 1
hdmi = 0
+ conf: UsbAccessory
+ #
+ # accessibility falls through Phone strategy if in call (widely speaking)
+ # but USB accessory not reachable in call
+ #
+ # accessibility follows Media strategy if not in call
+ # Media strategy inverts the priority of USB device vs accessory
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
+ AvailableOutputDevices Includes UsbAccessory
+
+ component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
+ remote_submix = 0
+ earpiece = 0
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
+ speaker = 0
+ wired_headset = 0
+ wired_headphone = 0
+ line = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 1
+ usb_device = 0
+ hdmi = 0
+
conf: DgtlDockHeadset
+ #
+ # accessibility falls through Phone strategy if in call (widely speaking)
+ # but DgtlDockHeadset not reachable in call
+ #
+ # accessibility follows Media strategy if not in call
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes DgtlDockHeadset
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -225,19 +457,24 @@
conf: AuxDigital
#
- # Do not route accessibility prompts to a digital output currently configured with a
- # compressed format as they would likely not be mixed and dropped.
+ # accessibility falls through Phone strategy if in call (widely speaking)
+ # but Hdmi not reachable in call
#
- # @TODO How to translate the following condition(???)
- # desc->isActive() && !audio_is_linear_pcm(desc->mFormat) && devices != AUDIO_DEVICE_NONE
+ # accessibility follows Media strategy if not in call
#
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes Hdmi
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -249,14 +486,27 @@
hdmi = 1
conf: AnlgDockHeadset
+ #
+ # accessibility falls through Phone strategy if in call (widely speaking)
+ # but AnlgDockHeadset not reachable in call
+ #
+ # accessibility follows Media strategy if not in call
+ # Media strategy inverts the priority of USB device vs accessory
+ #
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes AnlgDockHeadset
ForceUseForDock Is ForceAnalogDock
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -267,14 +517,47 @@
usb_device = 0
hdmi = 0
+ conf: Earpiece
+ #
+ # accessibility falls through Phone strategy if in call
+ #
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ AvailableOutputDevices Includes Earpiece
+ ForceUseForCommunication IsNot ForceSpeaker
+
+ component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
+ remote_submix = 0
+ earpiece = 1
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
+ speaker = 0
+ wired_headset = 0
+ wired_headphone = 0
+ line = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 0
+ usb_device = 0
+ hdmi = 0
+
conf: Speaker
AvailableOutputDevices Includes Speaker
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 1
wired_headset = 0
wired_headphone = 0
@@ -288,9 +571,13 @@
conf: Default
component: /Policy/policy/strategies/accessibility/selected_output_devices/mask
remote_submix = 0
+ earpiece = 0
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_sco = 0
speaker = 0
wired_headset = 0
wired_headphone = 0
@@ -300,3 +587,4 @@
usb_accessory = 0
usb_device = 0
hdmi = 0
+
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw
index d8b5b9d..d9469c0 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw
@@ -245,12 +245,24 @@
line = 0
speaker = 0
- conf: LineWhenFollowingMedia
- #
- # DTMF follows Media strategy if not in call
- #
- TelephonyMode IsNot InCall
- TelephonyMode IsNot InCommunication
+ conf: Line
+ ANY
+ #
+ # DTMF falls through Phone strategy if in call
+ # but Line has a lower priority than WiredHeadset in this case.
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ AvailableOutputDevices Excludes WiredHeadset
+ #
+ # DTMF follows Media strategy if not in call
+ #
+ ALL
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
AvailableOutputDevices Includes Line
component: /Policy/policy/strategies/dtmf/selected_output_devices/mask
@@ -501,35 +513,6 @@
line = 0
speaker = 0
- conf: LineWhenFallThroughPhone
- #
- # DTMF falls through Phone strategy if in call
- #
- ANY
- TelephonyMode Is InCall
- TelephonyMode Is InCommunication
- AvailableOutputDevices Includes Line
- ForceUseForCommunication Is ForceSpeaker
-
- component: /Policy/policy/strategies/dtmf/selected_output_devices/mask
- remote_submix = 0
- earpiece = 0
- wired_headset = 0
- wired_headphone = 0
- bluetooth_sco = 0
- bluetooth_sco_headset = 0
- bluetooth_a2dp = 0
- bluetooth_a2dp_headphones = 0
- bluetooth_a2dp_speaker = 0
- hdmi = 0
- angl_dock_headset = 0
- dgtl_dock_headset = 0
- usb_accessory = 0
- usb_device = 0
- telephony_tx = 0
- line = 1
- speaker = 0
-
conf: Speaker
ANY
#
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw
index ae70914..0dad830 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw
@@ -227,6 +227,29 @@
line = 0
speaker = 0
+ conf: Line
+ AvailableOutputDevices Includes Line
+ ForceUseForCommunication IsNot ForceSpeaker
+
+ component: /Policy/policy/strategies/phone/selected_output_devices/mask
+ earpiece = 0
+ wired_headset = 0
+ wired_headphone = 0
+ bluetooth_sco = 0
+ bluetooth_sco_headset = 0
+ bluetooth_sco_carkit = 0
+ bluetooth_a2dp = 0
+ bluetooth_a2dp_headphones = 0
+ bluetooth_a2dp_speaker = 0
+ hdmi = 0
+ angl_dock_headset = 0
+ dgtl_dock_headset = 0
+ usb_accessory = 0
+ usb_device = 0
+ telephony_tx = 0
+ line = 1
+ speaker = 0
+
conf: UsbDevice
#
# Fallback BT Sco devices in case of FORCE_BT_SCO
@@ -404,33 +427,6 @@
line = 0
speaker = 0
- conf: Line
- #
- # Fallback BT Sco devices in case of FORCE_BT_SCO
- # or FORCE_NONE
- #
- AvailableOutputDevices Includes Line
- ForceUseForCommunication Is ForceSpeaker
-
- component: /Policy/policy/strategies/phone/selected_output_devices/mask
- earpiece = 0
- wired_headset = 0
- wired_headphone = 0
- bluetooth_sco = 0
- bluetooth_sco_headset = 0
- bluetooth_sco_carkit = 0
- bluetooth_a2dp = 0
- bluetooth_a2dp_headphones = 0
- bluetooth_a2dp_speaker = 0
- hdmi = 0
- angl_dock_headset = 0
- dgtl_dock_headset = 0
- usb_accessory = 0
- usb_device = 0
- telephony_tx = 0
- line = 1
- speaker = 0
-
conf: Speaker
#
# Fallback BT Sco devices in case of FORCE_BT_SCO
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw
index 71101f8..96723f6 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw
@@ -247,12 +247,14 @@
ANY
#
# Sonification follows Phone strategy if in call (widely speaking)
+ # but Line has a lower priority than WiredHeadset in this case.
#
ALL
ANY
TelephonyMode Is InCall
TelephonyMode Is InCommunication
- ForceUseForCommunication Is ForceSpeaker
+ ForceUseForCommunication IsNot ForceSpeaker
+ AvailableOutputDevices Excludes WiredHeadset
#
# Sonification falls through media strategy if not in call (widely speaking)
#
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw
index f66674c..7626944 100644
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw
@@ -267,15 +267,29 @@
usb_device = 0
hdmi = 0
- conf: LineWhenFollowMediaStrategy
- #
- # SonificationRespectful Follows Sonification that falls through Media strategy if not in call
- # SonificationRespectful follows media if music stream is active
- #
- TelephonyMode IsNot InCall
- TelephonyMode IsNot InCommunication
- AvailableOutputDevices Includes WiredHeadphone
- ForceUseForMedia IsNot ForceSpeaker
+ conf: Line
+ ANY
+ #
+ # SonificationRespectful Follows Phone strategy if in call
+ # but Line has a lower priority than WiredHeadset in this case.
+ #
+ #
+ ALL
+ ANY
+ TelephonyMode Is InCall
+ TelephonyMode Is InCommunication
+ ForceUseForCommunication IsNot ForceSpeaker
+ AvailableOutputDevices Excludes WiredHeadset
+ #
+ # SonificationRespectful Follows Sonification that falls through Media strategy if not in call
+ # SonificationRespectful follows media if music stream is active
+ #
+ ALL
+ TelephonyMode IsNot InCall
+ TelephonyMode IsNot InCommunication
+ AvailableOutputDevices Includes WiredHeadphone
+ ForceUseForMedia IsNot ForceSpeaker
+ AvailableOutputDevices Includes Line
component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask
earpiece = 0
@@ -517,29 +531,3 @@
usb_device = 0
hdmi = 0
- conf: Line
- #
- # SonificationRespectful Follows Phone strategy if in call
- #
- ANY
- TelephonyMode Is InCall
- TelephonyMode Is InCommunication
- ForceUseForCommunication Is ForceSpeaker
- AvailableOutputDevices Includes Line
-
- component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask
- earpiece = 0
- bluetooth_sco = 0
- bluetooth_sco_headset = 0
- bluetooth_sco_carkit = 0
- bluetooth_a2dp_headphones = 0
- bluetooth_a2dp_speaker = 0
- bluetooth_a2dp = 0
- wired_headset = 0
- wired_headphone = 0
- line = 1
- angl_dock_headset = 0
- dgtl_dock_headset = 0
- usb_accessory = 0
- usb_device = 0
- hdmi = 0
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt b/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt
index ef06498..28a7ef1 100755
--- a/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt
+++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt
@@ -7,3 +7,4 @@
ExclusiveCriterion ForceUseForDock : ForceNone ForceWiredAccessory ForceBtCarDock ForceBtDeskDock ForceAnalogDock ForceDigitalDock
ExclusiveCriterion ForceUseForSystem : ForceNone ForceSystemEnforced
ExclusiveCriterion ForceUseForHdmiSystemAudio : ForceNone ForceHdmiSystemEnforced
+ExclusiveCriterion ForceUseForEncodedSurround : ForceNone ForceEncodedSurroundNever ForceEncodedSurroundAlways
diff --git a/services/audiopolicy/engineconfigurable/src/Engine.cpp b/services/audiopolicy/engineconfigurable/src/Engine.cpp
index 7f8ed1f..0d18ffa 100755
--- a/services/audiopolicy/engineconfigurable/src/Engine.cpp
+++ b/services/audiopolicy/engineconfigurable/src/Engine.cpp
@@ -140,15 +140,6 @@
routing_strategy Engine::ManagerInterfaceImpl::getStrategyForUsage(audio_usage_t usage)
{
- const SwAudioOutputCollection &outputs = mPolicyEngine->mApmObserver->getOutputs();
-
- //FIXME: getStrategyForUsage() should return STRATEGY_ACCESSIBILITY and getDeviceForStrategy()
- // should be implemented accordingly for STRATEGY_ACCESSIBILITY
- if (usage == AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY &&
- (outputs.isStreamActive(AUDIO_STREAM_RING) ||
- outputs.isStreamActive(AUDIO_STREAM_ALARM))) {
- return STRATEGY_SONIFICATION;
- }
return mPolicyEngine->getPropertyForKey<routing_strategy, audio_usage_t>(usage);
}
@@ -173,6 +164,14 @@
outputs.isStreamActive(AUDIO_STREAM_MUSIC, SONIFICATION_RESPECTFUL_AFTER_MUSIC_DELAY)) {
return mPolicyEngine->getPropertyForKey<audio_devices_t, routing_strategy>(STRATEGY_MEDIA);
}
+ if (strategy == STRATEGY_ACCESSIBILITY &&
+ (outputs.isStreamActive(AUDIO_STREAM_RING) || outputs.isStreamActive(AUDIO_STREAM_ALARM))) {
+ // do not route accessibility prompts to a digital output currently configured with a
+ // compressed format as they would likely not be mixed and dropped.
+ // Device For Sonification conf file has HDMI, SPDIF and HDMI ARC unreacheable.
+ return mPolicyEngine->getPropertyForKey<audio_devices_t, routing_strategy>(
+ STRATEGY_SONIFICATION);
+ }
return mPolicyEngine->getPropertyForKey<audio_devices_t, routing_strategy>(strategy);
}
diff --git a/services/audiopolicy/engineconfigurable/wrapper/audio_policy_criteria_conf.h b/services/audiopolicy/engineconfigurable/wrapper/audio_policy_criteria_conf.h
index 58e7135..31b7e0f 100755
--- a/services/audiopolicy/engineconfigurable/wrapper/audio_policy_criteria_conf.h
+++ b/services/audiopolicy/engineconfigurable/wrapper/audio_policy_criteria_conf.h
@@ -61,7 +61,8 @@
[AUDIO_POLICY_FORCE_FOR_RECORD] = "ForceUseForRecord",
[AUDIO_POLICY_FORCE_FOR_DOCK] = "ForceUseForDock",
[AUDIO_POLICY_FORCE_FOR_SYSTEM] = "ForceUseForSystem",
- [AUDIO_POLICY_FORCE_FOR_HDMI_SYSTEM_AUDIO] = "ForceUseForHdmiSystemAudio"
+ [AUDIO_POLICY_FORCE_FOR_HDMI_SYSTEM_AUDIO] = "ForceUseForHdmiSystemAudio",
+ [AUDIO_POLICY_FORCE_FOR_ENCODED_SURROUND] = "ForceUseForEncodedSurround"
};
diff --git a/services/audiopolicy/engineconfigurable/wrapper/config/audio_policy_criteria.conf b/services/audiopolicy/engineconfigurable/wrapper/config/audio_policy_criteria.conf
index 5b046a8..043d5a6 100755
--- a/services/audiopolicy/engineconfigurable/wrapper/config/audio_policy_criteria.conf
+++ b/services/audiopolicy/engineconfigurable/wrapper/config/audio_policy_criteria.conf
@@ -93,6 +93,11 @@
# audio_policy_forced_config_t from system/audio.h
#
ForceUseForHdmiSystemAudioType 0:ForceNone,12:ForceHdmiSystemEnforced
+ #
+ # The values of the mode MUST be aligned with the definition of the
+ # audio_policy_forced_config_t from system/audio_policy.h
+ #
+ ForceUseForEncodedSurroundType 0:ForceNone,13:ForceEncodedSurroundNever,14:ForceEncodedSurroundAlways
}
Criterion {
@@ -132,6 +137,10 @@
Type ForceUseForHdmiSystemAudioType
Default ForceNone
}
+ ForceUseForEncodedSurround {
+ Type ForceUseForEncodedSurroundType
+ Default ForceNone
+ }
}
}
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 07c470d..fe2f9a6 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -309,9 +309,6 @@
void AudioPolicyManager::updateCallRouting(audio_devices_t rxDevice, int delayMs)
{
bool createTxPatch = false;
- struct audio_patch patch;
- patch.num_sources = 1;
- patch.num_sinks = 1;
status_t status;
audio_patch_handle_t afPatchHandle;
DeviceVector deviceList;
@@ -344,8 +341,11 @@
== AUDIO_DEVICE_NONE) {
createTxPatch = true;
}
- } else {
- // create RX path audio patch
+ } else { // create RX path audio patch
+ struct audio_patch patch;
+
+ patch.num_sources = 1;
+ patch.num_sinks = 1;
deviceList = mAvailableOutputDevices.getDevicesFromType(rxDevice);
ALOG_ASSERT(!deviceList.isEmpty(),
"updateCallRouting() selected device not in output device list");
@@ -384,9 +384,9 @@
}
createTxPatch = true;
}
- if (createTxPatch) {
-
+ if (createTxPatch) { // create TX path audio patch
struct audio_patch patch;
+
patch.num_sources = 1;
patch.num_sinks = 1;
deviceList = mAvailableInputDevices.getDevicesFromType(txDevice);
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.cpp b/services/camera/libcameraservice/device3/Camera3Stream.cpp
index a4714a7..80dce84 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Stream.cpp
@@ -476,16 +476,51 @@
res = getBufferLocked(buffer);
if (res == OK) {
fireBufferListenersLocked(*buffer, /*acquired*/true, /*output*/true);
+ if (buffer->buffer) {
+ mOutstandingBuffers.push_back(*buffer->buffer);
+ }
}
return res;
}
+bool Camera3Stream::isOutstandingBuffer(const camera3_stream_buffer &buffer) {
+ if (buffer.buffer == nullptr) {
+ return false;
+ }
+
+ for (auto b : mOutstandingBuffers) {
+ if (b == *buffer.buffer) {
+ return true;
+ }
+ }
+ return false;
+}
+
+void Camera3Stream::removeOutstandingBuffer(const camera3_stream_buffer &buffer) {
+ if (buffer.buffer == nullptr) {
+ return;
+ }
+
+ for (auto b = mOutstandingBuffers.begin(); b != mOutstandingBuffers.end(); b++) {
+ if (*b == *buffer.buffer) {
+ mOutstandingBuffers.erase(b);
+ return;
+ }
+ }
+}
+
status_t Camera3Stream::returnBuffer(const camera3_stream_buffer &buffer,
nsecs_t timestamp) {
ATRACE_CALL();
Mutex::Autolock l(mLock);
+ // Check if this buffer is outstanding.
+ if (!isOutstandingBuffer(buffer)) {
+ ALOGE("%s: Stream %d: Returning an unknown buffer.", __FUNCTION__, mId);
+ return BAD_VALUE;
+ }
+
/**
* TODO: Check that the state is valid first.
*
@@ -503,6 +538,7 @@
// buffer to be returned.
mOutputBufferReturnedSignal.signal();
+ removeOutstandingBuffer(buffer);
return res;
}
@@ -535,6 +571,9 @@
res = getInputBufferLocked(buffer);
if (res == OK) {
fireBufferListenersLocked(*buffer, /*acquired*/true, /*output*/false);
+ if (buffer->buffer) {
+ mOutstandingBuffers.push_back(*buffer->buffer);
+ }
}
return res;
@@ -544,11 +583,19 @@
ATRACE_CALL();
Mutex::Autolock l(mLock);
+ // Check if this buffer is outstanding.
+ if (!isOutstandingBuffer(buffer)) {
+ ALOGE("%s: Stream %d: Returning an unknown buffer.", __FUNCTION__, mId);
+ return BAD_VALUE;
+ }
+
status_t res = returnInputBufferLocked(buffer);
if (res == OK) {
fireBufferListenersLocked(buffer, /*acquired*/false, /*output*/false);
mInputBufferReturnedSignal.signal();
}
+
+ removeOutstandingBuffer(buffer);
return res;
}
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.h b/services/camera/libcameraservice/device3/Camera3Stream.h
index c932e253..810383d 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.h
+++ b/services/camera/libcameraservice/device3/Camera3Stream.h
@@ -457,6 +457,12 @@
status_t cancelPrepareLocked();
+ // Return whether the buffer is in the list of outstanding buffers.
+ bool isOutstandingBuffer(const camera3_stream_buffer& buffer);
+
+ // Remove the buffer from the list of outstanding buffers.
+ void removeOutstandingBuffer(const camera3_stream_buffer& buffer);
+
// Tracking for PREPARING state
// State of buffer preallocation. Only true if either prepareNextBuffer
@@ -470,6 +476,9 @@
// Number of buffers allocated on last prepare call.
size_t mLastMaxCount;
+ // Outstanding buffers dequeued from the stream's buffer queue.
+ List<buffer_handle_t> mOutstandingBuffers;
+
}; // class Camera3Stream
}; // namespace camera3
diff --git a/services/soundtrigger/SoundTriggerHwService.cpp b/services/soundtrigger/SoundTriggerHwService.cpp
index 8f37bed..bb2416a 100644
--- a/services/soundtrigger/SoundTriggerHwService.cpp
+++ b/services/soundtrigger/SoundTriggerHwService.cpp
@@ -545,33 +545,9 @@
AutoMutex lock(mLock);
if (mModels.size() >= mDescriptor.properties.max_sound_models) {
- /* Make space for a keyphrase sound model by first trying to swap out a previously loaded
- * keyphrase sound model, or if needed, another sound model. This decision would optimally
- * happen in SoundTriggerHelper, but is happening here because state tracking isn't good
- * enough in SoundTriggerHelper to ensure that state is consistent between it and the HAL,
- * nor does sufficient error handling exist to recover from inconsistencies.
- * Once that exists:
- * TODO: we should return an error instead of unloading a previous sound model here.
- */
- if (mModels.size() == 0) {
- return INVALID_OPERATION;
- }
- if (sound_model->type == SOUND_MODEL_TYPE_KEYPHRASE) {
- ALOGW("loadSoundModel() max number of models exceeded %d making room for a new one",
- mDescriptor.properties.max_sound_models);
- sound_model_handle_t unload_handle = mModels.valueAt(0)->mHandle;
- for (size_t i = 0; i < mModels.size(); i++) {
- if (mModels.valueAt(i)->mType == SOUND_MODEL_TYPE_KEYPHRASE) {
- unload_handle = mModels.keyAt(i);
- break;
- }
- }
- unloadSoundModel_l(unload_handle);
- } else {
- ALOGW("loadSoundModel(): Not loading, max number of models (%d) would be exceeded",
- mDescriptor.properties.max_sound_models);
- return INVALID_OPERATION;
- }
+ ALOGW("loadSoundModel(): Not loading, max number of models (%d) would be exceeded",
+ mDescriptor.properties.max_sound_models);
+ return INVALID_OPERATION;
}
status_t status = mHwDevice->load_sound_model(mHwDevice, sound_model,