From acb45caa4205d6e07c46b14079a7ffe0a2141d3d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 7 Jan 2013 22:12:09 +0100 Subject: decoder/ogg_codec: convert to C++ --- src/decoder/FLACDecoderPlugin.cxx | 5 +--- src/decoder/OggCodec.cxx | 48 +++++++++++++++++++++++++++++++++++++ src/decoder/OggCodec.hxx | 39 ++++++++++++++++++++++++++++++ src/decoder/OpusDecoderPlugin.cxx | 6 +---- src/decoder/VorbisDecoderPlugin.cxx | 2 +- src/decoder/ogg_codec.c | 48 ------------------------------------- src/decoder/ogg_codec.h | 39 ------------------------------ 7 files changed, 90 insertions(+), 97 deletions(-) create mode 100644 src/decoder/OggCodec.cxx create mode 100644 src/decoder/OggCodec.hxx delete mode 100644 src/decoder/ogg_codec.c delete mode 100644 src/decoder/ogg_codec.h (limited to 'src/decoder') diff --git a/src/decoder/FLACDecoderPlugin.cxx b/src/decoder/FLACDecoderPlugin.cxx index dbe7f207..43b60409 100644 --- a/src/decoder/FLACDecoderPlugin.cxx +++ b/src/decoder/FLACDecoderPlugin.cxx @@ -21,10 +21,7 @@ #include "FLACDecoderPlugin.h" #include "FLACCommon.hxx" #include "FLACMetaData.hxx" - -extern "C" { -#include "ogg_codec.h" -} +#include "OggCodec.hxx" #include diff --git a/src/decoder/OggCodec.cxx b/src/decoder/OggCodec.cxx new file mode 100644 index 00000000..5ad9c69d --- /dev/null +++ b/src/decoder/OggCodec.cxx @@ -0,0 +1,48 @@ +/* + * 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. + */ + +/* + * Common functions used for Ogg data streams (Ogg-Vorbis and OggFLAC) + */ + +#include "config.h" +#include "OggCodec.hxx" + +enum ogg_codec +ogg_codec_detect(struct decoder *decoder, struct input_stream *is) +{ + /* oggflac detection based on code in ogg123 and this post + * http://lists.xiph.org/pipermail/flac/2004-December/000393.html + * ogg123 trunk still doesn't have this patch as of June 2005 */ + unsigned char buf[41]; + size_t r = decoder_read(decoder, is, buf, sizeof(buf)); + if (r < sizeof(buf) || memcmp(buf, "OggS", 4) != 0) + return OGG_CODEC_UNKNOWN; + + if ((memcmp(buf + 29, "FLAC", 4) == 0 && + memcmp(buf + 37, "fLaC", 4) == 0) || + memcmp(buf + 28, "FLAC", 4) == 0 || + memcmp(buf + 28, "fLaC", 4) == 0) + return OGG_CODEC_FLAC; + + if (memcmp(buf + 28, "Opus", 4) == 0) + return OGG_CODEC_OPUS; + + return OGG_CODEC_VORBIS; +} diff --git a/src/decoder/OggCodec.hxx b/src/decoder/OggCodec.hxx new file mode 100644 index 00000000..e241560f --- /dev/null +++ b/src/decoder/OggCodec.hxx @@ -0,0 +1,39 @@ +/* + * 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. + */ + +/* + * Common functions used for Ogg data streams (Ogg-Vorbis and OggFLAC) + */ + +#ifndef MPD_OGG_CODEC_HXX +#define MPD_OGG_CODEC_HXX + +#include "decoder_api.h" + +enum ogg_codec { + OGG_CODEC_UNKNOWN, + OGG_CODEC_VORBIS, + OGG_CODEC_FLAC, + OGG_CODEC_OPUS, +}; + +enum ogg_codec +ogg_codec_detect(struct decoder *decoder, struct input_stream *is); + +#endif /* _OGG_COMMON_H */ diff --git a/src/decoder/OpusDecoderPlugin.cxx b/src/decoder/OpusDecoderPlugin.cxx index c87e60a1..c48b2afa 100644 --- a/src/decoder/OpusDecoderPlugin.cxx +++ b/src/decoder/OpusDecoderPlugin.cxx @@ -23,11 +23,7 @@ #include "OpusTags.hxx" #include "OggUtil.hxx" #include "decoder_api.h" - -extern "C" { -#include "ogg_codec.h" -} - +#include "OggCodec.hxx" #include "audio_check.h" #include "tag_handler.h" diff --git a/src/decoder/VorbisDecoderPlugin.cxx b/src/decoder/VorbisDecoderPlugin.cxx index 3a05e74a..91065536 100644 --- a/src/decoder/VorbisDecoderPlugin.cxx +++ b/src/decoder/VorbisDecoderPlugin.cxx @@ -21,9 +21,9 @@ #include "VorbisDecoderPlugin.h" #include "VorbisComments.hxx" #include "decoder_api.h" +#include "OggCodec.hxx" extern "C" { -#include "ogg_codec.h" #include "audio_check.h" #include "uri.h" } diff --git a/src/decoder/ogg_codec.c b/src/decoder/ogg_codec.c deleted file mode 100644 index 7416f27d..00000000 --- a/src/decoder/ogg_codec.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2003-2011 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. - */ - -/* - * Common functions used for Ogg data streams (Ogg-Vorbis and OggFLAC) - */ - -#include "config.h" -#include "ogg_codec.h" - -enum ogg_codec -ogg_codec_detect(struct decoder *decoder, struct input_stream *is) -{ - /* oggflac detection based on code in ogg123 and this post - * http://lists.xiph.org/pipermail/flac/2004-December/000393.html - * ogg123 trunk still doesn't have this patch as of June 2005 */ - unsigned char buf[41]; - size_t r = decoder_read(decoder, is, buf, sizeof(buf)); - if (r < sizeof(buf) || memcmp(buf, "OggS", 4) != 0) - return OGG_CODEC_UNKNOWN; - - if ((memcmp(buf + 29, "FLAC", 4) == 0 && - memcmp(buf + 37, "fLaC", 4) == 0) || - memcmp(buf + 28, "FLAC", 4) == 0 || - memcmp(buf + 28, "fLaC", 4) == 0) - return OGG_CODEC_FLAC; - - if (memcmp(buf + 28, "Opus", 4) == 0) - return OGG_CODEC_OPUS; - - return OGG_CODEC_VORBIS; -} diff --git a/src/decoder/ogg_codec.h b/src/decoder/ogg_codec.h deleted file mode 100644 index fd1fecfb..00000000 --- a/src/decoder/ogg_codec.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2003-2011 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. - */ - -/* - * Common functions used for Ogg data streams (Ogg-Vorbis and OggFLAC) - */ - -#ifndef MPD_OGG_CODEC_H -#define MPD_OGG_CODEC_H - -#include "decoder_api.h" - -enum ogg_codec { - OGG_CODEC_UNKNOWN, - OGG_CODEC_VORBIS, - OGG_CODEC_FLAC, - OGG_CODEC_OPUS, -}; - -enum ogg_codec -ogg_codec_detect(struct decoder *decoder, struct input_stream *is); - -#endif /* _OGG_COMMON_H */ -- cgit v1.2.3