Merge "Import translations. DO NOT MERGE" into lmp-mr1-dev
diff --git a/services/core/java/com/android/server/hdmi/Constants.java b/services/core/java/com/android/server/hdmi/Constants.java
index bb12eae..f6d4efd 100644
--- a/services/core/java/com/android/server/hdmi/Constants.java
+++ b/services/core/java/com/android/server/hdmi/Constants.java
@@ -186,6 +186,7 @@
static final int INVALID_PORT_ID = HdmiDeviceInfo.PORT_INVALID;
static final int INVALID_PHYSICAL_ADDRESS = HdmiDeviceInfo.PATH_INVALID;
+ static final int PATH_INTERNAL = HdmiDeviceInfo.PATH_INTERNAL;
// Send result codes. It should be consistent with hdmi_cec.h's send_message error code.
static final int SEND_RESULT_SUCCESS = 0;
diff --git a/services/core/java/com/android/server/hdmi/SystemAudioAction.java b/services/core/java/com/android/server/hdmi/SystemAudioAction.java
index 6023354..a209cd0 100644
--- a/services/core/java/com/android/server/hdmi/SystemAudioAction.java
+++ b/services/core/java/com/android/server/hdmi/SystemAudioAction.java
@@ -90,10 +90,9 @@
}
private void sendSystemAudioModeRequestInternal() {
- int avrPhysicalAddress = tv().getAvrDeviceInfo().getPhysicalAddress();
HdmiCecMessage command = HdmiCecMessageBuilder.buildSystemAudioModeRequest(
getSourceAddress(),
- mAvrLogicalAddress, avrPhysicalAddress, mTargetAudioStatus);
+ mAvrLogicalAddress, getSystemAudioModeRequestParam(), mTargetAudioStatus);
sendCommand(command, new HdmiControlService.SendMessageCallback() {
@Override
public void onSendCompleted(int error) {
@@ -108,6 +107,20 @@
addTimer(mState, mTargetAudioStatus ? ON_TIMEOUT_MS : OFF_TIMEOUT_MS);
}
+ private int getSystemAudioModeRequestParam() {
+ // <System Audio Mode Request> takes the physical address of the source device
+ // as a parameter. Get it from following candidates, in the order listed below:
+ // 1) physical address of the active source
+ // 2) active routing path
+ // 3) physical address of TV
+ if (tv().getActiveSource().isValid()) {
+ return tv().getActiveSource().physicalAddress;
+ }
+ int param = tv().getActivePath();
+ return param != Constants.INVALID_PHYSICAL_ADDRESS
+ ? param : Constants.PATH_INTERNAL;
+ }
+
private void handleSendSystemAudioModeRequestTimeout() {
if (!mTargetAudioStatus // Don't retry for Off case.
|| mSendRetryCount++ >= MAX_SEND_RETRY_COUNT) {