aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/audioOutput.c28
-rw-r--r--src/output_api.h8
2 files changed, 12 insertions, 24 deletions
diff --git a/src/audioOutput.c b/src/audioOutput.c
index 0326f135..0991d55d 100644
--- a/src/audioOutput.c
+++ b/src/audioOutput.c
@@ -72,11 +72,12 @@ int initAudioOutput(struct audio_output *ao, ConfigParam * param)
void *data = NULL;
const char *name = NULL;
char *format = NULL;
- const char *type = NULL;
BlockParam *bp = NULL;
struct audio_output_plugin *plugin = NULL;
if (param) {
+ const char *type = NULL;
+
getBlockParam(AUDIO_OUTPUT_NAME, name, 1);
getBlockParam(AUDIO_OUTPUT_TYPE, type, 1);
getBlockParam(AUDIO_OUTPUT_FORMAT, format, 0);
@@ -114,17 +115,10 @@ int initAudioOutput(struct audio_output *ao, ConfigParam * param)
}
name = "default detected output";
- type = plugin->name;
}
ao->name = name;
- ao->type = type;
- ao->finishDriverFunc = plugin->finishDriverFunc;
- ao->openDeviceFunc = plugin->openDeviceFunc;
- ao->playFunc = plugin->playFunc;
- ao->dropBufferedAudioFunc = plugin->dropBufferedAudioFunc;
- ao->closeDeviceFunc = plugin->closeDeviceFunc;
- ao->sendMetdataFunc = plugin->sendMetdataFunc;
+ ao->plugin = plugin;
ao->open = 0;
ao->convertAudioFormat = 0;
@@ -176,7 +170,7 @@ int openAudioOutput(struct audio_output *audioOutput,
}
if (!audioOutput->open)
- ret = audioOutput->openDeviceFunc(audioOutput);
+ ret = audioOutput->plugin->openDeviceFunc(audioOutput);
audioOutput->sameInAndOutFormats =
!cmpAudioFormat(&audioOutput->inAudioFormat,
@@ -220,7 +214,7 @@ int playAudioOutput(struct audio_output *audioOutput,
convertAudioFormat(audioOutput, &playChunk, &size);
}
- ret = audioOutput->playFunc(audioOutput, playChunk, size);
+ ret = audioOutput->plugin->playFunc(audioOutput, playChunk, size);
return ret;
}
@@ -228,20 +222,20 @@ int playAudioOutput(struct audio_output *audioOutput,
void dropBufferedAudioOutput(struct audio_output *audioOutput)
{
if (audioOutput->open)
- audioOutput->dropBufferedAudioFunc(audioOutput);
+ audioOutput->plugin->dropBufferedAudioFunc(audioOutput);
}
void closeAudioOutput(struct audio_output *audioOutput)
{
if (audioOutput->open)
- audioOutput->closeDeviceFunc(audioOutput);
+ audioOutput->plugin->closeDeviceFunc(audioOutput);
}
void finishAudioOutput(struct audio_output *audioOutput)
{
closeAudioOutput(audioOutput);
- if (audioOutput->finishDriverFunc)
- audioOutput->finishDriverFunc(audioOutput);
+ if (audioOutput->plugin->finishDriverFunc)
+ audioOutput->plugin->finishDriverFunc(audioOutput);
if (audioOutput->convBuffer)
free(audioOutput->convBuffer);
}
@@ -249,9 +243,9 @@ void finishAudioOutput(struct audio_output *audioOutput)
void sendMetadataToAudioOutput(struct audio_output *audioOutput,
const struct tag *tag)
{
- if (!audioOutput->sendMetdataFunc)
+ if (!audioOutput->plugin->sendMetdataFunc)
return;
- audioOutput->sendMetdataFunc(audioOutput, tag);
+ audioOutput->plugin->sendMetdataFunc(audioOutput, tag);
}
void printAllOutputPluginTypes(FILE * fp)
diff --git a/src/output_api.h b/src/output_api.h
index c73e30a2..9d17d866 100644
--- a/src/output_api.h
+++ b/src/output_api.h
@@ -67,14 +67,8 @@ struct audio_output_plugin {
struct audio_output {
int open;
const char *name;
- const char *type;
- AudioOutputFinishDriverFunc finishDriverFunc;
- AudioOutputOpenDeviceFunc openDeviceFunc;
- AudioOutputPlayFunc playFunc;
- AudioOutputDropBufferedAudioFunc dropBufferedAudioFunc;
- AudioOutputCloseDeviceFunc closeDeviceFunc;
- AudioOutputSendMetadataFunc sendMetdataFunc;
+ const struct audio_output_plugin *plugin;
int convertAudioFormat;
struct audio_format inAudioFormat;