Commit 26a9ce7b authored by Max Kellermann's avatar Max Kellermann

output/{alsa,oss}: convert to C++

parent 76417d44
...@@ -809,7 +809,8 @@ libmixer_plugins_a_CPPFLAGS = $(AM_CPPFLAGS) \ ...@@ -809,7 +809,8 @@ libmixer_plugins_a_CPPFLAGS = $(AM_CPPFLAGS) \
if HAVE_ALSA if HAVE_ALSA
liboutput_plugins_a_SOURCES += \ liboutput_plugins_a_SOURCES += \
src/output/alsa_output_plugin.c src/output/alsa_output_plugin.h src/output/AlsaOutputPlugin.cxx \
src/output/AlsaOutputPlugin.hxx
libmixer_plugins_a_SOURCES += src/mixer/AlsaMixerPlugin.cxx libmixer_plugins_a_SOURCES += src/mixer/AlsaMixerPlugin.cxx
endif endif
...@@ -851,8 +852,9 @@ endif ...@@ -851,8 +852,9 @@ endif
if HAVE_OSS if HAVE_OSS
liboutput_plugins_a_SOURCES += \ liboutput_plugins_a_SOURCES += \
src/output/oss_output_plugin.c src/output/oss_output_plugin.h src/output/OssOutputPlugin.cxx \
libmixer_plugins_a_SOURCES += src/mixer/oss_mixer_plugin.c src/output/OssOutputPlugin.hxx
libmixer_plugins_a_SOURCES += src/mixer/OssMixerPlugin.cxx
endif endif
if HAVE_OPENAL if HAVE_OPENAL
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "config.h" #include "config.h"
#include "OutputList.hxx" #include "OutputList.hxx"
#include "output_api.h" #include "output_api.h"
#include "output/alsa_output_plugin.h" #include "output/AlsaOutputPlugin.hxx"
#include "output/ao_output_plugin.h" #include "output/ao_output_plugin.h"
#include "output/ffado_output_plugin.h" #include "output/ffado_output_plugin.h"
#include "output/fifo_output_plugin.h" #include "output/fifo_output_plugin.h"
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include "output/mvp_output_plugin.h" #include "output/mvp_output_plugin.h"
#include "output/null_output_plugin.h" #include "output/null_output_plugin.h"
#include "output/openal_output_plugin.h" #include "output/openal_output_plugin.h"
#include "output/oss_output_plugin.h" #include "output/OssOutputPlugin.hxx"
#include "output/osx_output_plugin.h" #include "output/osx_output_plugin.h"
#include "output/pipe_output_plugin.h" #include "output/pipe_output_plugin.h"
#include "output/pulse_output_plugin.h" #include "output/pulse_output_plugin.h"
......
/* /*
* Copyright (C) 2003-2011 The Music Player Daemon Project * Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org * http://www.musicpd.org
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -206,11 +206,11 @@ oss_mixer_set_volume(struct mixer *mixer, unsigned volume, GError **error_r) ...@@ -206,11 +206,11 @@ oss_mixer_set_volume(struct mixer *mixer, unsigned volume, GError **error_r)
} }
const struct mixer_plugin oss_mixer_plugin = { const struct mixer_plugin oss_mixer_plugin = {
.init = oss_mixer_init, oss_mixer_init,
.finish = oss_mixer_finish, oss_mixer_finish,
.open = oss_mixer_open, oss_mixer_open,
.close = oss_mixer_close, oss_mixer_close,
.get_volume = oss_mixer_get_volume, oss_mixer_get_volume,
.set_volume = oss_mixer_set_volume, oss_mixer_set_volume,
.global = true, true,
}; };
/* /*
* Copyright (C) 2003-2011 The Music Player Daemon Project * Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org * http://www.musicpd.org
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef MPD_ALSA_OUTPUT_PLUGIN_H #ifndef MPD_ALSA_OUTPUT_PLUGIN_HXX
#define MPD_ALSA_OUTPUT_PLUGIN_H #define MPD_ALSA_OUTPUT_PLUGIN_HXX
extern const struct audio_output_plugin alsa_output_plugin; extern const struct audio_output_plugin alsa_output_plugin;
......
/* /*
* Copyright (C) 2003-2011 The Music Player Daemon Project * Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org * http://www.musicpd.org
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
#include "config.h" #include "config.h"
#include "oss_output_plugin.h" #include "OssOutputPlugin.hxx"
#include "output_api.h" #include "output_api.h"
#include "mixer_list.h" #include "mixer_list.h"
#include "fd_util.h" #include "fd_util.h"
...@@ -60,7 +60,7 @@ struct oss_data { ...@@ -60,7 +60,7 @@ struct oss_data {
struct audio_output base; struct audio_output base;
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
struct pcm_export_state export; struct pcm_export_state pcm_export;
#endif #endif
int fd; int fd;
...@@ -163,11 +163,10 @@ oss_output_test_default_device(void) ...@@ -163,11 +163,10 @@ oss_output_test_default_device(void)
static struct audio_output * static struct audio_output *
oss_open_default(GError **error) oss_open_default(GError **error)
{ {
int i;
int err[G_N_ELEMENTS(default_devices)]; int err[G_N_ELEMENTS(default_devices)];
enum oss_stat ret[G_N_ELEMENTS(default_devices)]; enum oss_stat ret[G_N_ELEMENTS(default_devices)];
for (i = G_N_ELEMENTS(default_devices); --i >= 0; ) { for (int i = G_N_ELEMENTS(default_devices); --i >= 0; ) {
ret[i] = oss_stat_device(default_devices[i], &err[i]); ret[i] = oss_stat_device(default_devices[i], &err[i]);
if (ret[i] == OSS_STAT_NO_ERROR) { if (ret[i] == OSS_STAT_NO_ERROR) {
struct oss_data *od = oss_data_new(); struct oss_data *od = oss_data_new();
...@@ -182,7 +181,7 @@ oss_open_default(GError **error) ...@@ -182,7 +181,7 @@ oss_open_default(GError **error)
} }
} }
for (i = G_N_ELEMENTS(default_devices); --i >= 0; ) { for (int i = G_N_ELEMENTS(default_devices); --i >= 0; ) {
const char *dev = default_devices[i]; const char *dev = default_devices[i];
switch(ret[i]) { switch(ret[i]) {
case OSS_STAT_NO_ERROR: case OSS_STAT_NO_ERROR:
...@@ -243,7 +242,7 @@ oss_output_enable(struct audio_output *ao, G_GNUC_UNUSED GError **error_r) ...@@ -243,7 +242,7 @@ oss_output_enable(struct audio_output *ao, G_GNUC_UNUSED GError **error_r)
{ {
struct oss_data *od = (struct oss_data *)ao; struct oss_data *od = (struct oss_data *)ao;
pcm_export_init(&od->export); pcm_export_init(&od->pcm_export);
return true; return true;
} }
...@@ -252,7 +251,7 @@ oss_output_disable(struct audio_output *ao) ...@@ -252,7 +251,7 @@ oss_output_disable(struct audio_output *ao)
{ {
struct oss_data *od = (struct oss_data *)ao; struct oss_data *od = (struct oss_data *)ao;
pcm_export_deinit(&od->export); pcm_export_deinit(&od->pcm_export);
} }
#endif #endif
...@@ -504,7 +503,7 @@ oss_probe_sample_format(int fd, enum sample_format sample_format, ...@@ -504,7 +503,7 @@ oss_probe_sample_format(int fd, enum sample_format sample_format,
enum sample_format *sample_format_r, enum sample_format *sample_format_r,
int *oss_format_r, int *oss_format_r,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
struct pcm_export_state *export, struct pcm_export_state *pcm_export,
#endif #endif
GError **error_r) GError **error_r)
{ {
...@@ -539,7 +538,7 @@ oss_probe_sample_format(int fd, enum sample_format sample_format, ...@@ -539,7 +538,7 @@ oss_probe_sample_format(int fd, enum sample_format sample_format,
*oss_format_r = oss_format; *oss_format_r = oss_format;
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
pcm_export_open(export, sample_format, 0, false, false, pcm_export_open(pcm_export, sample_format, 0, false, false,
oss_format == AFMT_S24_PACKED, oss_format == AFMT_S24_PACKED,
oss_format == AFMT_S24_PACKED && oss_format == AFMT_S24_PACKED &&
G_BYTE_ORDER != G_LITTLE_ENDIAN); G_BYTE_ORDER != G_LITTLE_ENDIAN);
...@@ -556,16 +555,16 @@ static bool ...@@ -556,16 +555,16 @@ static bool
oss_setup_sample_format(int fd, struct audio_format *audio_format, oss_setup_sample_format(int fd, struct audio_format *audio_format,
int *oss_format_r, int *oss_format_r,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
struct pcm_export_state *export, struct pcm_export_state *pcm_export,
#endif #endif
GError **error_r) GError **error_r)
{ {
enum sample_format mpd_format; enum sample_format mpd_format;
enum oss_setup_result result = enum oss_setup_result result =
oss_probe_sample_format(fd, audio_format->format, oss_probe_sample_format(fd, sample_format(audio_format->format),
&mpd_format, oss_format_r, &mpd_format, oss_format_r,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
export, pcm_export,
#endif #endif
error_r); error_r);
switch (result) { switch (result) {
...@@ -603,7 +602,7 @@ oss_setup_sample_format(int fd, struct audio_format *audio_format, ...@@ -603,7 +602,7 @@ oss_setup_sample_format(int fd, struct audio_format *audio_format,
result = oss_probe_sample_format(fd, mpd_format, result = oss_probe_sample_format(fd, mpd_format,
&mpd_format, oss_format_r, &mpd_format, oss_format_r,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
export, pcm_export,
#endif #endif
error_r); error_r);
switch (result) { switch (result) {
...@@ -635,7 +634,7 @@ oss_setup(struct oss_data *od, struct audio_format *audio_format, ...@@ -635,7 +634,7 @@ oss_setup(struct oss_data *od, struct audio_format *audio_format,
oss_setup_sample_rate(od->fd, audio_format, error_r) && oss_setup_sample_rate(od->fd, audio_format, error_r) &&
oss_setup_sample_format(od->fd, audio_format, &od->oss_format, oss_setup_sample_format(od->fd, audio_format, &od->oss_format,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
&od->export, &od->pcm_export,
#endif #endif
error_r); error_r);
} }
...@@ -749,14 +748,14 @@ oss_output_play(struct audio_output *ao, const void *chunk, size_t size, ...@@ -749,14 +748,14 @@ oss_output_play(struct audio_output *ao, const void *chunk, size_t size,
return 0; return 0;
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
chunk = pcm_export(&od->export, chunk, size, &size); chunk = pcm_export(&od->pcm_export, chunk, size, &size);
#endif #endif
while (true) { while (true) {
ret = write(od->fd, chunk, size); ret = write(od->fd, chunk, size);
if (ret > 0) { if (ret > 0) {
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
ret = pcm_export_source_size(&od->export, ret); ret = pcm_export_source_size(&od->pcm_export, ret);
#endif #endif
return ret; return ret;
} }
...@@ -771,18 +770,25 @@ oss_output_play(struct audio_output *ao, const void *chunk, size_t size, ...@@ -771,18 +770,25 @@ oss_output_play(struct audio_output *ao, const void *chunk, size_t size,
} }
const struct audio_output_plugin oss_output_plugin = { const struct audio_output_plugin oss_output_plugin = {
.name = "oss", "oss",
.test_default_device = oss_output_test_default_device, oss_output_test_default_device,
.init = oss_output_init, oss_output_init,
.finish = oss_output_finish, oss_output_finish,
#ifdef AFMT_S24_PACKED #ifdef AFMT_S24_PACKED
.enable = oss_output_enable, oss_output_enable,
.disable = oss_output_disable, oss_output_disable,
#else
nullptr,
nullptr,
#endif #endif
.open = oss_output_open, oss_output_open,
.close = oss_output_close, oss_output_close,
.play = oss_output_play, nullptr,
.cancel = oss_output_cancel, nullptr,
oss_output_play,
.mixer_plugin = &oss_mixer_plugin, nullptr,
oss_output_cancel,
nullptr,
&oss_mixer_plugin,
}; };
/* /*
* Copyright (C) 2003-2011 The Music Player Daemon Project * Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org * http://www.musicpd.org
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef MPD_OSS_OUTPUT_PLUGIN_H #ifndef MPD_OSS_OUTPUT_PLUGIN_HXX
#define MPD_OSS_OUTPUT_PLUGIN_H #define MPD_OSS_OUTPUT_PLUGIN_HXX
extern const struct audio_output_plugin oss_output_plugin; extern const struct audio_output_plugin oss_output_plugin;
......
...@@ -87,6 +87,10 @@ struct pcm_export_state { ...@@ -87,6 +87,10 @@ struct pcm_export_state {
uint8_t reverse_endian; uint8_t reverse_endian;
}; };
#ifdef __cplusplus
extern "C" {
#endif
/** /**
* Initialize a #pcm_export_state object. * Initialize a #pcm_export_state object.
*/ */
...@@ -144,4 +148,8 @@ G_GNUC_PURE ...@@ -144,4 +148,8 @@ G_GNUC_PURE
size_t size_t
pcm_export_source_size(const struct pcm_export_state *state, size_t dest_size); pcm_export_source_size(const struct pcm_export_state *state, size_t dest_size);
#ifdef __cplusplus
}
#endif
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment