Mercurial > audlegacy-plugins
comparison src/cue/cuesheet.c @ 1737:b729c7a72c20
- remove get_song_info interface.
- remove dependency to real_ip's get_song_info.
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Wed, 19 Sep 2007 18:00:10 +0900 |
parents | 81ae3fcc9673 |
children | cf97a7767faa |
comparison
equal
deleted
inserted
replaced
1736:35f8a5fbd1b6 | 1737:b729c7a72c20 |
---|---|
45 static void seek(InputPlayback *data, gint time); | 45 static void seek(InputPlayback *data, gint time); |
46 static void stop(InputPlayback *data); | 46 static void stop(InputPlayback *data); |
47 static void cue_pause(InputPlayback *data, short); | 47 static void cue_pause(InputPlayback *data, short); |
48 static Tuple *get_tuple(gchar *uri); | 48 static Tuple *get_tuple(gchar *uri); |
49 static Tuple *get_tuple_uri(gchar *uri); | 49 static Tuple *get_tuple_uri(gchar *uri); |
50 static void get_song_info(gchar *uri, gchar **title, gint *length); | |
51 static void cue_init(void); | 50 static void cue_init(void); |
52 static void cue_cleanup(void); | 51 static void cue_cleanup(void); |
53 static gpointer watchdog_func(gpointer data); | 52 static gpointer watchdog_func(gpointer data); |
54 | 53 |
55 static GThread *watchdog_thread = NULL; | 54 static GThread *watchdog_thread = NULL; |
100 .stop = stop, | 99 .stop = stop, |
101 .pause = cue_pause, | 100 .pause = cue_pause, |
102 .seek = seek, | 101 .seek = seek, |
103 .get_time = get_time, | 102 .get_time = get_time, |
104 .cleanup = cue_cleanup, /* cleanup */ | 103 .cleanup = cue_cleanup, /* cleanup */ |
105 .get_song_info = get_song_info, /* XXX get_song_info iface */ | |
106 .get_song_tuple = get_tuple, | 104 .get_song_tuple = get_tuple, |
107 }; | 105 }; |
108 | 106 |
109 InputPlugin *cue_iplist[] = { &cue_ip, NULL }; | 107 InputPlugin *cue_iplist[] = { &cue_ip, NULL }; |
110 | 108 |
296 tuple_associate_int(out, FIELD_TRACK_NUMBER, NULL, track + 1); | 294 tuple_associate_int(out, FIELD_TRACK_NUMBER, NULL, track + 1); |
297 | 295 |
298 return out; | 296 return out; |
299 } | 297 } |
300 | 298 |
301 static void get_song_info(gchar *uri, gchar **title, gint *length) | |
302 { | |
303 Tuple *tuple; | |
304 | |
305 /* this isn't a cue:// uri? */ | |
306 if (strncasecmp("cue://", uri, 6)) | |
307 { | |
308 gchar *tmp = g_strdup_printf("cue://%s?0", uri); | |
309 tuple = get_tuple_uri(tmp); | |
310 g_free(tmp); | |
311 } | |
312 else | |
313 tuple = get_tuple_uri(uri); | |
314 | |
315 g_return_if_fail(tuple != NULL); | |
316 | |
317 *title = tuple_formatter_make_title_string(tuple, get_gentitle_format()); | |
318 *length = tuple_get_int(tuple, FIELD_LENGTH, NULL); | |
319 | |
320 tuple_free(tuple); | |
321 } | |
322 | |
323 static void seek(InputPlayback * data, gint time) | 299 static void seek(InputPlayback * data, gint time) |
324 { | 300 { |
325 g_mutex_lock(cue_target_time_mutex); | 301 g_mutex_lock(cue_target_time_mutex); |
326 target_time = time * 1000; | 302 target_time = time * 1000; |
327 g_mutex_unlock(cue_target_time_mutex); | 303 g_mutex_unlock(cue_target_time_mutex); |
456 | 432 |
457 static void play_cue_uri(InputPlayback * data, gchar *uri) | 433 static void play_cue_uri(InputPlayback * data, gchar *uri) |
458 { | 434 { |
459 gchar *path2 = g_strdup(uri + 6); // "cue://" is stripped. | 435 gchar *path2 = g_strdup(uri + 6); // "cue://" is stripped. |
460 gchar *_path = strchr(path2, '?'); | 436 gchar *_path = strchr(path2, '?'); |
461 gint file_length = 0; | |
462 gint track = 0; | 437 gint track = 0; |
463 gchar *dummy = NULL; | |
464 ProbeResult *pr; | 438 ProbeResult *pr; |
465 InputPlugin *real_ip_plugin; | 439 InputPlugin *real_ip_plugin; |
440 Tuple *tuple = NULL; | |
466 | 441 |
467 #ifdef DEBUG | 442 #ifdef DEBUG |
468 g_print("f: play_cue_uri\n"); | 443 g_print("f: play_cue_uri\n"); |
469 g_print("play_cue_uri: playback = %p\n", data); | 444 g_print("play_cue_uri: playback = %p\n", data); |
470 g_print("play_cue_uri: path2 = %s\n", path2); | 445 g_print("play_cue_uri: path2 = %s\n", path2); |
530 target_time = finetune_seek ? finetune_seek : cue_tracks[track].index; | 505 target_time = finetune_seek ? finetune_seek : cue_tracks[track].index; |
531 g_mutex_unlock(cue_target_time_mutex); | 506 g_mutex_unlock(cue_target_time_mutex); |
532 #ifdef DEBUG | 507 #ifdef DEBUG |
533 g_print("cue: play_cue_uri: target_time = %d\n", target_time); | 508 g_print("cue: play_cue_uri: target_time = %d\n", target_time); |
534 #endif | 509 #endif |
535 /* in some plugins, NULL as 2nd arg causes crash. */ | 510 |
536 real_ip->plugin->get_song_info(cue_file, &dummy, &file_length); | 511 tuple = real_ip->plugin->get_song_tuple(cue_file); |
537 g_free(dummy); | 512 if(tuple) { |
538 cue_tracks[last_cue_track].index = file_length; | 513 cue_tracks[last_cue_track].index = tuple_get_int(tuple, FIELD_LENGTH, NULL); |
514 tuple_free(tuple); tuple = NULL; | |
515 } | |
539 | 516 |
540 /* kick watchdog thread */ | 517 /* kick watchdog thread */ |
541 g_mutex_lock(cue_mutex); | 518 g_mutex_lock(cue_mutex); |
542 watchdog_state = RUN; | 519 watchdog_state = RUN; |
543 g_mutex_unlock(cue_mutex); | 520 g_mutex_unlock(cue_mutex); |