Mercurial > mplayer.hg
changeset 7430:4304d0980a62
Moved all the cdinfo specific from cddb to a standalone file, so
if no network, cdda can still be compiled.
author | bertrand |
---|---|
date | Tue, 17 Sep 2002 19:49:57 +0000 |
parents | 7a221aaf7012 |
children | e46eeafcd4df |
files | libmpdemux/cdinfo.c |
diffstat | 1 files changed, 136 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmpdemux/cdinfo.c Tue Sep 17 19:49:57 2002 +0000 @@ -0,0 +1,136 @@ +/* + * CD Info + * by Bertrand Baudet <bertrand_baudet@yahoo.com> + * (C) 2002, MPlayer team. +*/ + +#include "config.h" + +#if defined(HAVE_CDDA) + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "cdd.h" + +/******************************************************************************************************************* + * + * xmcd parser, cd info list + * + *******************************************************************************************************************/ + +cd_info_t* +cd_info_new() { + cd_info_t *cd_info = NULL; + + cd_info = (cd_info_t*)malloc(sizeof(cd_info_t)); + if( cd_info==NULL ) { + printf("Memory allocation failed\n"); + return NULL; + } + + memset(cd_info, 0, sizeof(cd_info_t)); + + return cd_info; +} + +void +cd_info_free(cd_info_t *cd_info) { + cd_track_t *cd_track, *cd_track_next; + if( cd_info==NULL ) return; + if( cd_info->artist!=NULL ) free(cd_info->artist); + if( cd_info->album!=NULL ) free(cd_info->album); + if( cd_info->genre!=NULL ) free(cd_info->genre); + + cd_track_next = cd_info->first; + while( cd_track_next!=NULL ) { + cd_track = cd_track_next; + cd_track_next = cd_track->next; + if( cd_track->name!=NULL ) free(cd_track->name); + free(cd_track); + } +} + +cd_track_t* +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) { + cd_track_t *cd_track; + + if( cd_info==NULL || track_name==NULL ) return NULL; + + cd_track = (cd_track_t*)malloc(sizeof(cd_track_t)); + if( cd_track==NULL ) { + printf("Memory allocation failed\n"); + return NULL; + } + memset(cd_track, 0, sizeof(cd_track_t)); + + cd_track->name = (char*)malloc(strlen(track_name)+1); + if( cd_track->name==NULL ) { + printf("Memory allocation failed\n"); + free(cd_track); + return NULL; + } + strcpy(cd_track->name, track_name); + cd_track->track_nb = track_nb; + cd_track->min = min; + cd_track->sec = sec; + cd_track->msec = msec; + cd_track->frame_begin = frame_begin; + cd_track->frame_length = frame_length; + + if( cd_info->first==NULL ) { + cd_info->first = cd_track; + } + if( cd_info->last!=NULL ) { + cd_info->last->next = cd_track; + } + + cd_track->prev = cd_info->last; + + cd_info->last = cd_track; + cd_info->current = cd_track; + + cd_info->nb_tracks++; + + return cd_track; +} + +cd_track_t* +cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb) { + cd_track_t *cd_track=NULL; + + if( cd_info==NULL ) return NULL; + + cd_track = cd_info->first; + while( cd_track!=NULL ) { + if( cd_track->track_nb==track_nb ) { + return cd_track; + } + cd_track = cd_track->next; + } + return NULL; +} + +void +cd_info_debug(cd_info_t *cd_info) { + cd_track_t *current_track; + printf("================ CD INFO === start =========\n"); + if( cd_info==NULL ) { + printf("cd_info is NULL\n"); + return; + } + printf(" artist=[%s]\n", cd_info->artist); + printf(" album=[%s]\n", cd_info->album); + printf(" genre=[%s]\n", cd_info->genre); + printf(" nb_tracks=%d\n", cd_info->nb_tracks); + printf(" length= %2d:%02d.%02d\n", cd_info->min, cd_info->sec, cd_info->msec); + current_track = cd_info->first; + while( current_track!=NULL ) { + 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); + current_track = current_track->next; + } + printf("================ CD INFO === end =========\n"); +} + +#endif