diff options
author | William Wilgus <wilgus.william@gmail.com> | 2022-11-21 22:46:19 -0500 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2022-11-21 23:52:59 -0400 |
commit | efdc6feddbb52a8e274abc8b2c682199590b0c54 (patch) | |
tree | 51a44dfd4f0a18017187c03b3e8756d06b3f677b | |
parent | 2056878e46321b5d22b814a535c0cc4a5184f5b9 (diff) | |
download | rockbox-efdc6feddbb52a8e274abc8b2c682199590b0c54.tar.gz rockbox-efdc6feddbb52a8e274abc8b2c682199590b0c54.zip |
move inbuilt_filetypes.voiceclip to a separate struct
there are a lot of duplicated voiceclips in the inbuilt_filetypes struct
its already looked up so deduplicate
Change-Id: I7846277d2da308f605d5564e9081d6077e697239
-rw-r--r-- | apps/filetypes.c | 225 | ||||
-rw-r--r-- | apps/filetypes.h | 5 | ||||
-rw-r--r-- | apps/tree.c | 20 |
3 files changed, 146 insertions, 104 deletions
diff --git a/apps/filetypes.c b/apps/filetypes.c index da3fdd0283..12b4fe3dc6 100644 --- a/apps/filetypes.c +++ b/apps/filetypes.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "splash.h" | 38 | #include "splash.h" |
39 | #include "core_alloc.h" | 39 | #include "core_alloc.h" |
40 | #include "icons.h" | 40 | #include "icons.h" |
41 | /*#define LOGF_ENABLE*/ | ||
41 | #include "logf.h" | 42 | #include "logf.h" |
42 | 43 | ||
43 | /* max filetypes (plugins & icons stored here) */ | 44 | /* max filetypes (plugins & icons stored here) */ |
@@ -47,103 +48,136 @@ | |||
47 | 48 | ||
48 | /* a table for the known file types */ | 49 | /* a table for the known file types */ |
49 | static const struct filetype inbuilt_filetypes[] = { | 50 | static const struct filetype inbuilt_filetypes[] = { |
50 | { "mp3", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 51 | { "mp3", FILE_ATTR_AUDIO }, |
51 | { "mp2", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 52 | { "mp2", FILE_ATTR_AUDIO }, |
52 | { "mpa", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 53 | { "mpa", FILE_ATTR_AUDIO }, |
53 | { "mp1", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 54 | { "mp1", FILE_ATTR_AUDIO }, |
54 | { "ogg", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 55 | { "ogg", FILE_ATTR_AUDIO }, |
55 | { "oga", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 56 | { "oga", FILE_ATTR_AUDIO }, |
56 | { "wma", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 57 | { "wma", FILE_ATTR_AUDIO }, |
57 | { "wmv", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 58 | { "wmv", FILE_ATTR_AUDIO }, |
58 | { "asf", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 59 | { "asf", FILE_ATTR_AUDIO }, |
59 | { "wav", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 60 | { "wav", FILE_ATTR_AUDIO }, |
60 | { "flac", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 61 | { "flac", FILE_ATTR_AUDIO }, |
61 | { "ac3", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 62 | { "ac3", FILE_ATTR_AUDIO }, |
62 | { "a52", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 63 | { "a52", FILE_ATTR_AUDIO }, |
63 | { "mpc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 64 | { "mpc", FILE_ATTR_AUDIO }, |
64 | { "wv", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 65 | { "wv", FILE_ATTR_AUDIO }, |
65 | { "m4a", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 66 | { "m4a", FILE_ATTR_AUDIO }, |
66 | { "m4b", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 67 | { "m4b", FILE_ATTR_AUDIO }, |
67 | { "mp4", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 68 | { "mp4", FILE_ATTR_AUDIO }, |
68 | { "mod", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 69 | { "mod", FILE_ATTR_AUDIO }, |
69 | { "mpga", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 70 | { "mpga", FILE_ATTR_AUDIO }, |
70 | { "shn", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 71 | { "shn", FILE_ATTR_AUDIO }, |
71 | { "aif", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 72 | { "aif", FILE_ATTR_AUDIO }, |
72 | { "aiff", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 73 | { "aiff", FILE_ATTR_AUDIO }, |
73 | { "spx" , FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 74 | { "spx" , FILE_ATTR_AUDIO }, |
74 | { "opus", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 75 | { "opus", FILE_ATTR_AUDIO }, |
75 | { "sid", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 76 | { "sid", FILE_ATTR_AUDIO }, |
76 | { "adx", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 77 | { "adx", FILE_ATTR_AUDIO }, |
77 | { "nsf", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 78 | { "nsf", FILE_ATTR_AUDIO }, |
78 | { "nsfe", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 79 | { "nsfe", FILE_ATTR_AUDIO }, |
79 | { "spc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 80 | { "spc", FILE_ATTR_AUDIO }, |
80 | { "ape", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 81 | { "ape", FILE_ATTR_AUDIO }, |
81 | { "mac", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 82 | { "mac", FILE_ATTR_AUDIO }, |
82 | { "sap" , FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 83 | { "sap" , FILE_ATTR_AUDIO }, |
83 | { "rm", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 84 | { "rm", FILE_ATTR_AUDIO }, |
84 | { "ra", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 85 | { "ra", FILE_ATTR_AUDIO }, |
85 | { "rmvb", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 86 | { "rmvb", FILE_ATTR_AUDIO }, |
86 | { "cmc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 87 | { "cmc", FILE_ATTR_AUDIO }, |
87 | { "cm3", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 88 | { "cm3", FILE_ATTR_AUDIO }, |
88 | { "cmr", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 89 | { "cmr", FILE_ATTR_AUDIO }, |
89 | { "cms", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 90 | { "cms", FILE_ATTR_AUDIO }, |
90 | { "dmc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 91 | { "dmc", FILE_ATTR_AUDIO }, |
91 | { "dlt", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 92 | { "dlt", FILE_ATTR_AUDIO }, |
92 | { "mpt", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 93 | { "mpt", FILE_ATTR_AUDIO }, |
93 | { "mpd", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 94 | { "mpd", FILE_ATTR_AUDIO }, |
94 | { "rmt", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 95 | { "rmt", FILE_ATTR_AUDIO }, |
95 | { "tmc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 96 | { "tmc", FILE_ATTR_AUDIO }, |
96 | { "tm8", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 97 | { "tm8", FILE_ATTR_AUDIO }, |
97 | { "tm2", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 98 | { "tm2", FILE_ATTR_AUDIO }, |
98 | { "oma", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 99 | { "oma", FILE_ATTR_AUDIO }, |
99 | { "aa3", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 100 | { "aa3", FILE_ATTR_AUDIO }, |
100 | { "at3", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 101 | { "at3", FILE_ATTR_AUDIO }, |
101 | { "mmf", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 102 | { "mmf", FILE_ATTR_AUDIO }, |
102 | { "au", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 103 | { "au", FILE_ATTR_AUDIO }, |
103 | { "snd", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 104 | { "snd", FILE_ATTR_AUDIO }, |
104 | { "vox", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 105 | { "vox", FILE_ATTR_AUDIO }, |
105 | { "w64", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 106 | { "w64", FILE_ATTR_AUDIO }, |
106 | { "tta", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 107 | { "tta", FILE_ATTR_AUDIO }, |
107 | { "ay", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 108 | { "ay", FILE_ATTR_AUDIO }, |
108 | { "vtx", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 109 | { "vtx", FILE_ATTR_AUDIO }, |
109 | { "gbs", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 110 | { "gbs", FILE_ATTR_AUDIO }, |
110 | { "hes", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 111 | { "hes", FILE_ATTR_AUDIO }, |
111 | { "sgc", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 112 | { "sgc", FILE_ATTR_AUDIO }, |
112 | { "vgm", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 113 | { "vgm", FILE_ATTR_AUDIO }, |
113 | { "vgz", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 114 | { "vgz", FILE_ATTR_AUDIO }, |
114 | { "kss", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 115 | { "kss", FILE_ATTR_AUDIO }, |
115 | { "aac", FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | 116 | { "aac", FILE_ATTR_AUDIO }, |
116 | { "m3u", FILE_ATTR_M3U, LANG_PLAYLIST }, | 117 | { "m3u", FILE_ATTR_M3U }, |
117 | { "m3u8", FILE_ATTR_M3U, LANG_PLAYLIST }, | 118 | { "m3u8", FILE_ATTR_M3U }, |
118 | { "cfg", FILE_ATTR_CFG, VOICE_EXT_CFG }, | 119 | { "cfg", FILE_ATTR_CFG }, |
119 | { "wps", FILE_ATTR_WPS, VOICE_EXT_WPS }, | 120 | { "wps", FILE_ATTR_WPS }, |
120 | #ifdef HAVE_REMOTE_LCD | 121 | #ifdef HAVE_REMOTE_LCD |
121 | { "rwps", FILE_ATTR_RWPS, VOICE_EXT_RWPS }, | 122 | { "rwps", FILE_ATTR_RWPS }, |
122 | #endif | 123 | #endif |
123 | #if CONFIG_TUNER | 124 | #if CONFIG_TUNER |
124 | { "fmr", FILE_ATTR_FMR, LANG_FMR }, | 125 | { "fmr", FILE_ATTR_FMR }, |
125 | { "fms", FILE_ATTR_FMS, VOICE_EXT_FMS }, | 126 | { "fms", FILE_ATTR_FMS }, |
126 | #endif | 127 | #endif |
127 | { "lng", FILE_ATTR_LNG, LANG_LANGUAGE }, | 128 | { "lng", FILE_ATTR_LNG }, |
128 | { "rock", FILE_ATTR_ROCK, VOICE_EXT_ROCK }, | 129 | { "rock", FILE_ATTR_ROCK }, |
129 | { "lua", FILE_ATTR_LUA, VOICE_EXT_ROCK }, | 130 | { "lua", FILE_ATTR_LUA }, |
130 | { "opx", FILE_ATTR_OPX, VOICE_EXT_ROCK }, | 131 | { "opx", FILE_ATTR_OPX }, |
131 | { "fnt", FILE_ATTR_FONT, VOICE_EXT_FONT }, | 132 | { "fnt", FILE_ATTR_FONT }, |
132 | { "kbd", FILE_ATTR_KBD, VOICE_EXT_KBD }, | 133 | { "kbd", FILE_ATTR_KBD }, |
133 | { "bmark",FILE_ATTR_BMARK, VOICE_EXT_BMARK }, | 134 | { "bmark",FILE_ATTR_BMARK }, |
134 | { "cue", FILE_ATTR_CUE, VOICE_EXT_CUESHEET }, | 135 | { "cue", FILE_ATTR_CUE }, |
135 | { "sbs", FILE_ATTR_SBS, VOICE_EXT_SBS }, | 136 | { "sbs", FILE_ATTR_SBS }, |
136 | #ifdef HAVE_REMOTE_LCD | 137 | #ifdef HAVE_REMOTE_LCD |
137 | { "rsbs", FILE_ATTR_RSBS, VOICE_EXT_RSBS }, | 138 | { "rsbs", FILE_ATTR_RSBS }, |
138 | #if CONFIG_TUNER | 139 | #if CONFIG_TUNER |
139 | { "rfms", FILE_ATTR_RFMS, VOICE_EXT_RFMS }, | 140 | { "rfms", FILE_ATTR_RFMS }, |
140 | #endif | 141 | #endif |
141 | #endif | 142 | #endif |
142 | #ifdef BOOTFILE_EXT | 143 | #ifdef BOOTFILE_EXT |
143 | { BOOTFILE_EXT, FILE_ATTR_MOD, VOICE_EXT_AJZ }, | 144 | { BOOTFILE_EXT, FILE_ATTR_MOD }, |
144 | #endif | 145 | #endif |
145 | #ifdef BOOTFILE_EXT2 | 146 | #ifdef BOOTFILE_EXT2 |
146 | { BOOTFILE_EXT2, FILE_ATTR_MOD, VOICE_EXT_AJZ }, | 147 | { BOOTFILE_EXT2, FILE_ATTR_MOD }, |
148 | #endif | ||
149 | }; | ||
150 | |||
151 | /* a table for the known file types voice clips */ | ||
152 | static const struct fileattr_voice inbuilt_attrvoices[] = { | ||
153 | { FILE_ATTR_AUDIO, VOICE_EXT_MPA }, | ||
154 | { FILE_ATTR_M3U, LANG_PLAYLIST }, | ||
155 | { FILE_ATTR_CFG, VOICE_EXT_CFG }, | ||
156 | { FILE_ATTR_WPS, VOICE_EXT_WPS }, | ||
157 | #ifdef HAVE_REMOTE_LCD | ||
158 | { FILE_ATTR_RWPS, VOICE_EXT_RWPS }, | ||
159 | #endif | ||
160 | #if CONFIG_TUNER | ||
161 | { FILE_ATTR_FMR, LANG_FMR }, | ||
162 | { FILE_ATTR_FMS, VOICE_EXT_FMS }, | ||
163 | #endif | ||
164 | { FILE_ATTR_LNG, LANG_LANGUAGE }, | ||
165 | { FILE_ATTR_ROCK, VOICE_EXT_ROCK }, | ||
166 | { FILE_ATTR_LUA, VOICE_EXT_ROCK }, | ||
167 | { FILE_ATTR_OPX, VOICE_EXT_ROCK }, | ||
168 | { FILE_ATTR_FONT, VOICE_EXT_FONT }, | ||
169 | { FILE_ATTR_KBD, VOICE_EXT_KBD }, | ||
170 | { FILE_ATTR_BMARK, VOICE_EXT_BMARK }, | ||
171 | { FILE_ATTR_CUE, VOICE_EXT_CUESHEET }, | ||
172 | { FILE_ATTR_SBS, VOICE_EXT_SBS }, | ||
173 | #ifdef HAVE_REMOTE_LCD | ||
174 | { FILE_ATTR_RSBS, VOICE_EXT_RSBS }, | ||
175 | #if CONFIG_TUNER | ||
176 | { FILE_ATTR_RFMS, VOICE_EXT_RFMS }, | ||
177 | #endif | ||
178 | #endif | ||
179 | #if defined(BOOTFILE_EXT) || defined(BOOTFILE_EXT2) | ||
180 | { FILE_ATTR_MOD, VOICE_EXT_AJZ }, | ||
147 | #endif | 181 | #endif |
148 | }; | 182 | }; |
149 | 183 | ||
@@ -191,6 +225,25 @@ void tree_get_filetypes(const struct filetype** types, int* count) | |||
191 | *count = sizeof(inbuilt_filetypes) / sizeof(*inbuilt_filetypes); | 225 | *count = sizeof(inbuilt_filetypes) / sizeof(*inbuilt_filetypes); |
192 | } | 226 | } |
193 | 227 | ||
228 | long tree_filetype_voiceclip(int attr) | ||
229 | { | ||
230 | logf("%s attr %d", __func__, attr); | ||
231 | int j; | ||
232 | if (global_settings.talk_filetype) | ||
233 | { | ||
234 | int count = sizeof(inbuilt_attrvoices)/sizeof(*inbuilt_attrvoices); | ||
235 | /* try to find a voice ID for the extension, if known */ | ||
236 | //attr &= FILE_ATTR_MASK; /* file type */ | ||
237 | for (j=0; j<count; j++) | ||
238 | if (attr == inbuilt_attrvoices[j].tree_attr) | ||
239 | { | ||
240 | logf("%s attr %d id %d", __func__, attr, inbuilt_attrvoices[j].voiceclip); | ||
241 | return inbuilt_attrvoices[j].voiceclip; | ||
242 | } | ||
243 | } | ||
244 | return -1; | ||
245 | } | ||
246 | |||
194 | #define ROCK_EXTENSION "rock" | 247 | #define ROCK_EXTENSION "rock" |
195 | 248 | ||
196 | struct file_type { | 249 | struct file_type { |
diff --git a/apps/filetypes.h b/apps/filetypes.h index 767a26fc1f..fc1022a014 100644 --- a/apps/filetypes.h +++ b/apps/filetypes.h | |||
@@ -53,10 +53,15 @@ | |||
53 | struct filetype { | 53 | struct filetype { |
54 | char* extension; | 54 | char* extension; |
55 | int tree_attr; | 55 | int tree_attr; |
56 | }; | ||
57 | |||
58 | struct fileattr_voice { | ||
59 | int tree_attr; | ||
56 | int voiceclip; | 60 | int voiceclip; |
57 | }; | 61 | }; |
58 | 62 | ||
59 | void tree_get_filetypes(const struct filetype**, int*) INIT_ATTR; | 63 | void tree_get_filetypes(const struct filetype**, int*) INIT_ATTR; |
64 | long tree_filetype_voiceclip(int attr) INIT_ATTR; | ||
60 | 65 | ||
61 | /* init the filetypes structs. | 66 | /* init the filetypes structs. |
62 | uses audio buffer for storage, so call early in init... */ | 67 | uses audio buffer for storage, so call early in init... */ |
diff --git a/apps/tree.c b/apps/tree.c index e8655cd0d0..d945b721b4 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -1179,25 +1179,9 @@ bool bookmark_play(char *resume_file, int index, unsigned long elapsed, | |||
1179 | return started; | 1179 | return started; |
1180 | } | 1180 | } |
1181 | 1181 | ||
1182 | static long filetype_voiceclip(int attr) | ||
1183 | { | ||
1184 | int j; | ||
1185 | if (global_settings.talk_filetype) | ||
1186 | { | ||
1187 | /* try to find a voice ID for the extension, if known */ | ||
1188 | attr &= FILE_ATTR_MASK; /* file type */ | ||
1189 | for (j=0; j<filetypes_count; j++) | ||
1190 | if (attr == filetypes[j].tree_attr) | ||
1191 | { | ||
1192 | return filetypes[j].voiceclip; | ||
1193 | } | ||
1194 | } | ||
1195 | return -1; | ||
1196 | } | ||
1197 | |||
1198 | static void say_filetype(int attr) | 1182 | static void say_filetype(int attr) |
1199 | { | 1183 | { |
1200 | talk_id(filetype_voiceclip(attr), true); | 1184 | talk_id(tree_filetype_voiceclip(attr), true); |
1201 | } | 1185 | } |
1202 | 1186 | ||
1203 | static int ft_play_dirname(char* name) | 1187 | static int ft_play_dirname(char* name) |
@@ -1215,7 +1199,7 @@ static int ft_play_filename(char *dir, char *file, int attr) | |||
1215 | file_thumbnail_ext)) | 1199 | file_thumbnail_ext)) |
1216 | /* file has no .talk extension */ | 1200 | /* file has no .talk extension */ |
1217 | return talk_file(dir, NULL, file, file_thumbnail_ext, | 1201 | return talk_file(dir, NULL, file, file_thumbnail_ext, |
1218 | TALK_IDARRAY(filetype_voiceclip(attr)), false); | 1202 | TALK_IDARRAY(tree_filetype_voiceclip(attr)), false); |
1219 | 1203 | ||
1220 | /* it already is a .talk file, play this directly, but prefix it. */ | 1204 | /* it already is a .talk file, play this directly, but prefix it. */ |
1221 | return talk_file(dir, NULL, file, NULL, | 1205 | return talk_file(dir, NULL, file, NULL, |