summaryrefslogtreecommitdiff
path: root/firmware/id3.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/id3.c')
-rw-r--r--firmware/id3.c71
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
88static const char* const codec_labels[] = { 88/* database of audio formats */
89 "???", /* Unknown file format */ 89const 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_* */
127const 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
110char* id3_get_genre(const struct mp3entry* id3) 141char* 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
120char* id3_get_codec(const struct mp3entry* id3) 151char* 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 }