Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1599505 authored by Mikhail Naganov's avatar Mikhail Naganov Committed by Android (Google) Code Review
Browse files

Merge changes from topic "fix-b-199687164-auto-ac3"

* changes:
  Remove automatic addition of AC3, IEC61937 to HDMI outputs
  Fix some issues with audiopolicy_tests
parents 681537bc 83caee07
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -58,15 +58,6 @@ DeviceDescriptor::DeviceDescriptor(const AudioDeviceTypeAddr &deviceTypeAddr,
        mDeclaredAddress(DeviceDescriptorBase::address())
{
    mCurrentEncodedFormat = AUDIO_FORMAT_DEFAULT;
    /* If framework runs against a pre 5.0 Audio HAL, encoded formats are absent from the config.
     * FIXME: APM should know the version of the HAL and don't add the formats for V5.0.
     * For now, the workaround to remove AC3 and IEC61937 support on HDMI is to declare
     * something like 'encodedFormats="AUDIO_FORMAT_PCM_16_BIT"' on the HDMI devicePort.
     */
    if (mDeviceTypeAddr.mType == AUDIO_DEVICE_OUT_HDMI && mEncodedFormats.empty()) {
        mEncodedFormats.push_back(AUDIO_FORMAT_AC3);
        mEncodedFormats.push_back(AUDIO_FORMAT_IEC61937);
    }
}

void DeviceDescriptor::attach(const sp<HwModule>& module)
+14 −7
Original line number Diff line number Diff line
@@ -28,19 +28,26 @@ namespace android {
class AudioPolicyManagerTestClientForHdmi : public AudioPolicyManagerTestClient {
public:
    String8 getParameters(audio_io_handle_t /* ioHandle */, const String8&  /* keys*/ ) override {
        return mAudioParameters.toString();
        AudioParameter mAudioParameters;
        std::string formats;
        for (const auto& f : mSupportedFormats) {
            if (!formats.empty()) formats += AUDIO_PARAMETER_VALUE_LIST_SEPARATOR;
            formats += audio_format_to_string(f);
        }

    void addSupportedFormat(audio_format_t format) override {
        mAudioParameters.add(
                String8(AudioParameter::keyStreamSupportedFormats),
                String8(audio_format_to_string(format)));
                String8(formats.c_str()));
        mAudioParameters.addInt(String8(AudioParameter::keyStreamSupportedSamplingRates), 48000);
        mAudioParameters.add(String8(AudioParameter::keyStreamSupportedChannels), String8(""));
        return mAudioParameters.toString();
    }

    void addSupportedFormat(audio_format_t format) override {
        mSupportedFormats.insert(format);
    }

private:
    AudioParameter mAudioParameters;
    std::set<audio_format_t> mSupportedFormats;
};

} // namespace android
+10 −8
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ class AudioPolicyManagerTest : public testing::Test {
void AudioPolicyManagerTest::SetUp() {
    mClient.reset(getClient());
    mManager.reset(new AudioPolicyTestManager(mClient.get()));
    SetUpManagerConfig();  // Subclasses may want to customize the config.
    ASSERT_NO_FATAL_FAILURE(SetUpManagerConfig());  // Subclasses may want to customize the config.
    ASSERT_EQ(NO_ERROR, mManager->initialize());
    ASSERT_EQ(NO_ERROR, mManager->initCheck());
}
@@ -401,7 +401,7 @@ INSTANTIATE_TEST_CASE_P(

void AudioPolicyManagerTestMsd::SetUpManagerConfig() {
    // TODO: Consider using Serializer to load part of the config from a string.
    AudioPolicyManagerTest::SetUpManagerConfig();
    ASSERT_NO_FATAL_FAILURE(AudioPolicyManagerTest::SetUpManagerConfig());
    AudioPolicyConfig& config = mManager->getConfig();
    mMsdOutputDevice = new DeviceDescriptor(AUDIO_DEVICE_OUT_BUS);
    sp<AudioProfile> pcmOutputProfile = new AudioProfile(
@@ -660,6 +660,7 @@ const std::string AudioPolicyManagerTestWithConfigurationFile::sDefaultConfig =
void AudioPolicyManagerTestWithConfigurationFile::SetUpManagerConfig() {
    status_t status = deserializeAudioPolicyFile(getConfigFile().c_str(), &mManager->getConfig());
    ASSERT_EQ(NO_ERROR, status);
    mManager->getConfig().setSource(getConfigFile());
}

TEST_F(AudioPolicyManagerTestWithConfigurationFile, InitSuccess) {
@@ -825,8 +826,8 @@ const std::string AudioPolicyManagerTestForHdmi::sTvConfig =
        "test_settop_box_surround_configuration.xml";

void AudioPolicyManagerTestForHdmi::SetUp() {
    AudioPolicyManagerTest::SetUp();
    // Note that 'AC3' isn't added as it is handled automatically by APM.
    ASSERT_NO_FATAL_FAILURE(AudioPolicyManagerTest::SetUp());
    mClient->addSupportedFormat(AUDIO_FORMAT_AC3);
    mClient->addSupportedFormat(AUDIO_FORMAT_E_AC3);
    mManager->setDeviceConnectionState(
            AUDIO_DEVICE_OUT_HDMI, AUDIO_POLICY_DEVICE_STATE_AVAILABLE,
@@ -1051,7 +1052,7 @@ protected:
};

void AudioPolicyManagerTestDPPlaybackReRouting::SetUp() {
    AudioPolicyManagerTestDynamicPolicy::SetUp();
    ASSERT_NO_FATAL_FAILURE(AudioPolicyManagerTestDynamicPolicy::SetUp());

    mTracker.reset(new RecordingActivityTracker());

@@ -1237,7 +1238,7 @@ protected:
};

void AudioPolicyManagerTestDPMixRecordInjection::SetUp() {
    AudioPolicyManagerTestDynamicPolicy::SetUp();
    ASSERT_NO_FATAL_FAILURE(AudioPolicyManagerTestDynamicPolicy::SetUp());

    mTracker.reset(new RecordingActivityTracker());

@@ -1391,7 +1392,8 @@ TEST_P(AudioPolicyManagerTestDeviceConnection, SetDeviceConnectionState) {
    if (type == AUDIO_DEVICE_OUT_HDMI) {
        // Set device connection state failed due to no device descriptor found
        // For HDMI case, it is easier to simulate device descriptor not found error
        // by using a undeclared encoded format.
        // by using an encoded format which isn't listed in the 'encodedFormats'
        // attribute for this devicePort.
        ASSERT_EQ(INVALID_OPERATION, mManager->setDeviceConnectionState(
                type, AUDIO_POLICY_DEVICE_STATE_AVAILABLE,
                address.c_str(), name.c_str(), AUDIO_FORMAT_MAT_2_1));
@@ -1535,7 +1537,7 @@ protected:
};

void AudioPolicyManagerDynamicHwModulesTest::SetUpManagerConfig() {
    AudioPolicyManagerTestWithConfigurationFile::SetUpManagerConfig();
    ASSERT_NO_FATAL_FAILURE(AudioPolicyManagerTestWithConfigurationFile::SetUpManagerConfig());
    // Only allow successful opening of "primary" hw module during APM initialization.
    mClient->swapAllowedModuleNames({"primary"});
}
+2 −1
Original line number Diff line number Diff line
@@ -50,7 +50,8 @@
                </devicePort>
                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
                </devicePort>
                <devicePort tagName="Hdmi" type="AUDIO_DEVICE_OUT_HDMI" role="sink">
                <devicePort tagName="Hdmi" type="AUDIO_DEVICE_OUT_HDMI" role="sink"
                            encodedFormats="AUDIO_FORMAT_AC3">
                </devicePort>
                <devicePort tagName="Hdmi-In Mic" type="AUDIO_DEVICE_IN_HDMI" role="source">
                </devicePort>