summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--policy_hal/AudioPolicyManager.cpp42
1 files changed, 11 insertions, 31 deletions
diff --git a/policy_hal/AudioPolicyManager.cpp b/policy_hal/AudioPolicyManager.cpp
index 112ab284..2b567b18 100644
--- a/policy_hal/AudioPolicyManager.cpp
+++ b/policy_hal/AudioPolicyManager.cpp
@@ -1485,48 +1485,28 @@ audio_io_handle_t AudioPolicyManagerCustom::getOutputForDevice(
flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
}
- // Do offload magic here
- if ((flags == AUDIO_OUTPUT_FLAG_NONE) && (stream == AUDIO_STREAM_MUSIC) &&
- (offloadInfo != NULL) &&
- ((offloadInfo->usage == AUDIO_USAGE_MEDIA ||
- (offloadInfo->usage == AUDIO_USAGE_GAME)))) {
- if ((flags & AUDIO_OUTPUT_FLAG_DIRECT) == 0) {
- ALOGD("AudioCustomHAL --> Force Direct Flag ..");
- flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
- }
- }
-
- // only allow deep buffering for music stream type
- if (stream != AUDIO_STREAM_MUSIC) {
- flags = (audio_output_flags_t)(flags &~AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
- }
- if (stream == AUDIO_STREAM_TTS) {
- flags = AUDIO_OUTPUT_FLAG_TTS;
- }
-
- // open a direct output if required by specified parameters
- //force direct flag if offload flag is set: offloading implies a direct output stream
- // and all common behaviors are driven by checking only the direct flag
- // this should normally be set appropriately in the policy configuration file
- if ((flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) != 0) {
- flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
- }
- if ((flags & AUDIO_OUTPUT_FLAG_HW_AV_SYNC) != 0) {
- flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
- }
+ bool forced_deep = false;
// only allow deep buffering for music stream type
if (stream != AUDIO_STREAM_MUSIC) {
flags = (audio_output_flags_t)(flags &~AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
} else if (/* stream == AUDIO_STREAM_MUSIC && */
flags == AUDIO_OUTPUT_FLAG_NONE &&
property_get_bool("audio.deep_buffer.media", false /* default_value */)) {
- flags = (audio_output_flags_t)AUDIO_OUTPUT_FLAG_DEEP_BUFFER;
+ flags = (audio_output_flags_t)(AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
+ forced_deep = true;
}
-
if (stream == AUDIO_STREAM_TTS) {
flags = AUDIO_OUTPUT_FLAG_TTS;
}
+ // Do offload magic here
+ if (((flags == AUDIO_OUTPUT_FLAG_NONE) || forced_deep) &&
+ (stream == AUDIO_STREAM_MUSIC) && (offloadInfo != NULL) &&
+ ((offloadInfo->usage == AUDIO_USAGE_MEDIA) || (offloadInfo->usage == AUDIO_USAGE_GAME))) {
+ flags = (audio_output_flags_t)(flags | AUDIO_OUTPUT_FLAG_DIRECT);
+ ALOGD("AudioCustomHAL --> Force Direct Flag .. flag (0x%x)", flags);
+ }
+
sp<IOProfile> profile;
// skip direct output selection if the request can obviously be attached to a mixed output