From 9393e4c24b4c18d7fe1fa8313008f30370cb726e Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Fri, 26 Nov 2010 18:02:50 +0000 Subject: Change how all the metadata parsers are read from a giant swich/case to function pointers via array index. Also unify the api. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28672 a1c6a512-1295-4272-9138-f99709370657 --- apps/metadata.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'apps/metadata.h') diff --git a/apps/metadata.h b/apps/metadata.h index 39da30e1a5..e2deece727 100644 --- a/apps/metadata.h +++ b/apps/metadata.h @@ -108,7 +108,6 @@ enum #define CODEC_EXTENSION "codec" #ifdef HAVE_RECORDING -#define ENCODER_SUFFIX "_enc" enum rec_format_indexes { __REC_FORMAT_START_INDEX = -1, @@ -139,11 +138,11 @@ extern const int rec_format_afmt[REC_NUM_FORMATS]; /* get AFMT_* corresponding REC_FORMAT_* */ extern const int afmt_rec_format[AFMT_NUM_CODECS]; -#define AFMT_ENTRY(label, root_fname, enc_root_fname, ext_list) \ - { label, root_fname, enc_root_fname, ext_list } +#define AFMT_ENTRY(label, root_fname, enc_root_fname, func, ext_list) \ + { label, root_fname, enc_root_fname, func, ext_list } #else /* !HAVE_RECORDING */ -#define AFMT_ENTRY(label, root_fname, enc_root_fname, ext_list) \ - { label, root_fname, ext_list } +#define AFMT_ENTRY(label, root_fname, enc_root_fname, func, ext_list) \ + { label, root_fname, func, ext_list } #endif /* HAVE_RECORDING */ #else /* !SWCODEC */ @@ -154,6 +153,7 @@ extern const int afmt_rec_format[AFMT_NUM_CODECS]; /** Database of audio formats **/ /* record describing the audio format */ +struct mp3entry; struct afmt_entry { const char *label; /* format label */ @@ -163,7 +163,8 @@ struct afmt_entry const char *codec_enc_root_fn; /* filename of encoder codec */ #endif #endif - const char *ext_list; /* double NULL terminated extension + bool (*parse_func)(int fd, struct mp3entry *id3); /* return true on success */ + const char *ext_list; /* NULL terminated extension list for type with the first as the default for recording */ }; -- cgit v1.2.3