7#include <QCoreApplication>
39 m_name(
std::move(name)), m_desc(
std::move(desc)),
47 using ADCVect = QVector<AudioDeviceConfig>;
49 static void Cleanup(
void);
50 static ADCVect* GetOutputList(
void);
52 QString &name,
const QString &desc,
bool willsuspendpa =
false);
56 const QString &main_device,
const QString &passthru_device,
57 AudioFormat format,
int channels, AVCodecID codec,
int samplerate,
61 bool willsuspendpa =
true);
63 const QString &main_device,
64 const QString &passthru_device = QString(),
65 bool willsuspendpa =
true);
73 virtual void SetStretchFactor(
float factor);
81 virtual bool CanPassthrough(
int samplerate,
int channels,
82 AVCodecID codec,
int profile)
const;
101 std::chrono::milliseconds timecode) = 0;
115 std::chrono::milliseconds timecode,
int frames) = 0;
133 virtual void Pause(
bool paused) = 0;
146 QString
GetError(
void)
const {
return m_lastError; }
150 { fill = total = 0; }
155 size_t max_length) = 0;
189 virtual int DecodeAudio(AVCodecContext *ctx,
190 uint8_t *buffer,
int &data_size,
191 const AVPacket *pkt);
195 static const int kMaxSizeBuffer = 384000;
198 void Error(
const QString &msg);
199 void SilentError(
const QString &msg);
200 void Warn(
const QString &msg);
201 void ClearError(
void);
202 void ClearWarning(
void);
206 bool m_pulseWasSuspended {
false};
AudioDeviceConfig(const AudioDeviceConfig &)=default
AudioOutputSettings m_settings
AudioDeviceConfig(QString name, QString desc)
AudioDeviceConfig(AudioDeviceConfig &&)=default
virtual void bufferOutputData(bool y)=0
virtual int GetChannels(void) const
virtual bool AddData(void *buffer, int len, std::chrono::milliseconds timecode, int frames)=0
Add data to the audiobuffer for playback.
virtual bool IsPaused(void) const =0
virtual void SetTimecode(std::chrono::milliseconds timecode)=0
virtual bool NeedDecodingBeforePassthrough(void) const
virtual void Drain(void)=0
virtual std::chrono::milliseconds GetAudioBufferedTime(void)
report amount of audio buffered in milliseconds.
virtual bool IsUpmixing(void)
virtual void PauseUntilBuffered(void)=0
virtual std::chrono::milliseconds GetAudiotime(void)=0
virtual AudioFormat GetFormat(void) const
virtual std::chrono::milliseconds LengthLastData(void) const
virtual void SetEffDsp(int dsprate)=0
virtual bool ToggleUpmix(void)
QVector< AudioDeviceConfig > ADCVect
virtual int GetBytesPerFrame(void) const
virtual bool CanDownmix(void) const
virtual void Reset(void)=0
virtual bool CanUpmix(void)
virtual bool AddFrames(void *buffer, int frames, std::chrono::milliseconds timecode)=0
Add frames to the audiobuffer for playback.
bool PulseStatus(void) const
virtual bool CanProcess(AudioFormat fmt)
virtual void Reconfigure(const AudioSettings &settings)=0
virtual uint32_t CanProcess(void)
virtual void GetBufferStatus(uint &fill, uint &total)
virtual void Pause(bool paused)=0
virtual float GetStretchFactor(void) const
Q_DECLARE_TR_FUNCTIONS(AudioOutput)
QString GetWarning(void) const
virtual void SetSourceBitrate(int)
QString GetError(void) const
virtual int readOutputData(unsigned char *read_buffer, size_t max_length)=0
VERBOSE_PREAMBLE Most true