diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2006-08-28 22:38:41 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2006-08-28 22:38:41 +0000 |
commit | 4fc717a4c19a1fe0349977d7b9c86561c5a5cf2d (patch) | |
tree | eb6113c7491072f7b5136e24775737764e2cdede /firmware/id3.c | |
parent | 65c2c58b3aa26164bd919665e4d710efa2fa7c79 (diff) | |
download | rockbox-4fc717a4c19a1fe0349977d7b9c86561c5a5cf2d.tar.gz rockbox-4fc717a4c19a1fe0349977d7b9c86561c5a5cf2d.zip |
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
Diffstat (limited to 'firmware/id3.c')
-rw-r--r-- | firmware/id3.c | 71 |
1 files changed, 51 insertions, 20 deletions
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[] = { | |||
85 | "Synthpop" | 85 | "Synthpop" |
86 | }; | 86 | }; |
87 | 87 | ||
88 | static const char* const codec_labels[] = { | 88 | /* database of audio formats */ |
89 | "???", /* Unknown file format */ | 89 | const struct afmt_entry audio_formats[AFMT_NUM_CODECS] = |
90 | 90 | { | |
91 | "MP1", /* MPEG Audio layer 1 */ | 91 | /* Unknown file format */ |
92 | "MP2", /* MPEG Audio layer 2 */ | 92 | AFMT_ENTRY("???", NULL, NULL, NULL ), |
93 | "MP3", /* MPEG Audio layer 3 */ | 93 | /* MPEG Audio layer 1 */ |
94 | 94 | AFMT_ENTRY("MP1", "mpa.codec", NULL, NULL ), | |
95 | /* MPEG Audio layer 2 */ | ||
96 | AFMT_ENTRY("MP2", "mpa.codec", NULL, NULL ), | ||
97 | /* MPEG Audio layer 3 */ | ||
98 | AFMT_ENTRY("MP3", "mpa.codec", "mp3_enc.codec", ".mp3"), | ||
95 | #if CONFIG_CODEC == SWCODEC | 99 | #if CONFIG_CODEC == SWCODEC |
96 | "WAV", /* Uncompressed PCM in a WAV file */ | 100 | /* Uncompressed PCM in a WAV file */ |
97 | "Ogg", /* Ogg Vorbis */ | 101 | AFMT_ENTRY("WAV", "wav.codec", "wav_enc.codec", ".wav"), |
98 | "FLAC", /* FLAC */ | 102 | /* Ogg Vorbis */ |
99 | "MPC", /* Musepack */ | 103 | AFMT_ENTRY("Ogg", "vorbis.codec", NULL, NULL ), |
100 | "AC3", /* A/52 (aka AC3) audio */ | 104 | /* FLAC */ |
101 | "WV", /* WavPack */ | 105 | AFMT_ENTRY("FLAC", "flac.codec", NULL, NULL ), |
102 | "ALAC", /* Apple Lossless Audio Codec */ | 106 | /* Musepack */ |
103 | "AAC", /* Advanced Audio Coding in M4A container */ | 107 | AFMT_ENTRY("MPC", "mpc.codec", NULL, NULL ), |
104 | "SHN", /* Shorten */ | 108 | /* A/52 (aka AC3) audio */ |
105 | "AIFF", /* Audio Interchange File Format */ | 109 | AFMT_ENTRY("AC3", "a52.codec", NULL, NULL ), |
106 | "SID", /* SID File Format */ | 110 | /* WavPack */ |
111 | AFMT_ENTRY("WV", "wavpack.codec", "wavpack_enc.codec", ".wv" ), | ||
112 | /* Apple Lossless Audio Codec */ | ||
113 | AFMT_ENTRY("ALAC", "alac.codec", NULL, NULL ), | ||
114 | /* Advanced Audio Coding in M4A container */ | ||
115 | AFMT_ENTRY("AAC", "aac.codec", NULL, NULL ), | ||
116 | /* Shorten */ | ||
117 | AFMT_ENTRY("SHN", "shorten.codec", NULL, NULL ), | ||
118 | /* Audio Interchange File Format */ | ||
119 | AFMT_ENTRY("AIFF", "aiff.codec", NULL, NULL ), | ||
120 | /* SID File Format */ | ||
121 | AFMT_ENTRY("SID", "sid.codec", NULL, NULL ), | ||
107 | #endif | 122 | #endif |
108 | }; | 123 | }; |
109 | 124 | ||
125 | #if CONFIG_CODEC == SWCODEC | ||
126 | /* recording quality to AFMT_* */ | ||
127 | const int rec_quality_info_afmt[9] = | ||
128 | { | ||
129 | AFMT_MPA_L3, /* MPEG L3 64 kBit/s */ | ||
130 | AFMT_MPA_L3, /* MPEG L3 96 kBit/s */ | ||
131 | AFMT_MPA_L3, /* MPEG L3 128 kBit/s */ | ||
132 | AFMT_MPA_L3, /* MPEG L3 160 kBit/s */ | ||
133 | AFMT_MPA_L3, /* MPEG L3 192 kBit/s */ | ||
134 | AFMT_MPA_L3, /* MPEG L3 224 kBit/s */ | ||
135 | AFMT_MPA_L3, /* MPEG L3 320 kBit/s */ | ||
136 | AFMT_WAVPACK, /* WavPack 909 kBit/s */ | ||
137 | AFMT_PCM_WAV, /* PCM Wav 1411 kBit/s */ | ||
138 | }; | ||
139 | #endif /* SWCODEC */ | ||
140 | |||
110 | char* id3_get_genre(const struct mp3entry* id3) | 141 | char* id3_get_genre(const struct mp3entry* id3) |
111 | { | 142 | { |
112 | if( id3->genre_string ) | 143 | if( id3->genre_string ) |
@@ -119,8 +150,8 @@ char* id3_get_genre(const struct mp3entry* id3) | |||
119 | 150 | ||
120 | char* id3_get_codec(const struct mp3entry* id3) | 151 | char* id3_get_codec(const struct mp3entry* id3) |
121 | { | 152 | { |
122 | if (id3->codectype < sizeof(codec_labels)/sizeof(char*)) { | 153 | if (id3->codectype < AFMT_NUM_CODECS) { |
123 | return (char*)codec_labels[id3->codectype]; | 154 | return (char*)audio_formats[id3->codectype].label; |
124 | } else { | 155 | } else { |
125 | return NULL; | 156 | return NULL; |
126 | } | 157 | } |