comparison src/sndfile/plugin.c @ 2552:7d7f7d9ae98e

Sanitize Tuple creation, remove useless usage of GString and string duplications.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 08 May 2008 22:01:01 +0300
parents 92300fe06f15
children b119d6f2e6c8
comparison
equal deleted inserted replaced
2551:92300fe06f15 2552:7d7f7d9ae98e
138 fill_song_tuple (gchar *filename, Tuple *ti) 138 fill_song_tuple (gchar *filename, Tuple *ti)
139 { 139 {
140 VFSFile *vfsfile = NULL; 140 VFSFile *vfsfile = NULL;
141 SNDFILE *tmp_sndfile; 141 SNDFILE *tmp_sndfile;
142 SF_INFO tmp_sfinfo; 142 SF_INFO tmp_sfinfo;
143 guint lossy = 0; 143 gboolean lossy = FALSE;
144 gchar *codec = NULL, *format, *subformat = NULL; 144 gchar *codec, *format, *subformat;
145 GString *codec_gs = NULL;
146 145
147 tmp_sndfile = open_sndfile_from_uri(filename, vfsfile, &tmp_sfinfo); 146 tmp_sndfile = open_sndfile_from_uri(filename, vfsfile, &tmp_sfinfo);
148 if ( sf_get_string(tmp_sndfile, SF_STR_TITLE) == NULL) 147 if ( sf_get_string(tmp_sndfile, SF_STR_TITLE) == NULL)
149 aud_tuple_associate_string(ti, FIELD_TITLE, NULL, g_path_get_basename(filename)); 148 aud_tuple_associate_string(ti, FIELD_TITLE, NULL, g_path_get_basename(filename));
150 else 149 else
157 156
158 if (!tmp_sndfile) 157 if (!tmp_sndfile)
159 return; 158 return;
160 159
161 close_sndfile (tmp_sndfile, vfsfile); 160 close_sndfile (tmp_sndfile, vfsfile);
162 tmp_sndfile = NULL;
163 161
164 if (tmp_sfinfo.samplerate > 0) 162 if (tmp_sfinfo.samplerate > 0)
165 aud_tuple_associate_int(ti, FIELD_LENGTH, NULL, (int) ceil (1000.0 * tmp_sfinfo.frames / tmp_sfinfo.samplerate)); 163 aud_tuple_associate_int(ti, FIELD_LENGTH, NULL, (gint) ceil (1000.0 * tmp_sfinfo.frames / tmp_sfinfo.samplerate));
166 164
167 switch (tmp_sfinfo.format & SF_FORMAT_TYPEMASK) 165 switch (tmp_sfinfo.format & SF_FORMAT_TYPEMASK)
168 { 166 {
169 case SF_FORMAT_WAV: 167 case SF_FORMAT_WAV:
170 case SF_FORMAT_WAVEX: 168 case SF_FORMAT_WAVEX:
253 case SF_FORMAT_DOUBLE: 251 case SF_FORMAT_DOUBLE:
254 subformat = "64 bit float"; 252 subformat = "64 bit float";
255 break; 253 break;
256 case SF_FORMAT_ULAW: 254 case SF_FORMAT_ULAW:
257 subformat = "U-Law"; 255 subformat = "U-Law";
258 lossy = 1; 256 lossy = TRUE;
259 break; 257 break;
260 case SF_FORMAT_ALAW: 258 case SF_FORMAT_ALAW:
261 subformat = "A-Law"; 259 subformat = "A-Law";
262 lossy = 1; 260 lossy = TRUE;
263 break; 261 break;
264 case SF_FORMAT_IMA_ADPCM: 262 case SF_FORMAT_IMA_ADPCM:
265 subformat = "IMA ADPCM"; 263 subformat = "IMA ADPCM";
266 lossy = 1; 264 lossy = TRUE;
267 break; 265 break;
268 case SF_FORMAT_MS_ADPCM: 266 case SF_FORMAT_MS_ADPCM:
269 subformat = "MS ADPCM"; 267 subformat = "MS ADPCM";
270 lossy = 1; 268 lossy = TRUE;
271 break; 269 break;
272 case SF_FORMAT_GSM610: 270 case SF_FORMAT_GSM610:
273 subformat = "GSM 6.10"; 271 subformat = "GSM 6.10";
274 lossy = 1; 272 lossy = TRUE;
275 break; 273 break;
276 case SF_FORMAT_VOX_ADPCM: 274 case SF_FORMAT_VOX_ADPCM:
277 subformat = "Oki Dialogic ADPCM"; 275 subformat = "Oki Dialogic ADPCM";
278 lossy = 1; 276 lossy = TRUE;
279 break; 277 break;
280 case SF_FORMAT_G721_32: 278 case SF_FORMAT_G721_32:
281 subformat = "32kbs G721 ADPCM"; 279 subformat = "32kbs G721 ADPCM";
282 lossy = 1; 280 lossy = TRUE;
283 break; 281 break;
284 case SF_FORMAT_G723_24: 282 case SF_FORMAT_G723_24:
285 subformat = "24kbs G723 ADPCM"; 283 subformat = "24kbs G723 ADPCM";
286 lossy = 1; 284 lossy = TRUE;
287 break; 285 break;
288 case SF_FORMAT_G723_40: 286 case SF_FORMAT_G723_40:
289 subformat = "40kbs G723 ADPCM"; 287 subformat = "40kbs G723 ADPCM";
290 lossy = 1; 288 lossy = TRUE;
291 break; 289 break;
292 case SF_FORMAT_DWVW_12: 290 case SF_FORMAT_DWVW_12:
293 subformat = "12 bit Delta Width Variable Word"; 291 subformat = "12 bit Delta Width Variable Word";
294 lossy = 1; 292 lossy = TRUE;
295 break; 293 break;
296 case SF_FORMAT_DWVW_16: 294 case SF_FORMAT_DWVW_16:
297 subformat = "16 bit Delta Width Variable Word"; 295 subformat = "16 bit Delta Width Variable Word";
298 lossy = 1; 296 lossy = TRUE;
299 break; 297 break;
300 case SF_FORMAT_DWVW_24: 298 case SF_FORMAT_DWVW_24:
301 subformat = "24 bit Delta Width Variable Word"; 299 subformat = "24 bit Delta Width Variable Word";
302 lossy = 1; 300 lossy = TRUE;
303 break; 301 break;
304 case SF_FORMAT_DWVW_N: 302 case SF_FORMAT_DWVW_N:
305 subformat = "N bit Delta Width Variable Word"; 303 subformat = "N bit Delta Width Variable Word";
306 lossy = 1; 304 lossy = TRUE;
307 break; 305 break;
308 case SF_FORMAT_DPCM_8: 306 case SF_FORMAT_DPCM_8:
309 subformat = "8 bit differential PCM"; 307 subformat = "8 bit differential PCM";
310 break; 308 break;
311 case SF_FORMAT_DPCM_16: 309 case SF_FORMAT_DPCM_16:
312 subformat = "16 bit differential PCM"; 310 subformat = "16 bit differential PCM";
313 } 311 break;
314 312 default:
315 codec_gs = g_string_new(""); 313 subformat = NULL;
314 }
315
316 if (subformat != NULL) 316 if (subformat != NULL)
317 g_string_append_printf(codec_gs, "%s (%s)", format, subformat); 317 codec = g_strdup_printf("%s (%s)", format, subformat);
318 else 318 else
319 g_string_append_printf(codec_gs, "%s", format); 319 codec = g_strdup_printf("%s", format);
320 codec = g_strdup(codec_gs->str);
321 g_string_free(codec_gs, TRUE);
322 aud_tuple_associate_string(ti, FIELD_CODEC, NULL, codec); 320 aud_tuple_associate_string(ti, FIELD_CODEC, NULL, codec);
323 321 g_free(codec);
324 if (lossy != 0) 322
325 aud_tuple_associate_string(ti, FIELD_QUALITY, NULL, "lossy"); 323 aud_tuple_associate_string(ti, FIELD_QUALITY, NULL, lossy ? "lossy" : "lossless");
326 else
327 aud_tuple_associate_string(ti, FIELD_QUALITY, NULL, "lossless");
328 } 324 }
329 325
330 static gchar * 326 static gchar *
331 get_title(gchar *filename) 327 get_title(gchar *filename)
332 { 328 {