aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-04-23 15:45:58 +0200
committerAnton Khirnov <anton@khirnov.net>2015-02-20 09:18:30 +0100
commit748f9b72fa43b7ab91ff0a2bc708760fa1f9a241 (patch)
tree03a36a10330028904636c095c94ddb39173379d8
parent0bbe5ac82ef2845efafbf190044f16712db113b2 (diff)
libav decoder plugin: merge libav metadata into it
There is little point in splitting those in separate files.
-rw-r--r--src/Makefile1
-rw-r--r--src/decoder/libav_decoder_plugin.c47
-rw-r--r--src/decoder/libav_metadata.c77
-rw-r--r--src/decoder/libav_metadata.h33
4 files changed, 46 insertions, 112 deletions
diff --git a/src/Makefile b/src/Makefile
index b342a1ad..3a64e173 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -161,7 +161,6 @@ OBJS = aiff.o \
cue/cue_parser.o \
db/simple_db_plugin.o \
decoder/libav_decoder_plugin.o \
- decoder/libav_metadata.o \
filter/autoconvert_filter_plugin.o \
filter/chain_filter_plugin.o \
filter/convert_filter_plugin.o \
diff --git a/src/decoder/libav_decoder_plugin.c b/src/decoder/libav_decoder_plugin.c
index a1e05b6b..60208f56 100644
--- a/src/decoder/libav_decoder_plugin.c
+++ b/src/decoder/libav_decoder_plugin.c
@@ -20,8 +20,8 @@
#include "config.h"
#include "decoder_api.h"
#include "audio_check.h"
-#include "libav_metadata.h"
#include "tag_handler.h"
+#include "tag_table.h"
#include <glib.h>
@@ -56,6 +56,51 @@ typedef struct LibavDecContext {
AVStream *ast;
} LibavDecContext;
+static const struct tag_table libav_tags[] = {
+ { "year", TAG_DATE },
+ { "author-sort", TAG_ARTIST_SORT },
+ { "album_artist", TAG_ALBUM_ARTIST },
+ { "album_artist-sort", TAG_ALBUM_ARTIST_SORT },
+
+ /* sentinel */
+ { NULL, TAG_NUM_OF_ITEM_TYPES }
+};
+
+static void libav_copy_metadata(enum tag_type type, AVDictionary *m, const char *name,
+ const struct tag_handler *handler, void *handler_ctx)
+{
+ AVDictionaryEntry *mt = NULL;
+
+ while ((mt = av_dict_get(m, name, mt, 0)) != NULL)
+ tag_handler_invoke_tag(handler, handler_ctx,
+ type, mt->value);
+}
+
+static void libav_scan_pairs(AVDictionary *dict,
+ const struct tag_handler *handler, void *handler_ctx)
+{
+ AVDictionaryEntry *i = NULL;
+
+ while ((i = av_dict_get(dict, "", i, AV_DICT_IGNORE_SUFFIX)) != NULL)
+ tag_handler_invoke_pair(handler, handler_ctx,
+ i->key, i->value);
+}
+
+static void libav_scan_dictionary(AVDictionary *dict, const struct tag_handler *handler,
+ void *handler_ctx)
+{
+ for (int i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++)
+ libav_copy_metadata(i, dict, tag_item_names[i],
+ handler, handler_ctx);
+
+ for (const struct tag_table *i = libav_tags; i->name != NULL; i++)
+ libav_copy_metadata(i->type, dict, i->name,
+ handler, handler_ctx);
+
+ if (handler->pair != NULL)
+ libav_scan_pairs(dict, handler, handler_ctx);
+}
+
static int mpd_libav_stream_read(void *opaque, uint8_t *buf, int size)
{
LibavDecContext *stream = opaque;
diff --git a/src/decoder/libav_metadata.c b/src/decoder/libav_metadata.c
deleted file mode 100644
index 76f9652a..00000000
--- a/src/decoder/libav_metadata.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2003-2012 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 "libav_metadata.h"
-#include "tag_table.h"
-#include "tag_handler.h"
-
-#undef G_LOG_DOMAIN
-#define G_LOG_DOMAIN "libav"
-
-static const struct tag_table libav_tags[] = {
- { "year", TAG_DATE },
- { "author-sort", TAG_ARTIST_SORT },
- { "album_artist", TAG_ALBUM_ARTIST },
- { "album_artist-sort", TAG_ALBUM_ARTIST_SORT },
-
- /* sentinel */
- { NULL, TAG_NUM_OF_ITEM_TYPES }
-};
-
-static void
-libav_copy_metadata(enum tag_type type,
- AVDictionary *m, const char *name,
- const struct tag_handler *handler, void *handler_ctx)
-{
- AVDictionaryEntry *mt = NULL;
-
- while ((mt = av_dict_get(m, name, mt, 0)) != NULL)
- tag_handler_invoke_tag(handler, handler_ctx,
- type, mt->value);
-}
-
-
-static void
-libav_scan_pairs(AVDictionary *dict,
- const struct tag_handler *handler, void *handler_ctx)
-{
- AVDictionaryEntry *i = NULL;
-
- while ((i = av_dict_get(dict, "", i, AV_DICT_IGNORE_SUFFIX)) != NULL)
- tag_handler_invoke_pair(handler, handler_ctx,
- i->key, i->value);
-}
-
-void
-libav_scan_dictionary(AVDictionary *dict,
- const struct tag_handler *handler, void *handler_ctx)
-{
- for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
- libav_copy_metadata(i, dict, tag_item_names[i],
- handler, handler_ctx);
-
- for (const struct tag_table *i = libav_tags;
- i->name != NULL; ++i)
- libav_copy_metadata(i->type, dict, i->name,
- handler, handler_ctx);
-
- if (handler->pair != NULL)
- libav_scan_pairs(dict, handler, handler_ctx);
-}
diff --git a/src/decoder/libav_metadata.h b/src/decoder/libav_metadata.h
deleted file mode 100644
index 440a4ce5..00000000
--- a/src/decoder/libav_metadata.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2003-2012 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_FFMPEG_METADATA_H
-#define MPD_FFMPEG_METADATA_H
-
-#include <libavformat/avformat.h>
-#include <libavutil/avutil.h>
-#include <libavutil/dict.h>
-
-struct tag_handler;
-
-void
-libav_scan_dictionary(AVDictionary *dict, const struct tag_handler *handler,
- void *handler_ctx);
-
-#endif