7 #include <QCoreApplication>
20 struct AVCodecContext;
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;
86 virtual void SetEffDsp(
int dsprate) = 0;
88 virtual void Reset(
void) = 0;
100 virtual bool AddFrames(
void *buffer,
int frames,
101 std::chrono::milliseconds timecode) = 0;
114 virtual bool AddData(
void *buffer,
int len,
115 std::chrono::milliseconds timecode,
int frames) = 0;
131 virtual void SetTimecode(std::chrono::milliseconds timecode) = 0;
132 virtual bool IsPaused(
void)
const = 0;
133 virtual void Pause(
bool paused) = 0;
134 virtual void PauseUntilBuffered(
void) = 0;
137 virtual void Drain(
void) = 0;
139 virtual std::chrono::milliseconds GetAudiotime(
void) = 0;
146 QString
GetError(
void)
const {
return m_lastError; }
150 { fill = total = 0; }
153 virtual void bufferOutputData(
bool y) = 0;
154 virtual int readOutputData(
unsigned char *read_buffer,
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};