Merge "AudioService: add support for ENCODED_SURROUND_OUTPUT" into nyc-dev
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 247c4ae..f597440 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -638,7 +638,7 @@
public static final int PHONE_STATE_RINGING = 1;
public static final int PHONE_STATE_INCALL = 2;
- // device categories config for setForceUse, must match AudioSystem::forced_config
+ // device categories config for setForceUse, must match audio_policy_forced_cfg_t
public static final int FORCE_NONE = 0;
public static final int FORCE_SPEAKER = 1;
public static final int FORCE_HEADPHONES = 2;
@@ -652,17 +652,20 @@
public static final int FORCE_NO_BT_A2DP = 10;
public static final int FORCE_SYSTEM_ENFORCED = 11;
public static final int FORCE_HDMI_SYSTEM_AUDIO_ENFORCED = 12;
- private static final int NUM_FORCE_CONFIG = 13;
+ public static final int FORCE_ENCODED_SURROUND_NEVER = 13;
+ public static final int FORCE_ENCODED_SURROUND_ALWAYS = 14;
+ public static final int NUM_FORCE_CONFIG = 15;
public static final int FORCE_DEFAULT = FORCE_NONE;
- // usage for setForceUse, must match AudioSystem::force_use
+ // usage for setForceUse, must match audio_policy_force_use_t
public static final int FOR_COMMUNICATION = 0;
public static final int FOR_MEDIA = 1;
public static final int FOR_RECORD = 2;
public static final int FOR_DOCK = 3;
public static final int FOR_SYSTEM = 4;
public static final int FOR_HDMI_SYSTEM_AUDIO = 5;
- private static final int NUM_FORCE_USE = 6;
+ public static final int FOR_ENCODED_SURROUND = 6;
+ private static final int NUM_FORCE_USE = 7;
// usage for AudioRecord.startRecordingSync(), must match AudioSystem::sync_event_t
public static final int SYNC_EVENT_NONE = 0;
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index a3100c8..5a3639a 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -849,6 +849,7 @@
AudioSystem.setForceUse(AudioSystem.FOR_DOCK,
mDockAudioMediaEnabled ?
AudioSystem.FORCE_ANALOG_DOCK : AudioSystem.FORCE_NONE);
+ readEncodedSurroundMode(mContentResolver);
}
if (mHdmiManager != null) {
synchronized (mHdmiManager) {
@@ -1011,6 +1012,7 @@
0);
}
+
private void updateMasterMono(ContentResolver cr)
{
final boolean masterMono = System.getIntForUser(
@@ -1021,6 +1023,44 @@
AudioSystem.setMasterMono(masterMono);
}
+ private void readEncodedSurroundMode(ContentResolver cr)
+ {
+ int encodedSurroundMode = Settings.Global.getInt(
+ cr, Settings.Global.ENCODED_SURROUND_OUTPUT,
+ Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO);
+ sendEncodedSurroundMode(encodedSurroundMode);
+ }
+
+ private void sendEncodedSurroundMode(int encodedSurroundMode)
+ {
+ // initialize to guaranteed bad value
+ int forceSetting = AudioSystem.NUM_FORCE_CONFIG;
+ switch (encodedSurroundMode) {
+ case Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO:
+ forceSetting = AudioSystem.FORCE_NONE;
+ break;
+ case Settings.Global.ENCODED_SURROUND_OUTPUT_NEVER:
+ forceSetting = AudioSystem.FORCE_ENCODED_SURROUND_NEVER;
+ break;
+ case Settings.Global.ENCODED_SURROUND_OUTPUT_ALWAYS:
+ forceSetting = AudioSystem.FORCE_ENCODED_SURROUND_ALWAYS;
+ break;
+ default:
+ Log.e(TAG, "updateSurroundSoundSettings: illegal value "
+ + encodedSurroundMode);
+ break;
+ }
+ if (forceSetting != AudioSystem.NUM_FORCE_CONFIG) {
+ sendMsg(mAudioHandler,
+ MSG_SET_FORCE_USE,
+ SENDMSG_QUEUE,
+ AudioSystem.FOR_ENCODED_SURROUND,
+ forceSetting,
+ null,
+ 0);
+ }
+ }
+
private void readPersistedSettings() {
final ContentResolver cr = mContentResolver;
@@ -1062,6 +1102,7 @@
updateRingerModeAffectedStreams();
readDockAudioSettings(cr);
+ readEncodedSurroundMode(cr);
}
mMuteAffectedStreams = System.getIntForUser(cr,
@@ -4628,6 +4669,7 @@
}
readDockAudioSettings(mContentResolver);
updateMasterMono(mContentResolver);
+ readEncodedSurroundMode(mContentResolver);
}
}
}
@@ -6315,4 +6357,4 @@
if (DEBUG_VOL) Log.d(TAG, "Reloaded controller service: " + this);
}
}
-}
\ No newline at end of file
+}