blob: 94724811712c34d849ae61ff81cc7532d8a55123 [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <map>
#include <utils/RefBase.h>
#include "AudioRoute.h"
#include "HwModule.h"
#include "IOProfile.h"
namespace android {
class PreferredMixerAttributesInfo : public RefBase {
public:
PreferredMixerAttributesInfo(uid_t uid, audio_port_handle_t devicePortId,
const sp<IOProfile>& profile, audio_output_flags_t flags,
const audio_mixer_attributes_t& mixerAttributes)
: mDevicePortId(devicePortId), mUid(uid), mProfile(profile),
mOutputFlags(flags), mMixerAttributes(mixerAttributes) { }
audio_port_handle_t getDeviceId() const { return mDevicePortId; }
const audio_config_base_t& getConfigBase() const { return mMixerAttributes.config; }
uid_t getUid() const { return mUid; }
int getActiveClientCount() const { return mActiveClientsCount; }
const sp<IOProfile> getProfile() const { return mProfile; };
audio_output_flags_t getFlags() const { return mOutputFlags; }
const audio_mixer_attributes_t& getMixerAttributes() const { return mMixerAttributes; }
void increaseActiveClient() { mActiveClientsCount++; }
void decreaseActiveClient() { mActiveClientsCount--; }
void dump(String8 *dst);
private:
const audio_port_handle_t mDevicePortId;
const uid_t mUid;
const sp<IOProfile> mProfile;
const audio_output_flags_t mOutputFlags;
const audio_mixer_attributes_t mMixerAttributes;
int mActiveClientsCount = 0;
};
} // namespace android