Mercurial > mplayer.hg
diff libmpdemux/vcd_read_nbsd.h @ 16547:aa15d627a00b
Prints the numbers of start and end tracks and MSF length for each
track of a VCD when -identify is given.
Patch by kiriuja < mplayer TIREH patches AH en TIREH directo POIS net >
Original Thread:
Date: Sep 11, 2005 3:30 AM
Subject: [MPlayer-dev-eng] [PATCH] -identify VCD tracks
author | gpoirier |
---|---|
date | Thu, 22 Sep 2005 08:46:05 +0000 |
parents | b2419eef04da |
children | 4231482179b6 |
line wrap: on
line diff
--- a/libmpdemux/vcd_read_nbsd.h Thu Sep 22 08:11:17 2005 +0000 +++ b/libmpdemux/vcd_read_nbsd.h Thu Sep 22 08:46:05 2005 +0000 @@ -84,16 +84,21 @@ { struct ioc_toc_header tochdr; mp_vcd_priv_t* vcd; - int i; + int i, min = 0, sec = 0, frame = 0; if (ioctl(fd, CDIOREADTOCHEADER, &tochdr) == -1) { mp_msg(MSGT_OPEN,MSGL_ERR,"read CDROM toc header: %s\n",strerror(errno)); return; } - for (i = tochdr.starting_track; i <= tochdr.ending_track; i++) { + if (identify) + { + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ID_VCD_START_TRACK=%d\n", tochdr.starting_track); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ID_VCD_END_TRACK=%d\n", tochdr.ending_track); + } + for (i = tochdr.starting_track; i <= tochdr.ending_track + 1; i++) { struct ioc_read_toc_entry tocentry; struct cd_toc_entry tocentry_data; - tocentry.starting_track = i; + tocentry.starting_track = i<=tochdr.ending_track ? i : CDROM_LEADOUT; tocentry.address_format = CD_MSF_FORMAT; tocentry.data_len = sizeof(struct cd_toc_entry); tocentry.data = &tocentry_data; @@ -102,6 +107,7 @@ mp_msg(MSGT_OPEN,MSGL_ERR,"read CDROM toc entry: %s\n",strerror(errno)); return NULL; } + if (i <= tochdr.ending_track) mp_msg(MSGT_OPEN,MSGL_INFO,"track %02d: adr=%d ctrl=%d format=%d %02d:%02d:%02d\n", (int) tocentry.starting_track, (int) tocentry.data->addr_type, @@ -111,6 +117,30 @@ (int) tocentry.data->addr.msf.second, (int) tocentry.data->addr.msf.frame ); + + if (identify) + { + if (i > tochdr.starting_track) + { + min = tocentry.data->addr.msf.minute - min; + sec = tocentry.data->addr.msf.second - sec; + frame = tocentry.data->addr.msf.frame - frame; + if ( frame < 0 ) + { + frame += 75; + sec --; + } + if ( sec < 0 ) + { + sec += 60; + min --; + } + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ID_VCD_TRACK_%d_MSF=%02d:%02d:%02d\n", i - 1, min, sec, frame); + } + min = tocentry.data->addr.msf.minute; + sec = tocentry.data->addr.msf.second; + frame = tocentry.data->addr.msf.frame; + } } vcd = malloc(sizeof(mp_vcd_priv_t)); vcd->fd = fd;