Merge "Check for eARC TX feature flag"

This commit is contained in:
Nathalie Le Clair
2023-01-12 12:37:32 +00:00
committed by Android (Google) Code Review
2 changed files with 47 additions and 6 deletions

View File

@@ -620,6 +620,12 @@ final class Constants {
@interface HpdSignalType {}
static final String DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE = "soundbar_mode";
static final String DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX = "enable_earc_tx";
@StringDef({
DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE,
DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX
})
@interface FeatureFlag {}
private Constants() {
/* cannot be instantiated */

View File

@@ -18,6 +18,7 @@ package com.android.server.hdmi;
import static android.hardware.hdmi.HdmiControlManager.DEVICE_EVENT_ADD_DEVICE;
import static android.hardware.hdmi.HdmiControlManager.DEVICE_EVENT_REMOVE_DEVICE;
import static android.hardware.hdmi.HdmiControlManager.EARC_FEATURE_DISABLED;
import static android.hardware.hdmi.HdmiControlManager.EARC_FEATURE_ENABLED;
import static android.hardware.hdmi.HdmiControlManager.HDMI_CEC_CONTROL_ENABLED;
import static android.hardware.hdmi.HdmiControlManager.SOUNDBAR_MODE_DISABLED;
@@ -453,6 +454,9 @@ public class HdmiControlService extends SystemService {
@ServiceThreadOnly
private boolean mSoundbarModeFeatureFlagEnabled = false;
@ServiceThreadOnly
private boolean mEarcTxFeatureFlagEnabled = false;
@ServiceThreadOnly
private int mActivePortId = Constants.INVALID_PORT_ID;
@@ -666,9 +670,18 @@ public class HdmiControlService extends SystemService {
setProhibitMode(false);
mHdmiControlEnabled = mHdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED);
mSoundbarModeFeatureFlagEnabled = mDeviceConfig.getBoolean(
Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false);
mEarcTxFeatureFlagEnabled = mDeviceConfig.getBoolean(
Constants.DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX, false);
synchronized (mLock) {
mEarcEnabled = (mHdmiCecConfig.getIntValue(
HdmiControlManager.SETTING_NAME_EARC_ENABLED) == EARC_FEATURE_ENABLED);
if (isTvDevice()) {
mEarcEnabled &= mEarcTxFeatureFlagEnabled;
}
}
setHdmiCecVolumeControlEnabledInternal(getHdmiCecConfig().getIntValue(
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE));
@@ -812,20 +825,42 @@ public class HdmiControlService extends SystemService {
}
}
}, mServiceThreadExecutor);
if (isTvDevice()) {
mDeviceConfig.addOnPropertiesChangedListener(getContext().getMainExecutor(),
new DeviceConfig.OnPropertiesChangedListener() {
@Override
public void onPropertiesChanged(DeviceConfig.Properties properties) {
mEarcTxFeatureFlagEnabled = properties.getBoolean(
Constants.DEVICE_CONFIG_FEATURE_FLAG_ENABLE_EARC_TX,
false);
boolean earcEnabledSetting = mHdmiCecConfig.getIntValue(
HdmiControlManager.SETTING_NAME_EARC_ENABLED)
== EARC_FEATURE_ENABLED;
setEarcEnabled(earcEnabledSetting && mEarcTxFeatureFlagEnabled
? EARC_FEATURE_ENABLED : EARC_FEATURE_DISABLED);
}
});
}
mHdmiCecConfig.registerChangeListener(HdmiControlManager.SETTING_NAME_EARC_ENABLED,
new HdmiCecConfig.SettingChangeListener() {
@Override
public void onChange(String setting) {
@HdmiControlManager.HdmiCecControl int enabled = mHdmiCecConfig.getIntValue(
HdmiControlManager.SETTING_NAME_EARC_ENABLED);
setEarcEnabled(enabled);
if (isTvDevice()) {
boolean earcEnabledSetting = mHdmiCecConfig.getIntValue(
HdmiControlManager.SETTING_NAME_EARC_ENABLED)
== EARC_FEATURE_ENABLED;
setEarcEnabled(earcEnabledSetting && mEarcTxFeatureFlagEnabled
? EARC_FEATURE_ENABLED : EARC_FEATURE_DISABLED);
} else {
setEarcEnabled(mHdmiCecConfig.getIntValue(
HdmiControlManager.SETTING_NAME_EARC_ENABLED));
}
}
},
mServiceThreadExecutor);
mSoundbarModeFeatureFlagEnabled = mDeviceConfig.getBoolean(
Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false);
mDeviceConfig.addOnPropertiesChangedListener(getContext().getMainExecutor(),
new DeviceConfig.OnPropertiesChangedListener() {
@Override