output/Plugin: remove 'Error&' parameters, use C++ exceptions only
This commit is contained in:
@@ -133,15 +133,15 @@ struct AlsaOutput {
|
||||
return device.empty() ? default_device : device.c_str();
|
||||
}
|
||||
|
||||
static AlsaOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static AlsaOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Enable(Error &error);
|
||||
void Enable();
|
||||
void Disable();
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Drain();
|
||||
void Cancel();
|
||||
|
||||
@@ -195,16 +195,15 @@ AlsaOutput::AlsaOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
inline AlsaOutput *
|
||||
AlsaOutput::Create(const ConfigBlock &block, Error &)
|
||||
AlsaOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new AlsaOutput(block);
|
||||
}
|
||||
|
||||
inline bool
|
||||
AlsaOutput::Enable(gcc_unused Error &error)
|
||||
inline void
|
||||
AlsaOutput::Enable()
|
||||
{
|
||||
pcm_export.Construct();
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -719,8 +718,8 @@ AlsaOutput::SetupOrDop(AudioFormat &audio_format, PcmExport::Params ¶ms)
|
||||
#endif
|
||||
}
|
||||
|
||||
inline bool
|
||||
AlsaOutput::Open(AudioFormat &audio_format, gcc_unused Error &error)
|
||||
inline void
|
||||
AlsaOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
int err = snd_pcm_open(&pcm, GetDevice(),
|
||||
SND_PCM_STREAM_PLAYBACK, mode);
|
||||
@@ -751,8 +750,6 @@ AlsaOutput::Open(AudioFormat &audio_format, gcc_unused Error &error)
|
||||
out_frame_size = pcm_export->GetFrameSize(audio_format);
|
||||
|
||||
must_prepare = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline int
|
||||
@@ -832,7 +829,7 @@ AlsaOutput::Close()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
AlsaOutput::Play(const void *chunk, size_t size, gcc_unused Error &error)
|
||||
AlsaOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
assert(size > 0);
|
||||
assert(size % in_frame_size == 0);
|
||||
|
||||
@@ -121,7 +121,7 @@ AoOutput::AoOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
ao_output_init(const ConfigBlock &block, gcc_unused Error &error)
|
||||
ao_output_init(const ConfigBlock &block)
|
||||
{
|
||||
return &(new AoOutput(block))->base;
|
||||
}
|
||||
@@ -148,9 +148,8 @@ ao_output_close(AudioOutput *ao)
|
||||
ao_close(ad->device);
|
||||
}
|
||||
|
||||
static bool
|
||||
ao_output_open(AudioOutput *ao, AudioFormat &audio_format,
|
||||
gcc_unused Error &error)
|
||||
static void
|
||||
ao_output_open(AudioOutput *ao, AudioFormat &audio_format)
|
||||
{
|
||||
ao_sample_format format = OUR_AO_FORMAT_INITIALIZER;
|
||||
AoOutput *ad = (AoOutput *)ao;
|
||||
@@ -181,8 +180,6 @@ ao_output_open(AudioOutput *ao, AudioFormat &audio_format,
|
||||
|
||||
if (ad->device == nullptr)
|
||||
throw MakeAoError();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -203,8 +200,7 @@ static int ao_play_deconst(ao_device *device, const void *output_samples,
|
||||
}
|
||||
|
||||
static size_t
|
||||
ao_output_play(AudioOutput *ao, const void *chunk, size_t size,
|
||||
gcc_unused Error &error)
|
||||
ao_output_play(AudioOutput *ao, const void *chunk, size_t size)
|
||||
{
|
||||
AoOutput *ad = (AoOutput *)ao;
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
CloseFifo();
|
||||
}
|
||||
|
||||
static FifoOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static FifoOutput *Create(const ConfigBlock &block);
|
||||
|
||||
void Create();
|
||||
void Check();
|
||||
@@ -63,11 +63,11 @@ public:
|
||||
void OpenFifo();
|
||||
void CloseFifo();
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
unsigned Delay() const;
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
};
|
||||
|
||||
@@ -169,16 +169,15 @@ try {
|
||||
}
|
||||
|
||||
inline FifoOutput *
|
||||
FifoOutput::Create(const ConfigBlock &block, Error &)
|
||||
FifoOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new FifoOutput(block);
|
||||
}
|
||||
|
||||
bool
|
||||
FifoOutput::Open(AudioFormat &audio_format, gcc_unused Error &error)
|
||||
void
|
||||
FifoOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
timer = new Timer(audio_format);
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -214,7 +213,7 @@ FifoOutput::Delay() const
|
||||
}
|
||||
|
||||
inline size_t
|
||||
FifoOutput::Play(const void *chunk, size_t size, Error &)
|
||||
FifoOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
if (!timer->IsStarted())
|
||||
timer->Start();
|
||||
|
||||
@@ -71,12 +71,12 @@ public:
|
||||
|
||||
~HaikuOutput();
|
||||
|
||||
static HaikuOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static HaikuOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
|
||||
size_t Delay();
|
||||
@@ -119,7 +119,7 @@ haiku_test_default_device(void)
|
||||
}
|
||||
|
||||
inline HaikuOutput *
|
||||
HaikuOutput::Create(const ConfigBlock &block, Error &)
|
||||
HaikuOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
initialize_application();
|
||||
|
||||
@@ -184,8 +184,8 @@ HaikuOutput::FillBuffer(void* _buffer, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
inline bool
|
||||
HaikuOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
HaikuOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
status_t err;
|
||||
format = media_multi_audio_format::wildcard;
|
||||
@@ -261,12 +261,10 @@ HaikuOutput::Open(AudioFormat &audio_format, Error &)
|
||||
sound_player->SetVolume(1.0);
|
||||
sound_player->Start();
|
||||
sound_player->SetHasData(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline size_t
|
||||
HaikuOutput::Play(const void *chunk, size_t size, gcc_unused Error &error)
|
||||
HaikuOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
BSoundPlayer* const soundPlayer = sound_player;
|
||||
const uint8 *data = (const uint8 *)chunk;
|
||||
|
||||
@@ -99,10 +99,10 @@ struct JackOutput {
|
||||
shutdown = true;
|
||||
}
|
||||
|
||||
bool Enable(Error &error);
|
||||
void Enable();
|
||||
void Disable();
|
||||
|
||||
bool Open(AudioFormat &new_audio_format, Error &error);
|
||||
void Open(AudioFormat &new_audio_format);
|
||||
|
||||
void Close() {
|
||||
Stop();
|
||||
@@ -134,7 +134,7 @@ struct JackOutput {
|
||||
: 0;
|
||||
}
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
|
||||
bool Pause();
|
||||
};
|
||||
@@ -420,14 +420,13 @@ mpd_jack_test_default_device(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool
|
||||
JackOutput::Enable(Error &)
|
||||
inline void
|
||||
JackOutput::Enable()
|
||||
{
|
||||
for (unsigned i = 0; i < num_source_ports; ++i)
|
||||
ringbuffer[i] = nullptr;
|
||||
|
||||
Connect();
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -445,7 +444,7 @@ JackOutput::Disable()
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
mpd_jack_init(const ConfigBlock &block, Error &)
|
||||
mpd_jack_init(const ConfigBlock &block)
|
||||
{
|
||||
jack_set_error_function(mpd_jack_error);
|
||||
|
||||
@@ -580,8 +579,8 @@ JackOutput::Start()
|
||||
}
|
||||
}
|
||||
|
||||
inline bool
|
||||
JackOutput::Open(AudioFormat &new_audio_format, Error &)
|
||||
inline void
|
||||
JackOutput::Open(AudioFormat &new_audio_format)
|
||||
{
|
||||
pause = false;
|
||||
|
||||
@@ -595,7 +594,6 @@ JackOutput::Open(AudioFormat &new_audio_format, Error &)
|
||||
audio_format = new_audio_format;
|
||||
|
||||
Start();
|
||||
return true;
|
||||
}
|
||||
|
||||
inline size_t
|
||||
@@ -640,7 +638,7 @@ JackOutput::WriteSamples(const float *src, size_t n_frames)
|
||||
}
|
||||
|
||||
inline size_t
|
||||
JackOutput::Play(const void *chunk, size_t size, Error &)
|
||||
JackOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
pause = false;
|
||||
|
||||
|
||||
@@ -37,13 +37,11 @@ public:
|
||||
:base(null_output_plugin, block),
|
||||
sync(block.GetBlockValue("sync", true)) {}
|
||||
|
||||
static NullOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static NullOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, gcc_unused Error &error) {
|
||||
void Open(AudioFormat &audio_format) {
|
||||
if (sync)
|
||||
timer = new Timer(audio_format);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Close() {
|
||||
@@ -57,8 +55,7 @@ public:
|
||||
: 0;
|
||||
}
|
||||
|
||||
size_t Play(gcc_unused const void *chunk, size_t size,
|
||||
gcc_unused Error &error) {
|
||||
size_t Play(gcc_unused const void *chunk, size_t size) {
|
||||
if (sync) {
|
||||
if (!timer->IsStarted())
|
||||
timer->Start();
|
||||
@@ -75,7 +72,7 @@ public:
|
||||
};
|
||||
|
||||
inline NullOutput *
|
||||
NullOutput::Create(const ConfigBlock &block, Error &)
|
||||
NullOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new NullOutput(block);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ OSXOutput::OSXOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
osx_output_init(const ConfigBlock &block, Error &)
|
||||
osx_output_init(const ConfigBlock &block)
|
||||
{
|
||||
OSXOutput *oo = new OSXOutput(block);
|
||||
|
||||
@@ -512,8 +512,8 @@ osx_render(void *vdata,
|
||||
return noErr;
|
||||
}
|
||||
|
||||
static bool
|
||||
osx_output_enable(AudioOutput *ao, Error &)
|
||||
static void
|
||||
osx_output_enable(AudioOutput *ao)
|
||||
{
|
||||
char errormsg[1024];
|
||||
OSXOutput *oo = (OSXOutput *)ao;
|
||||
@@ -546,8 +546,6 @@ osx_output_enable(AudioOutput *ao, Error &)
|
||||
if (oo->hog_device) {
|
||||
osx_output_hog_device(oo->dev_id, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -573,9 +571,8 @@ osx_output_close(AudioOutput *ao)
|
||||
delete od->ring_buffer;
|
||||
}
|
||||
|
||||
static bool
|
||||
osx_output_open(AudioOutput *ao, AudioFormat &audio_format,
|
||||
Error &)
|
||||
static void
|
||||
osx_output_open(AudioOutput *ao, AudioFormat &audio_format)
|
||||
{
|
||||
char errormsg[1024];
|
||||
OSXOutput *od = (OSXOutput *)ao;
|
||||
@@ -662,13 +659,10 @@ osx_output_open(AudioOutput *ao, AudioFormat &audio_format,
|
||||
throw FormatRuntimeError("unable to start audio output: %s",
|
||||
errormsg);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static size_t
|
||||
osx_output_play(AudioOutput *ao, const void *chunk, size_t size,
|
||||
gcc_unused Error &error)
|
||||
osx_output_play(AudioOutput *ao, const void *chunk, size_t size)
|
||||
{
|
||||
OSXOutput *od = (OSXOutput *)ao;
|
||||
return od->ring_buffer->push((uint8_t *)chunk, size);
|
||||
|
||||
@@ -52,10 +52,9 @@ class OpenALOutput {
|
||||
|
||||
OpenALOutput(const ConfigBlock &block);
|
||||
|
||||
static OpenALOutput *Create(const ConfigBlock &block, Error &error);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
static OpenALOutput *Create(const ConfigBlock &block);
|
||||
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
gcc_pure
|
||||
@@ -68,7 +67,7 @@ class OpenALOutput {
|
||||
: 50;
|
||||
}
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
|
||||
void Cancel();
|
||||
|
||||
@@ -147,13 +146,13 @@ OpenALOutput::OpenALOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
inline OpenALOutput *
|
||||
OpenALOutput::Create(const ConfigBlock &block, Error &)
|
||||
OpenALOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new OpenALOutput(block);
|
||||
}
|
||||
|
||||
inline bool
|
||||
OpenALOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
OpenALOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
format = openal_audio_format(audio_format);
|
||||
|
||||
@@ -174,8 +173,6 @@ OpenALOutput::Open(AudioFormat &audio_format, Error &)
|
||||
|
||||
filled = 0;
|
||||
frequency = audio_format.sample_rate;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -189,7 +186,7 @@ OpenALOutput::Close()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
OpenALOutput::Play(const void *chunk, size_t size, gcc_unused Error &error)
|
||||
OpenALOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
if (alcGetCurrentContext() != context)
|
||||
alcMakeContextCurrent(context);
|
||||
|
||||
@@ -89,12 +89,11 @@ public:
|
||||
:base(oss_output_plugin, block),
|
||||
fd(-1), device(_device) {}
|
||||
|
||||
static OssOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static OssOutput *Create(const ConfigBlock &block);
|
||||
|
||||
#ifdef AFMT_S24_PACKED
|
||||
bool Enable(gcc_unused Error &error) {
|
||||
void Enable() {
|
||||
pcm_export.Construct();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Disable() {
|
||||
@@ -102,13 +101,13 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
|
||||
void Close() {
|
||||
DoClose();
|
||||
}
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
|
||||
private:
|
||||
@@ -227,7 +226,7 @@ oss_open_default()
|
||||
}
|
||||
|
||||
inline OssOutput *
|
||||
OssOutput::Create(const ConfigBlock &block, gcc_unused Error &error)
|
||||
OssOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
const char *device = block.GetBlockValue("device");
|
||||
if (device != nullptr)
|
||||
@@ -638,8 +637,8 @@ try {
|
||||
throw;
|
||||
}
|
||||
|
||||
inline bool
|
||||
OssOutput::Open(AudioFormat &_audio_format, Error &)
|
||||
inline void
|
||||
OssOutput::Open(AudioFormat &_audio_format)
|
||||
try {
|
||||
fd = open_cloexec(device, O_WRONLY, 0);
|
||||
if (fd < 0)
|
||||
@@ -648,7 +647,6 @@ try {
|
||||
Setup(_audio_format);
|
||||
|
||||
audio_format = _audio_format;
|
||||
return true;
|
||||
} catch (...) {
|
||||
DoClose();
|
||||
throw;
|
||||
@@ -664,7 +662,7 @@ OssOutput::Cancel()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
OssOutput::Play(const void *chunk, size_t size, Error &)
|
||||
OssOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
ssize_t ret;
|
||||
|
||||
|
||||
@@ -39,15 +39,15 @@ class PipeOutput {
|
||||
PipeOutput(const ConfigBlock &block);
|
||||
|
||||
public:
|
||||
static PipeOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static PipeOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
|
||||
void Close() {
|
||||
pclose(fh);
|
||||
}
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
};
|
||||
|
||||
PipeOutput::PipeOutput(const ConfigBlock &block)
|
||||
@@ -59,23 +59,21 @@ PipeOutput::PipeOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
inline PipeOutput *
|
||||
PipeOutput::Create(const ConfigBlock &block, Error &)
|
||||
PipeOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new PipeOutput(block);
|
||||
}
|
||||
|
||||
inline bool
|
||||
PipeOutput::Open(gcc_unused AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
PipeOutput::Open(gcc_unused AudioFormat &audio_format)
|
||||
{
|
||||
fh = popen(cmd.c_str(), "w");
|
||||
if (fh == nullptr)
|
||||
throw FormatErrno("Error opening pipe \"%s\"", cmd.c_str());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline size_t
|
||||
PipeOutput::Play(const void *chunk, size_t size, Error &)
|
||||
PipeOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
size_t nbytes = fwrite(chunk, 1, size, fh);
|
||||
if (nbytes == 0)
|
||||
|
||||
@@ -93,16 +93,16 @@ public:
|
||||
gcc_const
|
||||
static bool TestDefaultDevice();
|
||||
|
||||
static PulseOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static PulseOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Enable(Error &error);
|
||||
void Enable();
|
||||
void Disable();
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
unsigned Delay();
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
bool Pause();
|
||||
|
||||
@@ -415,13 +415,13 @@ PulseOutput::SetupContext()
|
||||
}
|
||||
|
||||
PulseOutput *
|
||||
PulseOutput::Create(const ConfigBlock &block, gcc_unused Error &error)
|
||||
PulseOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new PulseOutput(block);
|
||||
}
|
||||
|
||||
inline bool
|
||||
PulseOutput::Enable(gcc_unused Error &error)
|
||||
inline void
|
||||
PulseOutput::Enable()
|
||||
{
|
||||
assert(mainloop == nullptr);
|
||||
|
||||
@@ -454,8 +454,6 @@ PulseOutput::Enable(gcc_unused Error &error)
|
||||
}
|
||||
|
||||
pa_threaded_mainloop_unlock(mainloop);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -607,8 +605,8 @@ PulseOutput::SetupStream(const pa_sample_spec &ss)
|
||||
pulse_output_stream_write_cb, this);
|
||||
}
|
||||
|
||||
inline bool
|
||||
PulseOutput::Open(AudioFormat &audio_format, gcc_unused Error &error)
|
||||
inline void
|
||||
PulseOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
assert(mainloop != nullptr);
|
||||
|
||||
@@ -676,8 +674,6 @@ PulseOutput::Open(AudioFormat &audio_format, gcc_unused Error &error)
|
||||
throw MakePulseError(context,
|
||||
"pa_stream_connect_playback() has failed");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -759,7 +755,7 @@ PulseOutput::Delay()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
PulseOutput::Play(const void *chunk, size_t size, gcc_unused Error &error)
|
||||
PulseOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
assert(mainloop != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
class PulseOutput;
|
||||
class PulseMixer;
|
||||
struct pa_cvolume;
|
||||
class Error;
|
||||
|
||||
extern const struct AudioOutputPlugin pulse_output_plugin;
|
||||
|
||||
|
||||
@@ -81,9 +81,9 @@ class RecorderOutput {
|
||||
delete prepared_encoder;
|
||||
}
|
||||
|
||||
static RecorderOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static RecorderOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
/**
|
||||
@@ -93,7 +93,7 @@ class RecorderOutput {
|
||||
|
||||
void SendTag(const Tag &tag);
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
|
||||
private:
|
||||
gcc_pure
|
||||
@@ -141,7 +141,7 @@ RecorderOutput::RecorderOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
RecorderOutput *
|
||||
RecorderOutput::Create(const ConfigBlock &block, Error &)
|
||||
RecorderOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new RecorderOutput(block);
|
||||
}
|
||||
@@ -154,8 +154,8 @@ RecorderOutput::EncoderToFile()
|
||||
EncoderToOutputStream(*file, *encoder);
|
||||
}
|
||||
|
||||
inline bool
|
||||
RecorderOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
RecorderOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
/* create the output file */
|
||||
|
||||
@@ -195,8 +195,6 @@ RecorderOutput::Open(AudioFormat &audio_format, Error &)
|
||||
soon as we have received a tag */
|
||||
delete encoder;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -349,7 +347,7 @@ RecorderOutput::SendTag(const Tag &tag)
|
||||
}
|
||||
|
||||
inline size_t
|
||||
RecorderOutput::Play(const void *chunk, size_t size, Error &)
|
||||
RecorderOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
if (file == nullptr) {
|
||||
/* not currently encoding to a file; discard incoming
|
||||
|
||||
@@ -58,11 +58,11 @@ public:
|
||||
return &base;
|
||||
}
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
void SendTag(const Tag &tag);
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
|
||||
int GetVolume() const;
|
||||
@@ -134,7 +134,7 @@ roar_output_set_volume(RoarOutput &roar, unsigned volume)
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
roar_init(const ConfigBlock &block, Error &)
|
||||
roar_init(const ConfigBlock &block)
|
||||
{
|
||||
return *new RoarOutput(block);
|
||||
}
|
||||
@@ -174,8 +174,8 @@ roar_use_audio_format(struct roar_audio_info *info,
|
||||
}
|
||||
}
|
||||
|
||||
inline bool
|
||||
RoarOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
RoarOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
const ScopeLock protect(mutex);
|
||||
|
||||
@@ -196,7 +196,6 @@ RoarOutput::Open(AudioFormat &audio_format, Error &)
|
||||
|
||||
roar_vs_role(vss, role, &err);
|
||||
alive = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -241,7 +240,7 @@ RoarOutput::Cancel()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
RoarOutput::Play(const void *chunk, size_t size, Error &)
|
||||
RoarOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
if (vss == nullptr)
|
||||
throw std::runtime_error("Connection is invalid");
|
||||
|
||||
@@ -58,14 +58,14 @@ struct ShoutOutput final {
|
||||
explicit ShoutOutput(const ConfigBlock &block);
|
||||
~ShoutOutput();
|
||||
|
||||
static ShoutOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static ShoutOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
unsigned Delay() const;
|
||||
void SendTag(const Tag &tag);
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
bool Pause();
|
||||
};
|
||||
@@ -246,7 +246,7 @@ ShoutOutput::~ShoutOutput()
|
||||
}
|
||||
|
||||
ShoutOutput *
|
||||
ShoutOutput::Create(const ConfigBlock &block, Error &)
|
||||
ShoutOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
if (shout_init_count == 0)
|
||||
shout_init();
|
||||
@@ -340,8 +340,8 @@ shout_connect(ShoutOutput *sd)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ShoutOutput::Open(AudioFormat &audio_format, Error &)
|
||||
void
|
||||
ShoutOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
shout_connect(this);
|
||||
|
||||
@@ -358,8 +358,6 @@ ShoutOutput::Open(AudioFormat &audio_format, Error &)
|
||||
shout_close(shout_conn);
|
||||
throw;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned
|
||||
@@ -373,7 +371,7 @@ ShoutOutput::Delay() const
|
||||
}
|
||||
|
||||
size_t
|
||||
ShoutOutput::Play(const void *chunk, size_t size, Error &)
|
||||
ShoutOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
encoder->Write(chunk, size);
|
||||
write_page(this);
|
||||
|
||||
@@ -47,14 +47,12 @@ class SndioOutput {
|
||||
public:
|
||||
SndioOutput(const ConfigBlock &block);
|
||||
|
||||
bool Configure(const ConfigBlock &block, Error &error);
|
||||
static SndioOutput *Create(const ConfigBlock &block);
|
||||
|
||||
static SndioOutput *Create(const ConfigBlock &block, Error &error);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
unsigned Delay() const;
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Cancel();
|
||||
};
|
||||
|
||||
@@ -67,7 +65,7 @@ SndioOutput::SndioOutput(const ConfigBlock &block)
|
||||
}
|
||||
|
||||
SndioOutput *
|
||||
SndioOutput::Create(const ConfigBlock &block, Error &)
|
||||
SndioOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new SndioOutput(block);
|
||||
}
|
||||
@@ -88,8 +86,8 @@ sndio_test_default_device()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
SndioOutput::Open(AudioFormat &audio_format, Error &)
|
||||
void
|
||||
SndioOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
struct sio_par par;
|
||||
unsigned bits, rate, chans;
|
||||
@@ -145,8 +143,6 @@ SndioOutput::Open(AudioFormat &audio_format, Error &)
|
||||
sio_close(sio_hdl);
|
||||
throw std::runtime_error("Failed to start audio device");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -156,7 +152,7 @@ SndioOutput::Close()
|
||||
}
|
||||
|
||||
size_t
|
||||
SndioOutput::Play(const void *chunk, size_t size, Error &)
|
||||
SndioOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
size_t n;
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ solaris_output_test_default_device(void)
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
solaris_output_init(const ConfigBlock &block, Error &)
|
||||
solaris_output_init(const ConfigBlock &block)
|
||||
{
|
||||
SolarisOutput *so = new SolarisOutput(block);
|
||||
return &so->base;
|
||||
@@ -86,8 +86,8 @@ solaris_output_finish(AudioOutput *ao)
|
||||
delete so;
|
||||
}
|
||||
|
||||
static bool
|
||||
solaris_output_open(AudioOutput *ao, AudioFormat &audio_format, Error &)
|
||||
static void
|
||||
solaris_output_open(AudioOutput *ao, AudioFormat &audio_format)
|
||||
{
|
||||
SolarisOutput *so = (SolarisOutput *)ao;
|
||||
struct audio_info info;
|
||||
@@ -130,8 +130,6 @@ solaris_output_open(AudioOutput *ao, AudioFormat &audio_format, Error &)
|
||||
close(so->fd);
|
||||
throw MakeErrno(e, "AUDIO_SETINFO failed");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -143,8 +141,7 @@ solaris_output_close(AudioOutput *ao)
|
||||
}
|
||||
|
||||
static size_t
|
||||
solaris_output_play(AudioOutput *ao, const void *chunk, size_t size,
|
||||
Error &)
|
||||
solaris_output_play(AudioOutput *ao, const void *chunk, size_t size)
|
||||
{
|
||||
SolarisOutput *so = (SolarisOutput *)ao;
|
||||
ssize_t nbytes;
|
||||
|
||||
@@ -63,14 +63,14 @@ public:
|
||||
return handle;
|
||||
}
|
||||
|
||||
static WinmmOutput *Create(const ConfigBlock &block, Error &) {
|
||||
static WinmmOutput *Create(const ConfigBlock &block) {
|
||||
return new WinmmOutput(block);
|
||||
}
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
void Drain();
|
||||
void Cancel();
|
||||
|
||||
@@ -153,8 +153,8 @@ WinmmOutput::WinmmOutput(const ConfigBlock &block)
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
WinmmOutput::Open(AudioFormat &audio_format, Error &)
|
||||
void
|
||||
WinmmOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
event = CreateEvent(nullptr, false, false, nullptr);
|
||||
if (event == nullptr)
|
||||
@@ -199,8 +199,6 @@ WinmmOutput::Open(AudioFormat &audio_format, Error &)
|
||||
memset(&i.hdr, 0, sizeof(i.hdr));
|
||||
|
||||
next_buffer = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -260,7 +258,7 @@ WinmmOutput::DrainBuffer(WinmmBuffer &buffer)
|
||||
}
|
||||
|
||||
size_t
|
||||
WinmmOutput::Play(const void *chunk, size_t size, Error &)
|
||||
WinmmOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
/* get the next buffer from the ring and prepare it */
|
||||
WinmmBuffer *buffer = &buffers[next_buffer];
|
||||
|
||||
@@ -178,7 +178,7 @@ public:
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
*/
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
|
||||
/**
|
||||
* Caller must lock the mutex.
|
||||
|
||||
@@ -118,7 +118,7 @@ HttpdOutput::Unbind()
|
||||
}
|
||||
|
||||
static AudioOutput *
|
||||
httpd_output_init(const ConfigBlock &block, Error &)
|
||||
httpd_output_init(const ConfigBlock &block)
|
||||
{
|
||||
return *new HttpdOutput(io_thread_get(), block);
|
||||
}
|
||||
@@ -247,13 +247,12 @@ HttpdOutput::ReadPage()
|
||||
return Page::Copy(buffer, size);
|
||||
}
|
||||
|
||||
static bool
|
||||
httpd_output_enable(AudioOutput *ao, gcc_unused Error &error)
|
||||
static void
|
||||
httpd_output_enable(AudioOutput *ao)
|
||||
{
|
||||
HttpdOutput *httpd = HttpdOutput::Cast(ao);
|
||||
|
||||
httpd->Bind();
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -277,8 +276,8 @@ HttpdOutput::OpenEncoder(AudioFormat &audio_format)
|
||||
unflushed_input = 0;
|
||||
}
|
||||
|
||||
inline bool
|
||||
HttpdOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
HttpdOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
assert(!open);
|
||||
assert(clients.empty());
|
||||
@@ -290,18 +289,15 @@ HttpdOutput::Open(AudioFormat &audio_format, Error &)
|
||||
timer = new Timer(audio_format);
|
||||
|
||||
open = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
httpd_output_open(AudioOutput *ao, AudioFormat &audio_format,
|
||||
Error &error)
|
||||
static void
|
||||
httpd_output_open(AudioOutput *ao, AudioFormat &audio_format)
|
||||
{
|
||||
HttpdOutput *httpd = HttpdOutput::Cast(ao);
|
||||
|
||||
const ScopeLock protect(httpd->mutex);
|
||||
return httpd->Open(audio_format, error);
|
||||
httpd->Open(audio_format);
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -431,8 +427,7 @@ HttpdOutput::Play(const void *chunk, size_t size)
|
||||
}
|
||||
|
||||
static size_t
|
||||
httpd_output_play(AudioOutput *ao, const void *chunk, size_t size,
|
||||
Error &)
|
||||
httpd_output_play(AudioOutput *ao, const void *chunk, size_t size)
|
||||
{
|
||||
HttpdOutput *httpd = HttpdOutput::Cast(ao);
|
||||
|
||||
|
||||
@@ -91,16 +91,16 @@ public:
|
||||
return &base;
|
||||
}
|
||||
|
||||
static SlesOutput *Create(const ConfigBlock &block, Error &error);
|
||||
static SlesOutput *Create(const ConfigBlock &block);
|
||||
|
||||
bool Open(AudioFormat &audio_format, Error &error);
|
||||
void Open(AudioFormat &audio_format);
|
||||
void Close();
|
||||
|
||||
unsigned Delay() {
|
||||
return pause && !cancel ? 100 : 0;
|
||||
}
|
||||
|
||||
size_t Play(const void *chunk, size_t size, Error &error);
|
||||
size_t Play(const void *chunk, size_t size);
|
||||
|
||||
void Drain();
|
||||
void Cancel();
|
||||
@@ -129,8 +129,8 @@ SlesOutput::SlesOutput(const ConfigBlock &block)
|
||||
{
|
||||
}
|
||||
|
||||
inline bool
|
||||
SlesOutput::Open(AudioFormat &audio_format, Error &)
|
||||
inline void
|
||||
SlesOutput::Open(AudioFormat &audio_format)
|
||||
{
|
||||
SLresult result;
|
||||
SLObjectItf _object;
|
||||
@@ -146,7 +146,6 @@ SlesOutput::Open(AudioFormat &audio_format, Error &)
|
||||
if (result != SL_RESULT_SUCCESS) {
|
||||
engine_object.Destroy();
|
||||
throw std::runtime_error("Engine.Realize() failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
SLEngineItf _engine;
|
||||
@@ -294,7 +293,6 @@ SlesOutput::Open(AudioFormat &audio_format, Error &)
|
||||
|
||||
// TODO: support other sample formats
|
||||
audio_format.format = SampleFormat::S16;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -307,7 +305,7 @@ SlesOutput::Close()
|
||||
}
|
||||
|
||||
inline size_t
|
||||
SlesOutput::Play(const void *chunk, size_t size, Error &)
|
||||
SlesOutput::Play(const void *chunk, size_t size)
|
||||
{
|
||||
cancel = false;
|
||||
|
||||
@@ -413,7 +411,7 @@ sles_test_default_device()
|
||||
}
|
||||
|
||||
inline SlesOutput *
|
||||
SlesOutput::Create(const ConfigBlock &block, Error &)
|
||||
SlesOutput::Create(const ConfigBlock &block)
|
||||
{
|
||||
return new SlesOutput(block);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user