From 4fc717a4c19a1fe0349977d7b9c86561c5a5cf2d Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Mon, 28 Aug 2006 22:38:41 +0000 Subject: Added FS#2939 Encoder Codec Interface + Codecs by Antonius Hellmann with additional FM Recording support and my modifications git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10789 a1c6a512-1295-4272-9138-f99709370657 --- firmware/id3.c | 71 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 20 deletions(-) (limited to 'firmware/id3.c') diff --git a/firmware/id3.c b/firmware/id3.c index 35e0517769..3f2ba23684 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -85,28 +85,59 @@ static const char* const genres[] = { "Synthpop" }; -static const char* const codec_labels[] = { - "???", /* Unknown file format */ - - "MP1", /* MPEG Audio layer 1 */ - "MP2", /* MPEG Audio layer 2 */ - "MP3", /* MPEG Audio layer 3 */ - +/* database of audio formats */ +const struct afmt_entry audio_formats[AFMT_NUM_CODECS] = +{ + /* Unknown file format */ + AFMT_ENTRY("???", NULL, NULL, NULL ), + /* MPEG Audio layer 1 */ + AFMT_ENTRY("MP1", "mpa.codec", NULL, NULL ), + /* MPEG Audio layer 2 */ + AFMT_ENTRY("MP2", "mpa.codec", NULL, NULL ), + /* MPEG Audio layer 3 */ + AFMT_ENTRY("MP3", "mpa.codec", "mp3_enc.codec", ".mp3"), #if CONFIG_CODEC == SWCODEC - "WAV", /* Uncompressed PCM in a WAV file */ - "Ogg", /* Ogg Vorbis */ - "FLAC", /* FLAC */ - "MPC", /* Musepack */ - "AC3", /* A/52 (aka AC3) audio */ - "WV", /* WavPack */ - "ALAC", /* Apple Lossless Audio Codec */ - "AAC", /* Advanced Audio Coding in M4A container */ - "SHN", /* Shorten */ - "AIFF", /* Audio Interchange File Format */ - "SID", /* SID File Format */ + /* Uncompressed PCM in a WAV file */ + AFMT_ENTRY("WAV", "wav.codec", "wav_enc.codec", ".wav"), + /* Ogg Vorbis */ + AFMT_ENTRY("Ogg", "vorbis.codec", NULL, NULL ), + /* FLAC */ + AFMT_ENTRY("FLAC", "flac.codec", NULL, NULL ), + /* Musepack */ + AFMT_ENTRY("MPC", "mpc.codec", NULL, NULL ), + /* A/52 (aka AC3) audio */ + AFMT_ENTRY("AC3", "a52.codec", NULL, NULL ), + /* WavPack */ + AFMT_ENTRY("WV", "wavpack.codec", "wavpack_enc.codec", ".wv" ), + /* Apple Lossless Audio Codec */ + AFMT_ENTRY("ALAC", "alac.codec", NULL, NULL ), + /* Advanced Audio Coding in M4A container */ + AFMT_ENTRY("AAC", "aac.codec", NULL, NULL ), + /* Shorten */ + AFMT_ENTRY("SHN", "shorten.codec", NULL, NULL ), + /* Audio Interchange File Format */ + AFMT_ENTRY("AIFF", "aiff.codec", NULL, NULL ), + /* SID File Format */ + AFMT_ENTRY("SID", "sid.codec", NULL, NULL ), #endif }; +#if CONFIG_CODEC == SWCODEC +/* recording quality to AFMT_* */ +const int rec_quality_info_afmt[9] = +{ + AFMT_MPA_L3, /* MPEG L3 64 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 96 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 128 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 160 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 192 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 224 kBit/s */ + AFMT_MPA_L3, /* MPEG L3 320 kBit/s */ + AFMT_WAVPACK, /* WavPack 909 kBit/s */ + AFMT_PCM_WAV, /* PCM Wav 1411 kBit/s */ +}; +#endif /* SWCODEC */ + char* id3_get_genre(const struct mp3entry* id3) { if( id3->genre_string ) @@ -119,8 +150,8 @@ char* id3_get_genre(const struct mp3entry* id3) char* id3_get_codec(const struct mp3entry* id3) { - if (id3->codectype < sizeof(codec_labels)/sizeof(char*)) { - return (char*)codec_labels[id3->codectype]; + if (id3->codectype < AFMT_NUM_CODECS) { + return (char*)audio_formats[id3->codectype].label; } else { return NULL; } -- cgit v1.2.3