diff options
author | Max Kellermann <max@duempel.org> | 2014-01-24 00:02:24 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-24 00:02:24 +0100 |
commit | 51adaf2c47761e3f2095a52a7037cd8458b77990 (patch) | |
tree | 46d78d52708a1f75460908187a239cc5c60d1858 /src/DecoderPlugin.hxx | |
parent | ea5b901bcce20949a8d1fd622a7b03ff6f56ae20 (diff) | |
download | mpd-51adaf2c47761e3f2095a52a7037cd8458b77990.tar.gz mpd-51adaf2c47761e3f2095a52a7037cd8458b77990.tar.xz mpd-51adaf2c47761e3f2095a52a7037cd8458b77990.zip |
decoder/*: move to decoder/plugins/
Diffstat (limited to 'src/DecoderPlugin.hxx')
-rw-r--r-- | src/DecoderPlugin.hxx | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/src/DecoderPlugin.hxx b/src/DecoderPlugin.hxx deleted file mode 100644 index 3155be04b..000000000 --- a/src/DecoderPlugin.hxx +++ /dev/null @@ -1,180 +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. - */ - -#ifndef MPD_DECODER_PLUGIN_HXX -#define MPD_DECODER_PLUGIN_HXX - -#include "Compiler.h" - -struct config_param; -struct InputStream; -struct tag_handler; - -/** - * Opaque handle which the decoder plugin passes to the functions in - * this header. - */ -struct Decoder; - -struct DecoderPlugin { - const char *name; - - /** - * Initialize the decoder plugin. Optional method. - * - * @param param a configuration block for this plugin, or nullptr - * if none is configured - * @return true if the plugin was initialized successfully, - * false if the plugin is not available - */ - bool (*init)(const config_param ¶m); - - /** - * Deinitialize a decoder plugin which was initialized - * successfully. Optional method. - */ - void (*finish)(void); - - /** - * Decode a stream (data read from an #input_stream object). - * - * Either implement this method or file_decode(). If - * possible, it is recommended to implement this method, - * because it is more versatile. - */ - void (*stream_decode)(Decoder &decoder, InputStream &is); - - /** - * Decode a local file. - * - * Either implement this method or stream_decode(). - */ - void (*file_decode)(Decoder &decoder, const char *path_fs); - - /** - * Scan metadata of a file. - * - * @return false if the operation has failed - */ - bool (*scan_file)(const char *path_fs, - const struct tag_handler *handler, - void *handler_ctx); - - /** - * Scan metadata of a file. - * - * @return false if the operation has failed - */ - bool (*scan_stream)(InputStream &is, - const struct tag_handler *handler, - void *handler_ctx); - - /** - * @brief Return a "virtual" filename for subtracks in - * container formats like flac - * @param const char* pathname full pathname for the file on fs - * @param const unsigned int tnum track number - * - * @return nullptr if there are no multiple files - * a filename for every single track according to tnum (param 2) - * do not include full pathname here, just the "virtual" file - */ - char* (*container_scan)(const char *path_fs, const unsigned int tnum); - - /* last element in these arrays must always be a nullptr: */ - const char *const*suffixes; - const char *const*mime_types; - - /** - * Initialize a decoder plugin. - * - * @param param a configuration block for this plugin, or nullptr if none - * is configured - * @return true if the plugin was initialized successfully, false if - * the plugin is not available - */ - bool Init(const config_param ¶m) const { - return init != nullptr - ? init(param) - : true; - } - - /** - * Deinitialize a decoder plugin which was initialized successfully. - */ - void Finish() const { - if (finish != nullptr) - finish(); - } - - /** - * Decode a stream. - */ - void StreamDecode(Decoder &decoder, InputStream &is) const { - stream_decode(decoder, is); - } - - /** - * Decode a file. - */ - void FileDecode(Decoder &decoder, const char *path_fs) const { - file_decode(decoder, path_fs); - } - - /** - * Read the tag of a file. - */ - bool ScanFile(const char *path_fs, - const tag_handler &handler, void *handler_ctx) const { - return scan_file != nullptr - ? scan_file(path_fs, &handler, handler_ctx) - : false; - } - - /** - * Read the tag of a stream. - */ - bool ScanStream(InputStream &is, - const tag_handler &handler, void *handler_ctx) const { - return scan_stream != nullptr - ? scan_stream(is, &handler, handler_ctx) - : false; - } - - /** - * return "virtual" tracks in a container - */ - char *ContainerScan(const char *path, const unsigned int tnum) const { - return container_scan(path, tnum); - } - - /** - * Does the plugin announce the specified file name suffix? - */ - gcc_pure gcc_nonnull_all - bool SupportsSuffix(const char *suffix) const; - - /** - * Does the plugin announce the specified MIME type? - */ - gcc_pure gcc_nonnull_all - bool SupportsMimeType(const char *mime_type) const; -}; - -#endif |