decoder/wildmidi: convert to C++

This commit is contained in:
Max Kellermann 2013-07-28 12:50:37 +02:00
parent 258d0ea97e
commit 33aedc887a
4 changed files with 54 additions and 22 deletions

View File

@ -594,7 +594,9 @@ libdecoder_plugins_a_SOURCES += src/decoder/fluidsynth_decoder_plugin.c
endif
if ENABLE_WILDMIDI
libdecoder_plugins_a_SOURCES += src/decoder/wildmidi_decoder_plugin.c
libdecoder_plugins_a_SOURCES += \
src/decoder/WildmidiDecoderPlugin.cxx \
src/decoder/WildmidiDecoderPlugin.hxx
endif
if HAVE_FFMPEG

View File

@ -37,6 +37,7 @@
#include "decoder/MadDecoderPlugin.hxx"
#include "decoder/SndfileDecoderPlugin.hxx"
#include "decoder/Mpg123DecoderPlugin.hxx"
#include "decoder/WildmidiDecoderPlugin.hxx"
#include <glib.h>
@ -46,7 +47,6 @@ extern const struct decoder_plugin mpcdec_decoder_plugin;
extern const struct decoder_plugin modplug_decoder_plugin;
extern const struct decoder_plugin mikmod_decoder_plugin;
extern const struct decoder_plugin sidplay_decoder_plugin;
extern const struct decoder_plugin wildmidi_decoder_plugin;
extern const struct decoder_plugin fluidsynth_decoder_plugin;
const struct decoder_plugin *const decoder_plugins[] = {

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2003-2011 The Music Player Daemon Project
* Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
@ -18,20 +18,21 @@
*/
#include "config.h"
#include "WildmidiDecoderPlugin.hxx"
#include "decoder_api.h"
#include "tag_handler.h"
#include "glib_compat.h"
#include <glib.h>
extern "C" {
#include <wildmidi_lib.h>
}
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "wildmidi"
enum {
WILDMIDI_SAMPLE_RATE = 48000,
};
static constexpr unsigned WILDMIDI_SAMPLE_RATE = 48000;
static bool
wildmidi_init(const struct config_param *param)
@ -60,20 +61,20 @@ static void
wildmidi_file_decode(struct decoder *decoder, const char *path_fs)
{
static const struct audio_format audio_format = {
.sample_rate = WILDMIDI_SAMPLE_RATE,
.format = SAMPLE_FORMAT_S16,
.channels = 2,
WILDMIDI_SAMPLE_RATE,
SAMPLE_FORMAT_S16,
2,
};
midi *wm;
const struct _WM_Info *info;
enum decoder_command cmd;
wm = WildMidi_Open(path_fs);
if (wm == NULL)
if (wm == nullptr)
return;
info = WildMidi_GetInfo(wm);
if (info == NULL) {
if (info == nullptr) {
WildMidi_Close(wm);
return;
}
@ -86,14 +87,14 @@ wildmidi_file_decode(struct decoder *decoder, const char *path_fs)
int len;
info = WildMidi_GetInfo(wm);
if (info == NULL)
if (info == nullptr)
break;
len = WildMidi_GetOutput(wm, buffer, sizeof(buffer));
if (len <= 0)
break;
cmd = decoder_data(decoder, NULL, buffer, len, 0);
cmd = decoder_data(decoder, nullptr, buffer, len, 0);
if (cmd == DECODE_COMMAND_SEEK) {
unsigned long seek_where = WILDMIDI_SAMPLE_RATE *
@ -118,11 +119,11 @@ wildmidi_scan_file(const char *path_fs,
const struct tag_handler *handler, void *handler_ctx)
{
midi *wm = WildMidi_Open(path_fs);
if (wm == NULL)
if (wm == nullptr)
return false;
const struct _WM_Info *info = WildMidi_GetInfo(wm);
if (info == NULL) {
if (info == nullptr) {
WildMidi_Close(wm);
return false;
}
@ -137,14 +138,18 @@ wildmidi_scan_file(const char *path_fs,
static const char *const wildmidi_suffixes[] = {
"mid",
NULL
nullptr
};
const struct decoder_plugin wildmidi_decoder_plugin = {
.name = "wildmidi",
.init = wildmidi_init,
.finish = wildmidi_finish,
.file_decode = wildmidi_file_decode,
.scan_file = wildmidi_scan_file,
.suffixes = wildmidi_suffixes,
"wildmidi",
wildmidi_init,
wildmidi_finish,
nullptr,
wildmidi_file_decode,
wildmidi_scan_file,
nullptr,
nullptr,
wildmidi_suffixes,
nullptr,
};

View File

@ -0,0 +1,25 @@
/*
* Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef MPD_DECODER_WILDMIDI_HXX
#define MPD_DECODER_WILDMIDI_HXX
extern const struct decoder_plugin wildmidi_decoder_plugin;
#endif