tag/handler: use CamelCase
This commit is contained in:
src
SongUpdate.cxxTagArchive.cxxTagArchive.hxxTagFile.cxxTagFile.hxxTagStream.cxxTagStream.hxx
command
decoder
DecoderPlugin.hxx
plugins
AdPlugDecoderPlugin.cxxAudiofileDecoderPlugin.cxxDsdLib.cxxDsdLib.hxxDsdiffDecoderPlugin.cxxDsfDecoderPlugin.cxxFaadDecoderPlugin.cxxFfmpegDecoderPlugin.cxxFfmpegMetaData.cxxFfmpegMetaData.hxxFlacDecoderPlugin.cxxFlacMetadata.cxxFlacMetadata.hxxFluidsynthDecoderPlugin.cxxGmeDecoderPlugin.cxxMadDecoderPlugin.cxxMikmodDecoderPlugin.cxxModplugDecoderPlugin.cxxMpcdecDecoderPlugin.cxxMpg123DecoderPlugin.cxxOpusDecoderPlugin.cxxOpusTags.cxxOpusTags.hxxSidplayDecoderPlugin.cxxSndfileDecoderPlugin.cxxVorbisComments.cxxVorbisComments.hxxVorbisDecoderPlugin.cxxWavpackDecoderPlugin.cxxWildmidiDecoderPlugin.cxx
playlist
tag
test
@ -78,7 +78,7 @@ Song::LoadFile(Storage &storage, const char *path_utf8, Directory &parent)
|
|||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
tag_scan_fallback(Path path,
|
tag_scan_fallback(Path path,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
return tag_ape_scan2(path, handler, handler_ctx) ||
|
return tag_ape_scan2(path, handler, handler_ctx) ||
|
||||||
tag_id3_scan(path, handler, handler_ctx);
|
tag_id3_scan(path, handler, handler_ctx);
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
bool
|
bool
|
||||||
tag_archive_scan(Path path, const tag_handler &handler, void *handler_ctx)
|
tag_archive_scan(Path path, const TagHandler &handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
assert(!path.IsNull());
|
assert(!path.IsNull());
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "check.h"
|
#include "check.h"
|
||||||
|
|
||||||
class Path;
|
class Path;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scan the tags of a song file inside an archive. Invokes matching
|
* Scan the tags of a song file inside an archive. Invokes matching
|
||||||
@ -34,6 +34,6 @@ struct tag_handler;
|
|||||||
* found)
|
* found)
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
tag_archive_scan(Path path, const tag_handler &handler, void *handler_ctx);
|
tag_archive_scan(Path path, const TagHandler &handler, void *handler_ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,7 +34,7 @@ class TagFileScan {
|
|||||||
const Path path_fs;
|
const Path path_fs;
|
||||||
const char *const suffix;
|
const char *const suffix;
|
||||||
|
|
||||||
const tag_handler &handler;
|
const TagHandler &handler;
|
||||||
void *handler_ctx;
|
void *handler_ctx;
|
||||||
|
|
||||||
Mutex mutex;
|
Mutex mutex;
|
||||||
@ -43,7 +43,7 @@ class TagFileScan {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
TagFileScan(Path _path_fs, const char *_suffix,
|
TagFileScan(Path _path_fs, const char *_suffix,
|
||||||
const tag_handler &_handler, void *_handler_ctx)
|
const TagHandler &_handler, void *_handler_ctx)
|
||||||
:path_fs(_path_fs), suffix(_suffix),
|
:path_fs(_path_fs), suffix(_suffix),
|
||||||
handler(_handler), handler_ctx(_handler_ctx) ,
|
handler(_handler), handler_ctx(_handler_ctx) ,
|
||||||
is(nullptr) {}
|
is(nullptr) {}
|
||||||
@ -77,7 +77,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
bool
|
bool
|
||||||
tag_file_scan(Path path_fs, const tag_handler &handler, void *handler_ctx)
|
tag_file_scan(Path path_fs, const TagHandler &handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
assert(!path_fs.IsNull());
|
assert(!path_fs.IsNull());
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "check.h"
|
#include "check.h"
|
||||||
|
|
||||||
class Path;
|
class Path;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scan the tags of a song file. Invokes matching decoder plugins,
|
* Scan the tags of a song file. Invokes matching decoder plugins,
|
||||||
@ -33,6 +33,6 @@ struct tag_handler;
|
|||||||
* found)
|
* found)
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
tag_file_scan(Path path, const tag_handler &handler, void *handler_ctx);
|
tag_file_scan(Path path, const TagHandler &handler, void *handler_ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -42,7 +42,7 @@ CheckDecoderPlugin(const DecoderPlugin &plugin,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
tag_stream_scan(InputStream &is, const tag_handler &handler, void *ctx)
|
tag_stream_scan(InputStream &is, const TagHandler &handler, void *ctx)
|
||||||
{
|
{
|
||||||
assert(is.IsReady());
|
assert(is.IsReady());
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ tag_stream_scan(InputStream &is, const tag_handler &handler, void *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
tag_stream_scan(const char *uri, const tag_handler &handler, void *ctx)
|
tag_stream_scan(const char *uri, const TagHandler &handler, void *ctx)
|
||||||
{
|
{
|
||||||
Mutex mutex;
|
Mutex mutex;
|
||||||
Cond cond;
|
Cond cond;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "check.h"
|
#include "check.h"
|
||||||
|
|
||||||
class InputStream;
|
class InputStream;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scan the tags of an #InputStream. Invokes matching decoder
|
* Scan the tags of an #InputStream. Invokes matching decoder
|
||||||
@ -33,9 +33,9 @@ struct tag_handler;
|
|||||||
* found)
|
* found)
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
tag_stream_scan(InputStream &is, const tag_handler &handler, void *ctx);
|
tag_stream_scan(InputStream &is, const TagHandler &handler, void *ctx);
|
||||||
|
|
||||||
bool
|
bool
|
||||||
tag_stream_scan(const char *uri, const tag_handler &handler, void *ctx);
|
tag_stream_scan(const char *uri, const TagHandler &handler, void *ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -148,7 +148,7 @@ print_pair(const char *key, const char *value, void *ctx)
|
|||||||
r.Format("%s: %s\n", key, value);
|
r.Format("%s: %s\n", key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr tag_handler print_comment_handler = {
|
static constexpr TagHandler print_comment_handler = {
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
print_pair,
|
print_pair,
|
||||||
|
@ -168,7 +168,7 @@ handle_listfiles(Client &client, Request args, Response &r)
|
|||||||
gcc_unreachable();
|
gcc_unreachable();
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr tag_handler print_tag_handler = {
|
static constexpr TagHandler print_tag_handler = {
|
||||||
nullptr,
|
nullptr,
|
||||||
print_tag,
|
print_tag,
|
||||||
nullptr,
|
nullptr,
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
struct ConfigBlock;
|
struct ConfigBlock;
|
||||||
class InputStream;
|
class InputStream;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
class Path;
|
class Path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,7 +74,7 @@ struct DecoderPlugin {
|
|||||||
* @return false if the operation has failed
|
* @return false if the operation has failed
|
||||||
*/
|
*/
|
||||||
bool (*scan_file)(Path path_fs,
|
bool (*scan_file)(Path path_fs,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx);
|
void *handler_ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,7 +83,7 @@ struct DecoderPlugin {
|
|||||||
* @return false if the operation has failed
|
* @return false if the operation has failed
|
||||||
*/
|
*/
|
||||||
bool (*scan_stream)(InputStream &is,
|
bool (*scan_stream)(InputStream &is,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx);
|
void *handler_ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -145,7 +145,7 @@ struct DecoderPlugin {
|
|||||||
*/
|
*/
|
||||||
template<typename P>
|
template<typename P>
|
||||||
bool ScanFile(P path_fs,
|
bool ScanFile(P path_fs,
|
||||||
const tag_handler &handler, void *handler_ctx) const {
|
const TagHandler &handler, void *handler_ctx) const {
|
||||||
return scan_file != nullptr
|
return scan_file != nullptr
|
||||||
? scan_file(path_fs, &handler, handler_ctx)
|
? scan_file(path_fs, &handler, handler_ctx)
|
||||||
: false;
|
: false;
|
||||||
@ -155,7 +155,7 @@ struct DecoderPlugin {
|
|||||||
* Read the tag of a stream.
|
* Read the tag of a stream.
|
||||||
*/
|
*/
|
||||||
bool ScanStream(InputStream &is,
|
bool ScanStream(InputStream &is,
|
||||||
const tag_handler &handler, void *handler_ctx) const {
|
const TagHandler &handler, void *handler_ctx) const {
|
||||||
return scan_stream != nullptr
|
return scan_stream != nullptr
|
||||||
? scan_stream(is, &handler, handler_ctx)
|
? scan_stream(is, &handler, handler_ctx)
|
||||||
: false;
|
: false;
|
||||||
|
@ -89,7 +89,7 @@ adplug_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
adplug_scan_tag(TagType type, const std::string &value,
|
adplug_scan_tag(TagType type, const std::string &value,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (!value.empty())
|
if (!value.empty())
|
||||||
tag_handler_invoke_tag(handler, handler_ctx,
|
tag_handler_invoke_tag(handler, handler_ctx,
|
||||||
@ -98,7 +98,7 @@ adplug_scan_tag(TagType type, const std::string &value,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
adplug_scan_file(Path path_fs,
|
adplug_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
CEmuopl opl(sample_rate, true, true);
|
CEmuopl opl(sample_rate, true, true);
|
||||||
opl.init();
|
opl.init();
|
||||||
|
@ -263,7 +263,7 @@ audiofile_get_duration(InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
audiofile_scan_stream(InputStream &is,
|
audiofile_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const auto duration = audiofile_get_duration(is);
|
const auto duration = audiofile_get_duration(is);
|
||||||
if (duration.IsNegative())
|
if (duration.IsNegative())
|
||||||
|
@ -106,7 +106,7 @@ dsdlib_valid_freq(uint32_t samplefreq)
|
|||||||
#ifdef ENABLE_ID3TAG
|
#ifdef ENABLE_ID3TAG
|
||||||
void
|
void
|
||||||
dsdlib_tag_id3(InputStream &is,
|
dsdlib_tag_id3(InputStream &is,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx, offset_type tagoffset)
|
void *handler_ctx, offset_type tagoffset)
|
||||||
{
|
{
|
||||||
if (tagoffset == 0 || !is.KnownSize())
|
if (tagoffset == 0 || !is.KnownSize())
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
struct Decoder;
|
struct Decoder;
|
||||||
|
struct TagHandler;
|
||||||
class InputStream;
|
class InputStream;
|
||||||
|
|
||||||
struct DsdId {
|
struct DsdId {
|
||||||
@ -80,7 +81,7 @@ dsdlib_valid_freq(uint32_t samplefreq);
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dsdlib_tag_id3(InputStream &is,
|
dsdlib_tag_id3(InputStream &is,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx, offset_type tagoffset);
|
void *handler_ctx, offset_type tagoffset);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -187,7 +187,7 @@ dsdiff_read_prop(Decoder *decoder, InputStream &is,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
dsdiff_handle_native_tag(InputStream &is,
|
dsdiff_handle_native_tag(InputStream &is,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx, offset_type tagoffset,
|
void *handler_ctx, offset_type tagoffset,
|
||||||
TagType type)
|
TagType type)
|
||||||
{
|
{
|
||||||
@ -229,7 +229,7 @@ static bool
|
|||||||
dsdiff_read_metadata_extra(Decoder *decoder, InputStream &is,
|
dsdiff_read_metadata_extra(Decoder *decoder, InputStream &is,
|
||||||
DsdiffMetaData *metadata,
|
DsdiffMetaData *metadata,
|
||||||
DsdiffChunkHeader *chunk_header,
|
DsdiffChunkHeader *chunk_header,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx)
|
void *handler_ctx)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -456,7 +456,7 @@ dsdiff_stream_decode(Decoder &decoder, InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
dsdiff_scan_stream(InputStream &is,
|
dsdiff_scan_stream(InputStream &is,
|
||||||
gcc_unused const struct tag_handler *handler,
|
gcc_unused const TagHandler *handler,
|
||||||
gcc_unused void *handler_ctx)
|
gcc_unused void *handler_ctx)
|
||||||
{
|
{
|
||||||
DsdiffMetaData metadata;
|
DsdiffMetaData metadata;
|
||||||
|
@ -331,7 +331,7 @@ dsf_stream_decode(Decoder &decoder, InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
dsf_scan_stream(InputStream &is,
|
dsf_scan_stream(InputStream &is,
|
||||||
gcc_unused const struct tag_handler *handler,
|
gcc_unused const TagHandler *handler,
|
||||||
gcc_unused void *handler_ctx)
|
gcc_unused void *handler_ctx)
|
||||||
{
|
{
|
||||||
/* check DSF metadata */
|
/* check DSF metadata */
|
||||||
|
@ -419,7 +419,7 @@ faad_stream_decode(Decoder &mpd_decoder, InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
faad_scan_stream(InputStream &is,
|
faad_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
auto result = faad_get_file_time(is);
|
auto result = faad_get_file_time(is);
|
||||||
if (!result.first)
|
if (!result.first)
|
||||||
|
@ -390,14 +390,14 @@ FfmpegParseMetaData(Decoder &decoder,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
FfmpegScanMetadata(const AVStream &stream,
|
FfmpegScanMetadata(const AVStream &stream,
|
||||||
const tag_handler &handler, void *handler_ctx)
|
const TagHandler &handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FfmpegScanDictionary(stream.metadata, &handler, handler_ctx);
|
FfmpegScanDictionary(stream.metadata, &handler, handler_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
FfmpegScanMetadata(const AVFormatContext &format_context, int audio_stream,
|
FfmpegScanMetadata(const AVFormatContext &format_context, int audio_stream,
|
||||||
const tag_handler &handler, void *handler_ctx)
|
const TagHandler &handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
assert(audio_stream >= 0);
|
assert(audio_stream >= 0);
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
FfmpegScanStream(AVFormatContext &format_context,
|
FfmpegScanStream(AVFormatContext &format_context,
|
||||||
const struct tag_handler &handler, void *handler_ctx)
|
const TagHandler &handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const int find_result =
|
const int find_result =
|
||||||
avformat_find_stream_info(&format_context, nullptr);
|
avformat_find_stream_info(&format_context, nullptr);
|
||||||
@ -638,7 +638,7 @@ FfmpegScanStream(AVFormatContext &format_context,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
ffmpeg_scan_stream(InputStream &is,
|
ffmpeg_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
AVInputFormat *input_format = ffmpeg_probe(nullptr, is);
|
AVInputFormat *input_format = ffmpeg_probe(nullptr, is);
|
||||||
if (input_format == nullptr)
|
if (input_format == nullptr)
|
||||||
|
@ -42,7 +42,7 @@ static constexpr struct tag_table ffmpeg_tags[] = {
|
|||||||
static void
|
static void
|
||||||
FfmpegScanTag(TagType type,
|
FfmpegScanTag(TagType type,
|
||||||
AVDictionary *m, const char *name,
|
AVDictionary *m, const char *name,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
AVDictionaryEntry *mt = nullptr;
|
AVDictionaryEntry *mt = nullptr;
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ FfmpegScanTag(TagType type,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
FfmpegScanPairs(AVDictionary *dict,
|
FfmpegScanPairs(AVDictionary *dict,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
AVDictionaryEntry *i = nullptr;
|
AVDictionaryEntry *i = nullptr;
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ FfmpegScanPairs(AVDictionary *dict,
|
|||||||
|
|
||||||
void
|
void
|
||||||
FfmpegScanDictionary(AVDictionary *dict,
|
FfmpegScanDictionary(AVDictionary *dict,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (handler->tag != nullptr) {
|
if (handler->tag != nullptr) {
|
||||||
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
|
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
|
||||||
|
@ -21,10 +21,10 @@
|
|||||||
#define MPD_FFMPEG_METADATA_HXX
|
#define MPD_FFMPEG_METADATA_HXX
|
||||||
|
|
||||||
struct AVDictionary;
|
struct AVDictionary;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
|
|
||||||
void
|
void
|
||||||
FfmpegScanDictionary(AVDictionary *dict,
|
FfmpegScanDictionary(AVDictionary *dict,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,7 +82,7 @@ flac_write_cb(const FLAC__StreamDecoder *dec, const FLAC__Frame *frame,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
flac_scan_file(Path path_fs,
|
flac_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FlacMetadataChain chain;
|
FlacMetadataChain chain;
|
||||||
if (!chain.Read(NarrowPath(path_fs))) {
|
if (!chain.Read(NarrowPath(path_fs))) {
|
||||||
@ -98,7 +98,7 @@ flac_scan_file(Path path_fs,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
flac_scan_stream(InputStream &is,
|
flac_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FlacMetadataChain chain;
|
FlacMetadataChain chain;
|
||||||
if (!chain.Read(is)) {
|
if (!chain.Read(is)) {
|
||||||
@ -299,7 +299,7 @@ oggflac_init(gcc_unused const ConfigBlock &block)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
oggflac_scan_file(Path path_fs,
|
oggflac_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FlacMetadataChain chain;
|
FlacMetadataChain chain;
|
||||||
if (!chain.ReadOgg(NarrowPath(path_fs))) {
|
if (!chain.ReadOgg(NarrowPath(path_fs))) {
|
||||||
@ -315,7 +315,7 @@ oggflac_scan_file(Path path_fs,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
oggflac_scan_stream(InputStream &is,
|
oggflac_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FlacMetadataChain chain;
|
FlacMetadataChain chain;
|
||||||
if (!chain.ReadOgg(is)) {
|
if (!chain.ReadOgg(is)) {
|
||||||
|
@ -80,7 +80,7 @@ flac_comment_value(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
|||||||
static bool
|
static bool
|
||||||
flac_copy_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
flac_copy_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
||||||
const char *name, TagType tag_type,
|
const char *name, TagType tag_type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const char *value = flac_comment_value(entry, name);
|
const char *value = flac_comment_value(entry, name);
|
||||||
if (value != nullptr) {
|
if (value != nullptr) {
|
||||||
@ -93,7 +93,7 @@ flac_copy_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
flac_scan_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
flac_scan_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (handler->pair != nullptr) {
|
if (handler->pair != nullptr) {
|
||||||
const char *comment = (const char *)entry->entry;
|
const char *comment = (const char *)entry->entry;
|
||||||
@ -118,7 +118,7 @@ flac_scan_comment(const FLAC__StreamMetadata_VorbisComment_Entry *entry,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
flac_scan_comments(const FLAC__StreamMetadata_VorbisComment *comment,
|
flac_scan_comments(const FLAC__StreamMetadata_VorbisComment *comment,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < comment->num_comments; ++i)
|
for (unsigned i = 0; i < comment->num_comments; ++i)
|
||||||
flac_scan_comment(&comment->comments[i],
|
flac_scan_comment(&comment->comments[i],
|
||||||
@ -137,7 +137,7 @@ flac_duration(const FLAC__StreamMetadata_StreamInfo *stream_info)
|
|||||||
|
|
||||||
void
|
void
|
||||||
flac_scan_metadata(const FLAC__StreamMetadata *block,
|
flac_scan_metadata(const FLAC__StreamMetadata *block,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
switch (block->type) {
|
switch (block->type) {
|
||||||
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
|
case FLAC__METADATA_TYPE_VORBIS_COMMENT:
|
||||||
@ -165,7 +165,7 @@ flac_vorbis_comments_to_tag(const FLAC__StreamMetadata_VorbisComment *comment)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FlacMetadataChain::Scan(const struct tag_handler *handler, void *handler_ctx)
|
FlacMetadataChain::Scan(const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
FLACMetadataIterator iterator(*this);
|
FLACMetadataIterator iterator(*this);
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
class MixRampInfo;
|
class MixRampInfo;
|
||||||
|
|
||||||
class FlacMetadataChain {
|
class FlacMetadataChain {
|
||||||
@ -82,7 +82,7 @@ public:
|
|||||||
return FLAC__Metadata_ChainStatusString[GetStatus()];
|
return FLAC__Metadata_ChainStatusString[GetStatus()];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scan(const tag_handler *handler, void *handler_ctx);
|
void Scan(const TagHandler *handler, void *handler_ctx);
|
||||||
};
|
};
|
||||||
|
|
||||||
class FLACMetadataIterator {
|
class FLACMetadataIterator {
|
||||||
@ -126,6 +126,6 @@ flac_vorbis_comments_to_tag(const FLAC__StreamMetadata_VorbisComment *comment);
|
|||||||
|
|
||||||
void
|
void
|
||||||
flac_scan_metadata(const FLAC__StreamMetadata *block,
|
flac_scan_metadata(const FLAC__StreamMetadata *block,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -201,7 +201,7 @@ fluidsynth_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
fluidsynth_scan_file(Path path_fs,
|
fluidsynth_scan_file(Path path_fs,
|
||||||
gcc_unused const struct tag_handler *handler,
|
gcc_unused const TagHandler *handler,
|
||||||
gcc_unused void *handler_ctx)
|
gcc_unused void *handler_ctx)
|
||||||
{
|
{
|
||||||
return fluid_is_midifile(path_fs.c_str());
|
return fluid_is_midifile(path_fs.c_str());
|
||||||
|
@ -215,7 +215,7 @@ gme_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
ScanGmeInfo(const gme_info_t &info, unsigned song_num, int track_count,
|
ScanGmeInfo(const gme_info_t &info, unsigned song_num, int track_count,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (info.play_length > 0)
|
if (info.play_length > 0)
|
||||||
tag_handler_invoke_duration(handler, handler_ctx,
|
tag_handler_invoke_duration(handler, handler_ctx,
|
||||||
@ -255,7 +255,7 @@ ScanGmeInfo(const gme_info_t &info, unsigned song_num, int track_count,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
ScanMusicEmu(Music_Emu *emu, unsigned song_num,
|
ScanMusicEmu(Music_Emu *emu, unsigned song_num,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
gme_info_t *ti;
|
gme_info_t *ti;
|
||||||
const char *gme_err = gme_track_info(emu, &ti, song_num);
|
const char *gme_err = gme_track_info(emu, &ti, song_num);
|
||||||
@ -275,7 +275,7 @@ ScanMusicEmu(Music_Emu *emu, unsigned song_num,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
gme_scan_file(Path path_fs,
|
gme_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const auto container = ParseContainerPath(path_fs);
|
const auto container = ParseContainerPath(path_fs);
|
||||||
|
|
||||||
|
@ -1083,7 +1083,7 @@ mp3_decode(Decoder &decoder, InputStream &input_stream)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
mad_decoder_scan_stream(InputStream &is,
|
mad_decoder_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const auto result = mad_decoder_total_file_time(is);
|
const auto result = mad_decoder_total_file_time(is);
|
||||||
if (!result.first)
|
if (!result.first)
|
||||||
|
@ -187,7 +187,7 @@ mikmod_decoder_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
mikmod_decoder_scan_file(Path path_fs,
|
mikmod_decoder_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
/* deconstify the path because libmikmod wants a non-const
|
/* deconstify the path because libmikmod wants a non-const
|
||||||
string pointer */
|
string pointer */
|
||||||
|
@ -177,7 +177,7 @@ mod_decode(Decoder &decoder, InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
modplug_scan_stream(InputStream &is,
|
modplug_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
ModPlugFile *f = LoadModPlugFile(nullptr, is);
|
ModPlugFile *f = LoadModPlugFile(nullptr, is);
|
||||||
if (f == nullptr)
|
if (f == nullptr)
|
||||||
|
@ -249,7 +249,7 @@ mpcdec_get_file_duration(InputStream &is)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
mpcdec_scan_stream(InputStream &is,
|
mpcdec_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const auto duration = mpcdec_get_file_duration(is);
|
const auto duration = mpcdec_get_file_duration(is);
|
||||||
if (duration.IsNegative())
|
if (duration.IsNegative())
|
||||||
|
@ -287,7 +287,7 @@ mpd_mpg123_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
mpd_mpg123_scan_file(Path path_fs,
|
mpd_mpg123_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
mpg123_handle *const handle = mpg123_new(nullptr, &error);
|
mpg123_handle *const handle = mpg123_new(nullptr, &error);
|
||||||
|
@ -433,7 +433,7 @@ mpd_opus_stream_decode(Decoder &decoder,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
mpd_opus_scan_stream(InputStream &is,
|
mpd_opus_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
OggSyncState oy(is);
|
OggSyncState oy(is);
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ ParseOpusTagName(const char *name)
|
|||||||
static void
|
static void
|
||||||
ScanOneOpusTag(const char *name, const char *value,
|
ScanOneOpusTag(const char *name, const char *value,
|
||||||
ReplayGainInfo *rgi,
|
ReplayGainInfo *rgi,
|
||||||
const struct tag_handler *handler, void *ctx)
|
const TagHandler *handler, void *ctx)
|
||||||
{
|
{
|
||||||
if (rgi != nullptr && strcmp(name, "R128_TRACK_GAIN") == 0) {
|
if (rgi != nullptr && strcmp(name, "R128_TRACK_GAIN") == 0) {
|
||||||
/* R128_TRACK_GAIN is a Q7.8 fixed point number in
|
/* R128_TRACK_GAIN is a Q7.8 fixed point number in
|
||||||
@ -67,7 +67,7 @@ ScanOneOpusTag(const char *name, const char *value,
|
|||||||
bool
|
bool
|
||||||
ScanOpusTags(const void *data, size_t size,
|
ScanOpusTags(const void *data, size_t size,
|
||||||
ReplayGainInfo *rgi,
|
ReplayGainInfo *rgi,
|
||||||
const struct tag_handler *handler, void *ctx)
|
const TagHandler *handler, void *ctx)
|
||||||
{
|
{
|
||||||
OpusReader r(data, size);
|
OpusReader r(data, size);
|
||||||
if (!r.Expect("OpusTags", 8))
|
if (!r.Expect("OpusTags", 8))
|
||||||
|
@ -25,10 +25,11 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
struct ReplayGainInfo;
|
struct ReplayGainInfo;
|
||||||
|
struct TagHandler;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScanOpusTags(const void *data, size_t size,
|
ScanOpusTags(const void *data, size_t size,
|
||||||
ReplayGainInfo *rgi,
|
ReplayGainInfo *rgi,
|
||||||
const struct tag_handler *handler, void *ctx);
|
const TagHandler *handler, void *ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -286,7 +286,7 @@ sidplay_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
sidplay_scan_file(Path path_fs,
|
sidplay_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const auto container = ParseContainerPath(path_fs);
|
const auto container = ParseContainerPath(path_fs);
|
||||||
const unsigned song_num = container.track;
|
const unsigned song_num = container.track;
|
||||||
|
@ -244,7 +244,7 @@ sndfile_stream_decode(Decoder &decoder, InputStream &is)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
sndfile_handle_tag(SNDFILE *sf, int str, TagType tag,
|
sndfile_handle_tag(SNDFILE *sf, int str, TagType tag,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const char *value = sf_get_string(sf, str);
|
const char *value = sf_get_string(sf, str);
|
||||||
if (value != nullptr)
|
if (value != nullptr)
|
||||||
@ -266,7 +266,7 @@ static constexpr struct {
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
sndfile_scan_stream(InputStream &is,
|
sndfile_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
SF_INFO info;
|
SF_INFO info;
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ vorbis_comments_to_replay_gain(ReplayGainInfo &rgi, char **comments)
|
|||||||
static bool
|
static bool
|
||||||
vorbis_copy_comment(const char *comment,
|
vorbis_copy_comment(const char *comment,
|
||||||
const char *name, TagType tag_type,
|
const char *name, TagType tag_type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ vorbis_copy_comment(const char *comment,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
vorbis_scan_comment(const char *comment,
|
vorbis_scan_comment(const char *comment,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (handler->pair != nullptr) {
|
if (handler->pair != nullptr) {
|
||||||
const DivideString split(comment, '=');
|
const DivideString split(comment, '=');
|
||||||
@ -95,7 +95,7 @@ vorbis_scan_comment(const char *comment,
|
|||||||
|
|
||||||
void
|
void
|
||||||
vorbis_comments_scan(char **comments,
|
vorbis_comments_scan(char **comments,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
while (*comments)
|
while (*comments)
|
||||||
vorbis_scan_comment(*comments++,
|
vorbis_scan_comment(*comments++,
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include "check.h"
|
#include "check.h"
|
||||||
|
|
||||||
struct ReplayGainInfo;
|
struct ReplayGainInfo;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
struct Tag;
|
struct Tag;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -31,7 +31,7 @@ vorbis_comments_to_replay_gain(ReplayGainInfo &rgi, char **comments);
|
|||||||
|
|
||||||
void
|
void
|
||||||
vorbis_comments_scan(char **comments,
|
vorbis_comments_scan(char **comments,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
Tag *
|
Tag *
|
||||||
vorbis_comments_to_tag(char **comments);
|
vorbis_comments_to_tag(char **comments);
|
||||||
|
@ -335,7 +335,7 @@ vorbis_stream_decode(Decoder &decoder,
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
vorbis_scan_stream(InputStream &is,
|
vorbis_scan_stream(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
VorbisInputStream vis(nullptr, is);
|
VorbisInputStream vis(nullptr, is);
|
||||||
OggVorbis_File vf;
|
OggVorbis_File vf;
|
||||||
|
@ -243,7 +243,7 @@ wavpack_replaygain(ReplayGainInfo &rgi,
|
|||||||
static void
|
static void
|
||||||
wavpack_scan_tag_item(WavpackContext *wpc, const char *name,
|
wavpack_scan_tag_item(WavpackContext *wpc, const char *name,
|
||||||
TagType type,
|
TagType type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
int len = WavpackGetTagItem(wpc, name, buffer, sizeof(buffer));
|
int len = WavpackGetTagItem(wpc, name, buffer, sizeof(buffer));
|
||||||
@ -256,7 +256,7 @@ wavpack_scan_tag_item(WavpackContext *wpc, const char *name,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
wavpack_scan_pair(WavpackContext *wpc, const char *name,
|
wavpack_scan_pair(WavpackContext *wpc, const char *name,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
char buffer[8192];
|
char buffer[8192];
|
||||||
int len = WavpackGetTagItem(wpc, name, buffer, sizeof(buffer));
|
int len = WavpackGetTagItem(wpc, name, buffer, sizeof(buffer));
|
||||||
@ -271,7 +271,7 @@ wavpack_scan_pair(WavpackContext *wpc, const char *name,
|
|||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
wavpack_scan_file(Path path_fs,
|
wavpack_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
char error[ERRORLEN];
|
char error[ERRORLEN];
|
||||||
WavpackContext *wpc = WavpackOpenFileInput(path_fs.c_str(), error,
|
WavpackContext *wpc = WavpackOpenFileInput(path_fs.c_str(), error,
|
||||||
|
@ -123,7 +123,7 @@ wildmidi_file_decode(Decoder &decoder, Path path_fs)
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
wildmidi_scan_file(Path path_fs,
|
wildmidi_scan_file(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
midi *wm = WildMidi_Open(path_fs.c_str());
|
midi *wm = WildMidi_Open(path_fs.c_str());
|
||||||
if (wm == nullptr)
|
if (wm == nullptr)
|
||||||
|
@ -82,7 +82,7 @@ embcue_tag_pair(const char *name, const char *value, void *ctx)
|
|||||||
playlist->cuesheet = value;
|
playlist->cuesheet = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct tag_handler embcue_tag_handler = {
|
static constexpr TagHandler embcue_tag_handler = {
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
embcue_tag_pair,
|
embcue_tag_pair,
|
||||||
|
@ -77,7 +77,7 @@ ForEachValue(const char *value, const char *end, C &&callback)
|
|||||||
static bool
|
static bool
|
||||||
tag_ape_import_item(unsigned long flags,
|
tag_ape_import_item(unsigned long flags,
|
||||||
const char *key, StringView value,
|
const char *key, StringView value,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
/* we only care about utf-8 text tags */
|
/* we only care about utf-8 text tags */
|
||||||
if ((flags & (0x3 << 1)) != 0)
|
if ((flags & (0x3 << 1)) != 0)
|
||||||
@ -107,7 +107,7 @@ tag_ape_import_item(unsigned long flags,
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
tag_ape_scan2(InputStream &is,
|
tag_ape_scan2(InputStream &is,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
bool recognized = false;
|
bool recognized = false;
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ tag_ape_scan2(InputStream &is,
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
tag_ape_scan2(Path path_fs,
|
tag_ape_scan2(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
bool recognized = false;
|
bool recognized = false;
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
class Path;
|
class Path;
|
||||||
class InputStream;
|
class InputStream;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
|
|
||||||
extern const struct tag_table ape_tags[];
|
extern const struct tag_table ape_tags[];
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ extern const struct tag_table ape_tags[];
|
|||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
tag_ape_scan2(InputStream &is,
|
tag_ape_scan2(InputStream &is,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scan the APE tags of a file.
|
* Scan the APE tags of a file.
|
||||||
@ -44,6 +44,6 @@ tag_ape_scan2(InputStream &is,
|
|||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
tag_ape_scan2(Path path_fs,
|
tag_ape_scan2(Path path_fs,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -51,7 +51,7 @@ add_tag_tag(TagType type, const char *value, void *ctx)
|
|||||||
tag.AddItem(type, value);
|
tag.AddItem(type, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct tag_handler add_tag_handler = {
|
const TagHandler add_tag_handler = {
|
||||||
add_tag_duration,
|
add_tag_duration,
|
||||||
add_tag_tag,
|
add_tag_tag,
|
||||||
nullptr,
|
nullptr,
|
||||||
@ -66,7 +66,7 @@ full_tag_pair(const char *name, gcc_unused const char *value, void *ctx)
|
|||||||
tag.SetHasPlaylist(true);
|
tag.SetHasPlaylist(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct tag_handler full_tag_handler = {
|
const TagHandler full_tag_handler = {
|
||||||
add_tag_duration,
|
add_tag_duration,
|
||||||
add_tag_tag,
|
add_tag_tag,
|
||||||
full_tag_pair,
|
full_tag_pair,
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
/**
|
/**
|
||||||
* A callback table for receiving metadata of a song.
|
* A callback table for receiving metadata of a song.
|
||||||
*/
|
*/
|
||||||
struct tag_handler {
|
struct TagHandler {
|
||||||
/**
|
/**
|
||||||
* Declare the duration of a song. Do not call
|
* Declare the duration of a song. Do not call
|
||||||
* this when the duration could not be determined, because
|
* this when the duration could not be determined, because
|
||||||
@ -53,7 +53,7 @@ struct tag_handler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
tag_handler_invoke_duration(const struct tag_handler *handler, void *ctx,
|
tag_handler_invoke_duration(const TagHandler *handler, void *ctx,
|
||||||
SongTime duration)
|
SongTime duration)
|
||||||
{
|
{
|
||||||
assert(handler != nullptr);
|
assert(handler != nullptr);
|
||||||
@ -63,7 +63,7 @@ tag_handler_invoke_duration(const struct tag_handler *handler, void *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
tag_handler_invoke_tag(const struct tag_handler *handler, void *ctx,
|
tag_handler_invoke_tag(const TagHandler *handler, void *ctx,
|
||||||
TagType type, const char *value)
|
TagType type, const char *value)
|
||||||
{
|
{
|
||||||
assert(handler != nullptr);
|
assert(handler != nullptr);
|
||||||
@ -75,7 +75,7 @@ tag_handler_invoke_tag(const struct tag_handler *handler, void *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
tag_handler_invoke_pair(const struct tag_handler *handler, void *ctx,
|
tag_handler_invoke_pair(const TagHandler *handler, void *ctx,
|
||||||
const char *name, const char *value)
|
const char *name, const char *value)
|
||||||
{
|
{
|
||||||
assert(handler != nullptr);
|
assert(handler != nullptr);
|
||||||
@ -87,16 +87,16 @@ tag_handler_invoke_pair(const struct tag_handler *handler, void *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This #tag_handler implementation adds tag values to a #TagBuilder object
|
* This #TagHandler implementation adds tag values to a #TagBuilder object
|
||||||
* (casted from the context pointer).
|
* (casted from the context pointer).
|
||||||
*/
|
*/
|
||||||
extern const struct tag_handler add_tag_handler;
|
extern const TagHandler add_tag_handler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This #tag_handler implementation adds tag values to a #TagBuilder object
|
* This #TagHandler implementation adds tag values to a #TagBuilder object
|
||||||
* (casted from the context pointer), and supports the has_playlist
|
* (casted from the context pointer), and supports the has_playlist
|
||||||
* attribute.
|
* attribute.
|
||||||
*/
|
*/
|
||||||
extern const struct tag_handler full_tag_handler;
|
extern const TagHandler full_tag_handler;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -97,7 +97,7 @@ import_id3_string(const id3_ucs4_t *ucs4)
|
|||||||
static void
|
static void
|
||||||
tag_id3_import_text_frame(const struct id3_frame *frame,
|
tag_id3_import_text_frame(const struct id3_frame *frame,
|
||||||
TagType type,
|
TagType type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (frame->nfields != 2)
|
if (frame->nfields != 2)
|
||||||
return;
|
return;
|
||||||
@ -140,7 +140,7 @@ tag_id3_import_text_frame(const struct id3_frame *frame,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tag_id3_import_text(struct id3_tag *tag, const char *id, TagType type,
|
tag_id3_import_text(struct id3_tag *tag, const char *id, TagType type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const struct id3_frame *frame;
|
const struct id3_frame *frame;
|
||||||
for (unsigned i = 0;
|
for (unsigned i = 0;
|
||||||
@ -160,7 +160,7 @@ tag_id3_import_text(struct id3_tag *tag, const char *id, TagType type,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tag_id3_import_comment_frame(const struct id3_frame *frame, TagType type,
|
tag_id3_import_comment_frame(const struct id3_frame *frame, TagType type,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx)
|
void *handler_ctx)
|
||||||
{
|
{
|
||||||
if (frame->nfields != 4)
|
if (frame->nfields != 4)
|
||||||
@ -189,7 +189,7 @@ tag_id3_import_comment_frame(const struct id3_frame *frame, TagType type,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tag_id3_import_comment(struct id3_tag *tag, const char *id, TagType type,
|
tag_id3_import_comment(struct id3_tag *tag, const char *id, TagType type,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
const struct id3_frame *frame;
|
const struct id3_frame *frame;
|
||||||
for (unsigned i = 0;
|
for (unsigned i = 0;
|
||||||
@ -226,7 +226,7 @@ tag_id3_parse_txxx_name(const char *name)
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tag_id3_import_musicbrainz(struct id3_tag *id3_tag,
|
tag_id3_import_musicbrainz(struct id3_tag *id3_tag,
|
||||||
const struct tag_handler *handler,
|
const TagHandler *handler,
|
||||||
void *handler_ctx)
|
void *handler_ctx)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0;; ++i) {
|
for (unsigned i = 0;; ++i) {
|
||||||
@ -262,7 +262,7 @@ tag_id3_import_musicbrainz(struct id3_tag *id3_tag,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tag_id3_import_ufid(struct id3_tag *id3_tag,
|
tag_id3_import_ufid(struct id3_tag *id3_tag,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0;; ++i) {
|
for (unsigned i = 0;; ++i) {
|
||||||
const id3_frame *frame = id3_tag_findframe(id3_tag, "UFID", i);
|
const id3_frame *frame = id3_tag_findframe(id3_tag, "UFID", i);
|
||||||
@ -296,7 +296,7 @@ tag_id3_import_ufid(struct id3_tag *id3_tag,
|
|||||||
|
|
||||||
void
|
void
|
||||||
scan_id3_tag(struct id3_tag *tag,
|
scan_id3_tag(struct id3_tag *tag,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
tag_id3_import_text(tag, ID3_FRAME_ARTIST, TAG_ARTIST,
|
tag_id3_import_text(tag, ID3_FRAME_ARTIST, TAG_ARTIST,
|
||||||
handler, handler_ctx);
|
handler, handler_ctx);
|
||||||
@ -345,7 +345,7 @@ tag_id3_import(struct id3_tag *tag)
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
tag_id3_scan(Path path_fs,
|
tag_id3_scan(Path path_fs,
|
||||||
const struct tag_handler *handler, void *handler_ctx)
|
const TagHandler *handler, void *handler_ctx)
|
||||||
{
|
{
|
||||||
UniqueId3Tag tag;
|
UniqueId3Tag tag;
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "Compiler.h"
|
#include "Compiler.h"
|
||||||
|
|
||||||
class Path;
|
class Path;
|
||||||
struct tag_handler;
|
struct TagHandler;
|
||||||
struct Tag;
|
struct Tag;
|
||||||
struct id3_tag;
|
struct id3_tag;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ struct id3_tag;
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
tag_id3_scan(Path path_fs,
|
tag_id3_scan(Path path_fs,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
Tag *
|
Tag *
|
||||||
tag_id3_import(id3_tag *);
|
tag_id3_import(id3_tag *);
|
||||||
@ -43,7 +43,7 @@ tag_id3_import(id3_tag *);
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
scan_id3_tag(id3_tag *tag,
|
scan_id3_tag(id3_tag *tag,
|
||||||
const tag_handler *handler, void *handler_ctx);
|
const TagHandler *handler, void *handler_ctx);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ scan_id3_tag(id3_tag *tag,
|
|||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
tag_id3_scan(gcc_unused Path path_fs,
|
tag_id3_scan(gcc_unused Path path_fs,
|
||||||
gcc_unused const tag_handler *handler,
|
gcc_unused const TagHandler *handler,
|
||||||
gcc_unused void *handler_ctx)
|
gcc_unused void *handler_ctx)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -62,7 +62,7 @@ print_pair(const char *name, const char *value, gcc_unused void *ctx)
|
|||||||
printf("\"%s\"=%s\n", name, value);
|
printf("\"%s\"=%s\n", name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct tag_handler print_handler = {
|
static constexpr TagHandler print_handler = {
|
||||||
print_duration,
|
print_duration,
|
||||||
print_tag,
|
print_tag,
|
||||||
print_pair,
|
print_pair,
|
||||||
|
Reference in New Issue
Block a user