aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/VorbisComments.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-24 00:02:24 +0100
committerMax Kellermann <max@duempel.org>2014-01-24 00:02:24 +0100
commit51adaf2c47761e3f2095a52a7037cd8458b77990 (patch)
tree46d78d52708a1f75460908187a239cc5c60d1858 /src/decoder/VorbisComments.cxx
parentea5b901bcce20949a8d1fd622a7b03ff6f56ae20 (diff)
downloadmpd-51adaf2c47761e3f2095a52a7037cd8458b77990.tar.gz
mpd-51adaf2c47761e3f2095a52a7037cd8458b77990.tar.xz
mpd-51adaf2c47761e3f2095a52a7037cd8458b77990.zip
decoder/*: move to decoder/plugins/
Diffstat (limited to 'src/decoder/VorbisComments.cxx')
-rw-r--r--src/decoder/VorbisComments.cxx141
1 files changed, 0 insertions, 141 deletions
diff --git a/src/decoder/VorbisComments.cxx b/src/decoder/VorbisComments.cxx
deleted file mode 100644
index 2a0820ab5..000000000
--- a/src/decoder/VorbisComments.cxx
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2003-2014 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.
- */
-
-#include "config.h"
-#include "VorbisComments.hxx"
-#include "XiphTags.hxx"
-#include "tag/TagTable.hxx"
-#include "tag/TagHandler.hxx"
-#include "tag/TagBuilder.hxx"
-#include "ReplayGainInfo.hxx"
-#include "util/ASCII.hxx"
-#include "util/SplitString.hxx"
-
-#include <stddef.h>
-#include <string.h>
-#include <stdlib.h>
-
-static const char *
-vorbis_comment_value(const char *comment, const char *needle)
-{
- size_t len = strlen(needle);
-
- if (StringEqualsCaseASCII(comment, needle, len) &&
- comment[len] == '=')
- return comment + len + 1;
-
- return nullptr;
-}
-
-bool
-vorbis_comments_to_replay_gain(ReplayGainInfo &rgi, char **comments)
-{
- rgi.Clear();
-
- const char *temp;
- bool found = false;
-
- while (*comments) {
- if ((temp =
- vorbis_comment_value(*comments, "replaygain_track_gain"))) {
- rgi.tuples[REPLAY_GAIN_TRACK].gain = atof(temp);
- found = true;
- } else if ((temp = vorbis_comment_value(*comments,
- "replaygain_album_gain"))) {
- rgi.tuples[REPLAY_GAIN_ALBUM].gain = atof(temp);
- found = true;
- } else if ((temp = vorbis_comment_value(*comments,
- "replaygain_track_peak"))) {
- rgi.tuples[REPLAY_GAIN_TRACK].peak = atof(temp);
- found = true;
- } else if ((temp = vorbis_comment_value(*comments,
- "replaygain_album_peak"))) {
- rgi.tuples[REPLAY_GAIN_ALBUM].peak = atof(temp);
- found = true;
- }
-
- comments++;
- }
-
- return found;
-}
-
-/**
- * Check if the comment's name equals the passed name, and if so, copy
- * the comment value into the tag.
- */
-static bool
-vorbis_copy_comment(const char *comment,
- const char *name, TagType tag_type,
- const struct tag_handler *handler, void *handler_ctx)
-{
- const char *value;
-
- value = vorbis_comment_value(comment, name);
- if (value != nullptr) {
- tag_handler_invoke_tag(handler, handler_ctx, tag_type, value);
- return true;
- }
-
- return false;
-}
-
-static void
-vorbis_scan_comment(const char *comment,
- const struct tag_handler *handler, void *handler_ctx)
-{
- if (handler->pair != nullptr) {
- const SplitString split(comment, '=');
- if (split.IsDefined() && !split.IsEmpty())
- tag_handler_invoke_pair(handler, handler_ctx,
- split.GetFirst(),
- split.GetSecond());
- }
-
- for (const struct tag_table *i = xiph_tags; i->name != nullptr; ++i)
- if (vorbis_copy_comment(comment, i->name, i->type,
- handler, handler_ctx))
- return;
-
- for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
- if (vorbis_copy_comment(comment,
- tag_item_names[i], TagType(i),
- handler, handler_ctx))
- return;
-}
-
-void
-vorbis_comments_scan(char **comments,
- const struct tag_handler *handler, void *handler_ctx)
-{
- while (*comments)
- vorbis_scan_comment(*comments++,
- handler, handler_ctx);
-
-}
-
-Tag *
-vorbis_comments_to_tag(char **comments)
-{
- TagBuilder tag_builder;
- vorbis_comments_scan(comments, &add_tag_handler, &tag_builder);
- return tag_builder.IsEmpty()
- ? nullptr
- : tag_builder.CommitNew();
-}