blob: 126fe9779239176427f45d9235da6b01b7702a07 [file] [log] [blame]
/* * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ECREFDEVICE_H
#define ECREFDEVICE_H
#include "Device.h"
#include <vector>
class ECRefDevice : public Device
{
protected:
static std::shared_ptr<Device> obj;
ECRefDevice(struct pal_device *device, std::shared_ptr<ResourceManager> Rm);
struct pal_device mDeviceAttr;
std::shared_ptr<ResourceManager> rm;
struct pal_media_config codecConfig;
public:
static std::shared_ptr<Device> getInstance(struct pal_device *device,
std::shared_ptr<ResourceManager> Rm);
static std::shared_ptr<Device> getObject();
static int32_t isSampleRateSupported(int32_t sampleRate);
static int32_t isChannelSupported(int32_t numChannels);
static int32_t isBitWidthSupported(int32_t bitWidth);
static void checkAndUpdateBitWidth(uint32_t *bitWidth);
static void checkAndUpdateSampleRate(uint32_t *sampleRate);
int start();
virtual ~ECRefDevice();
};
#endif //ECREFDEVICE_H