This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pxz-hos-client-cpp-module/support/aws-sdk-cpp-master/aws-cpp-sdk-text-to-speech/include/aws/text-to-speech/PCMOutputDriver.h

106 lines
3.8 KiB
C++

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/text-to-speech/TextToSpeech_EXPORTS.h>
#include <aws/core/utils/Array.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
namespace Aws
{
namespace TextToSpeech
{
static const unsigned BIT_WIDTH_16 = 16;
static const unsigned MONO = 1;
static const size_t KHZ_22_5 = 22050;
static const size_t KHZ_16 = 16000;
static const size_t KHZ_8 = 8000;
struct CapabilityInfo
{
CapabilityInfo() : channels(MONO), sampleRate(KHZ_16), sampleWidthBits(BIT_WIDTH_16) {}
unsigned channels;
size_t sampleRate;
unsigned sampleWidthBits;
};
struct DeviceInfo
{
Aws::String deviceName;
Aws::String deviceId;
Aws::Vector<CapabilityInfo> capabilities;
};
/**
* Abstract class for configuring and sending linear pcm data to a sound card.
*/
class AWS_TEXT_TO_SPEECH_API PCMOutputDriver
{
public:
virtual ~PCMOutputDriver();
/**
* Write a buffer of audio data to a device. The format of this data will be set in the SetActiveDevice function.
* returns true if audio was successfully written to the device, false otherwise.
*/
virtual bool WriteBufferToDevice(const unsigned char*, size_t) = 0;
/**
* Enumerate all devices and their capabilities. The device id and the capability will be returned to you
* when a user calls SetActiveDevice();
*/
virtual Aws::Vector<DeviceInfo> EnumerateDevices() const = 0;
/**
* Set the device and format that this driver should use. After this call, you should expect all calls to WriteBufferToDevice()
* to be for the specified device and format.
*/
virtual void SetActiveDevice(const DeviceInfo&, const CapabilityInfo&) = 0;
/**
* Get a friendly name for this driver.
*/
virtual const char* GetName() const = 0;
/**
* Not used for most implementations. Some operating systems however, expect a constant stream of data to the device.
* Since playing will be batchy, Prime() will be called before each new batch of audio data. This is the chance to reset
* the device so it can play the audio.
*/
virtual void Prime() {};
/**
* Not used for most implementations. Some operating systems however, expect a constant stream of data to the device.
* Since playing will be batchy, Flush will be called after each batch of audio so that you can pause or reset the audio device.
*/
virtual void Flush() {};
};
/**
* Abstract factory for returning implementations of output drivers to the application. Provide an implementation of this
* if you want to override operating system defaults.
*/
class AWS_TEXT_TO_SPEECH_API PCMOutputDriverFactory
{
public:
virtual ~PCMOutputDriverFactory() = default;
/**
* Return a list of drivers that you want supported for the application.
*/
virtual Aws::Vector<std::shared_ptr<PCMOutputDriver>> LoadDrivers() const = 0;
};
/**
* Returns a default factory. This factory handles operating system defaults:
* Windows - WaveOut
* Linux - PulseAudio
* Apple - CoreAudio
*/
AWS_TEXT_TO_SPEECH_API std::shared_ptr<PCMOutputDriverFactory> DefaultPCMOutputDriverFactoryInitFn();
}
}