120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie/*
220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Copyright (C) 2015 The Android Open Source Project
320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Licensed under the Apache License, Version 2.0 (the "License");
520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * you may not use this file except in compliance with the License.
620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * You may obtain a copy of the License at
720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *      http://www.apache.org/licenses/LICENSE-2.0
920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie *
1020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * Unless required by applicable law or agreed to in writing, software
1120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * distributed under the License is distributed on an "AS IS" BASIS,
1220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * See the License for the specific language governing permissions and
1420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie * limitations under the License.
1520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie */
1620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
1720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#pragma once
1820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
1920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "FormattedSubsystemObject.h"
2020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "InstanceConfigurableElement.h"
2120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include "MappingContext.h"
2220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <AudioPolicyPluginInterface.h>
2320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie#include <string>
2420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass PolicySubsystem;
2620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
2720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieclass Stream : public CFormattedSubsystemObject
2820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie{
2920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffiepublic:
3020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    Stream(const std::string &mappingValue,
3120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie             CInstanceConfigurableElement *instanceConfigurableElement,
3220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie             const CMappingContext &context);
3320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
3420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprotected:
3520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    virtual bool receiveFromHW(std::string &error);
3620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    virtual bool sendToHW(std::string &error);
3720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
3820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffieprivate:
3920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */
4020f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4120f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    /**
4220f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     * Interface to communicate with Audio Policy Engine.
4320f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie     */
4420f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    android::AudioPolicyPluginInterface *mPolicyPluginInterface;
4520f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie
4620f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    audio_stream_type_t mId; /**< stream type identifier to link with audio.h. */
4720f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    uint32_t mApplicableStrategy; /**< applicable strategy for this stream. */
4820f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie    static const uint32_t mDefaultApplicableStrategy = 0; /**< default strategy. */
4920f06f996337c9bf79d0b112083f6427a122ebabFrançois Gaffie};
50