3
* by Bertrand Baudet <bertrand_baudet@yahoo.com>
4
* (C) 2002, MPlayer team.
18
/*******************************************************************************************************************
20
* xmcd parser, cd info list
22
*******************************************************************************************************************/
26
cd_info_t *cd_info = NULL;
28
cd_info = (cd_info_t*)malloc(sizeof(cd_info_t));
30
mp_msg(MSGT_DEMUX, MSGL_ERR, MSGTR_MemAllocFailed);
34
memset(cd_info, 0, sizeof(cd_info_t));
40
cd_info_free(cd_info_t *cd_info) {
41
cd_track_t *cd_track, *cd_track_next;
42
if( cd_info==NULL ) return;
43
if( cd_info->artist!=NULL ) free(cd_info->artist);
44
if( cd_info->album!=NULL ) free(cd_info->album);
45
if( cd_info->genre!=NULL ) free(cd_info->genre);
47
cd_track_next = cd_info->first;
48
while( cd_track_next!=NULL ) {
49
cd_track = cd_track_next;
50
cd_track_next = cd_track->next;
51
if( cd_track->name!=NULL ) free(cd_track->name);
57
cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length) {
60
if( cd_info==NULL || track_name==NULL ) return NULL;
62
cd_track = (cd_track_t*)malloc(sizeof(cd_track_t));
63
if( cd_track==NULL ) {
64
mp_msg(MSGT_DEMUX, MSGL_ERR, MSGTR_MemAllocFailed);
67
memset(cd_track, 0, sizeof(cd_track_t));
69
cd_track->name = (char*)malloc(strlen(track_name)+1);
70
if( cd_track->name==NULL ) {
71
mp_msg(MSGT_DEMUX, MSGL_ERR, MSGTR_MemAllocFailed);
75
strcpy(cd_track->name, track_name);
76
cd_track->track_nb = track_nb;
79
cd_track->msec = msec;
80
cd_track->frame_begin = frame_begin;
81
cd_track->frame_length = frame_length;
83
if( cd_info->first==NULL ) {
84
cd_info->first = cd_track;
86
if( cd_info->last!=NULL ) {
87
cd_info->last->next = cd_track;
90
cd_track->prev = cd_info->last;
92
cd_info->last = cd_track;
93
cd_info->current = cd_track;
101
cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb) {
102
cd_track_t *cd_track=NULL;
104
if( cd_info==NULL ) return NULL;
106
cd_track = cd_info->first;
107
while( cd_track!=NULL ) {
108
if( cd_track->track_nb==track_nb ) {
111
cd_track = cd_track->next;
117
cd_info_debug(cd_info_t *cd_info) {
118
cd_track_t *current_track;
119
printf("================ CD INFO === start =========\n");
120
if( cd_info==NULL ) {
121
printf("cd_info is NULL\n");
124
printf(" artist=[%s]\n", cd_info->artist);
125
printf(" album=[%s]\n", cd_info->album);
126
printf(" genre=[%s]\n", cd_info->genre);
127
printf(" nb_tracks=%d\n", cd_info->nb_tracks);
128
printf(" length= %2d:%02d.%02d\n", cd_info->min, cd_info->sec, cd_info->msec);
129
current_track = cd_info->first;
130
while( current_track!=NULL ) {
131
printf(" #%2d %2d:%02d.%02d @ %7ld\t[%s] \n", current_track->track_nb, current_track->min, current_track->sec, current_track->msec, current_track->frame_begin, current_track->name);
132
current_track = current_track->next;
134
printf("================ CD INFO === end =========\n");