Loading services/core/java/com/android/server/hdmi/Constants.java +6 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +41 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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 Loading Loading
services/core/java/com/android/server/hdmi/Constants.java +6 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +41 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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)); Loading Loading @@ -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 Loading