comparison src/cdaudio-ng/cdaudio-ng.c @ 1341:4ca99d2be90e

Titles are now built using tuples, with the preferred format
author Calin Crisan ccrisan@gmail.com
date Tue, 24 Jul 2007 00:48:58 +0300
parents 7bb2692b3be9
children ab387ad5b88e
comparison
equal deleted inserted replaced
1340:7bb2692b3be9 1341:4ca99d2be90e
64 static gint cdaudio_set_volume(gint l, gint r); 64 static gint cdaudio_set_volume(gint l, gint r);
65 static void cdaudio_cleanup(); 65 static void cdaudio_cleanup();
66 static void cdaudio_get_song_info(gchar *filename, gchar **title, gint *length); 66 static void cdaudio_get_song_info(gchar *filename, gchar **title, gint *length);
67 static TitleInput *cdaudio_get_song_tuple(gchar *filename); 67 static TitleInput *cdaudio_get_song_tuple(gchar *filename);
68 68
69 static TitleInput *create_tuple_from_trackinfo(char *filename);
69 static void *dae_playing_thread_core(dae_params_t *pdae_params); 70 static void *dae_playing_thread_core(dae_params_t *pdae_params);
70 static int calculate_track_length(int startlsn, int endlsn); 71 static int calculate_track_length(int startlsn, int endlsn);
71 static int find_trackno_from_filename(char *filename); 72 static int find_trackno_from_filename(char *filename);
72 static void cleanup_on_error(); 73 static void cleanup_on_error();
73 74
497 cleanup_on_error(); 498 cleanup_on_error();
498 return; 499 return;
499 } 500 }
500 } 501 }
501 502
502 char title[DEF_STRING_LEN]; 503 char *title = xmms_get_titlestring(xmms_get_gentitle_format(), create_tuple_from_trackinfo(pinputplayback->filename));
503
504 if (strlen(trackinfo[trackno].performer) > 0) {
505 strcpy(title, trackinfo[trackno].performer);
506 strcat(title, " - ");
507 }
508 else
509 strcpy(title, "");
510 strcat(title, trackinfo[trackno].name);
511 504
512 inputplugin.set_info(title, calculate_track_length(trackinfo[trackno].startlsn, trackinfo[trackno].endlsn), 128000, 44100, 2); 505 inputplugin.set_info(title, calculate_track_length(trackinfo[trackno].startlsn, trackinfo[trackno].endlsn), 128000, 44100, 2);
506 free(title);
513 } 507 }
514 508
515 void cdaudio_stop(InputPlayback *pinputplayback) 509 void cdaudio_stop(InputPlayback *pinputplayback)
516 { 510 {
517 if (debug) 511 if (debug)
707 { 701 {
708 if (debug) 702 if (debug)
709 printf("cdaudio-ng: cdaudio_get_song_info(\"%s\")\n", filename); 703 printf("cdaudio-ng: cdaudio_get_song_info(\"%s\")\n", filename);
710 704
711 int trackno = find_trackno_from_filename(filename); 705 int trackno = find_trackno_from_filename(filename);
712 char *thetitle = (char *) malloc(DEF_STRING_LEN); 706
713 707 *title = xmms_get_titlestring(xmms_get_gentitle_format(), create_tuple_from_trackinfo(filename));
714 if (strlen(trackinfo[trackno].performer) > 0) {
715 strcpy(thetitle, trackinfo[trackno].performer);
716 strcat(thetitle, " - ");
717 }
718 else
719 strcpy(thetitle, "");
720 strcat(thetitle, trackinfo[trackno].name);
721
722 *title = thetitle;
723 *length = calculate_track_length(trackinfo[trackno].startlsn, trackinfo[trackno].endlsn); 708 *length = calculate_track_length(trackinfo[trackno].startlsn, trackinfo[trackno].endlsn);
724 } 709 }
725 710
726 TitleInput *cdaudio_get_song_tuple(gchar *filename) 711 TitleInput *cdaudio_get_song_tuple(gchar *filename)
727 { 712 {
728 if (debug) 713 if (debug)
729 printf("cdaudio-ng: cdaudio_get_song_tuple(\"%s\")\n", filename); 714 printf("cdaudio-ng: cdaudio_get_song_tuple(\"%s\")\n", filename);
730 715
716 return create_tuple_from_trackinfo(filename);
717 }
718
719
720 /* auxiliar functions */
721
722 TitleInput *create_tuple_from_trackinfo(char *filename)
723 {
731 TitleInput *tuple = bmp_title_input_new(); 724 TitleInput *tuple = bmp_title_input_new();
732
733 /* return information about the requested track */
734 int trackno = find_trackno_from_filename(filename); 725 int trackno = find_trackno_from_filename(filename);
726
735 if (trackno < firsttrackno || trackno > lasttrackno) 727 if (trackno < firsttrackno || trackno > lasttrackno)
736 return NULL; 728 return NULL;
737 729
738 tuple->performer = strlen(trackinfo[trackno].performer) > 0 ? g_strdup(trackinfo[trackno].performer) : NULL; 730 tuple->performer = strlen(trackinfo[trackno].performer) > 0 ? g_strdup(trackinfo[trackno].performer) : NULL;
739 tuple->album_name = strlen(trackinfo[0].name) > 0 ? g_strdup(trackinfo[0].name) : NULL; 731 tuple->album_name = strlen(trackinfo[0].name) > 0 ? g_strdup(trackinfo[0].name) : NULL;
746 tuple->genre = strlen(trackinfo[trackno].genre) > 0 ? g_strdup(trackinfo[trackno].genre) : NULL; 738 tuple->genre = strlen(trackinfo[trackno].genre) > 0 ? g_strdup(trackinfo[trackno].genre) : NULL;
747 //tuple->year = 0; todo: set the year 739 //tuple->year = 0; todo: set the year
748 740
749 return tuple; 741 return tuple;
750 } 742 }
751
752
753 /* auxiliar functions */
754 743
755 void *dae_playing_thread_core(dae_params_t *pdae_params) 744 void *dae_playing_thread_core(dae_params_t *pdae_params)
756 { 745 {
757 unsigned char *buffer = (unsigned char *) malloc(CDDA_DAE_FRAMES * CDIO_CD_FRAMESIZE_RAW); 746 unsigned char *buffer = (unsigned char *) malloc(CDDA_DAE_FRAMES * CDIO_CD_FRAMESIZE_RAW);
758 747