audio policy: add support for ro.audio.media_deep_buffer
Bug: 17931716.
Change-Id: Ife170f20f5d02b71059fbd384bd29759fafee826
diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp
index 536987a..e4d785c 100644
--- a/services/audiopolicy/AudioPolicyManager.cpp
+++ b/services/audiopolicy/AudioPolicyManager.cpp
@@ -926,6 +926,10 @@
if ((flags & AUDIO_OUTPUT_FLAG_HW_AV_SYNC) != 0) {
flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
}
+ if (mForceDeepBufferForMedia && (flags & AUDIO_OUTPUT_FLAG_DIRECT) == 0 &&
+ stream == AUDIO_STREAM_MUSIC) {
+ flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
+ }
sp<IOProfile> profile;
@@ -2653,8 +2657,14 @@
mTotalEffectsCpuLoad(0), mTotalEffectsMemory(0),
mA2dpSuspended(false),
mSpeakerDrcEnabled(false), mNextUniqueId(1),
- mAudioPortGeneration(1)
+ mAudioPortGeneration(1),
+ mForceDeepBufferForMedia(false)
{
+ char propValue[PROPERTY_VALUE_MAX];
+ if (property_get("ro.audio.media_deep_buffer", propValue, "0")) {
+ mForceDeepBufferForMedia = atoi(propValue);
+ }
+
mUidCached = getuid();
mpClientInterface = clientInterface;