diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-04 20:11:06 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-01-04 20:11:06 +0000 |
commit | 43b7a734ff99915eecd1587378cecaef267a0e66 (patch) | |
tree | 692ddf2b81adde331c45cd89decf85f077ea0542 /libmpdemux/open.c | |
parent | b768679cb9d6e36ee57772b8b67e79a36a3d6dd9 (diff) | |
download | mpv-43b7a734ff99915eecd1587378cecaef267a0e66.tar.bz2 mpv-43b7a734ff99915eecd1587378cecaef267a0e66.tar.xz |
cdrwin-style bin/cue VCD image support (-vcd <track> -cuefile file.cue)
patch by Robert Penz <robert.penz@outertech.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8783 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/open.c')
-rw-r--r-- | libmpdemux/open.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c index 0ef1623cbe..0bdf3ec5d4 100644 --- a/libmpdemux/open.c +++ b/libmpdemux/open.c @@ -36,6 +36,7 @@ int dvd_last_chapter=0; int dvd_angle=1; char* dvd_device=NULL; char* cdrom_device=NULL; +char* cue_file_name=NULL; int dvd_nav=0; /* use libdvdnav? */ #ifdef USE_DVDNAV @@ -66,6 +67,10 @@ char * dvd_audio_stream_channels[6] = #endif extern int vcd_get_track_end(int fd,int track); +extern int cue_read_cue (const char *); +extern int cue_vcd_seek_to_track (int track); +extern int cue_vcd_get_track_end (int track); +extern void cue_vcd_read_toc (); #ifdef USE_TV #include "tv.h" @@ -139,7 +144,7 @@ if(filename && strncmp("cddb://",filename,7) == 0) //============ Open VideoCD track ============== #ifdef HAVE_VCD -if(vcd_track){ +if(vcd_track && !cue_file_name){ int ret,ret2; if(!cdrom_device) cdrom_device=strdup(DEFAULT_CDROM_DEVICE); f=open(cdrom_device,O_RDONLY); @@ -162,6 +167,26 @@ if(vcd_track){ } #endif + +// for opening of vcds in bincue files +if(vcd_track && cue_file_name){ + int ret,ret2; + if ((f = cue_read_cue (cue_file_name)) == -1) return NULL; + + cue_vcd_read_toc(); + ret2=cue_vcd_get_track_end(vcd_track); + ret=cue_vcd_seek_to_track(vcd_track); + if(ret<0){ mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_ErrTrackSelect " (seek)\n");return NULL;} + mp_msg(MSGT_OPEN,MSGL_V,"VCD start byte position: 0x%X end: 0x%X\n",ret,ret2); + + stream=new_stream(f,STREAMTYPE_VCDBINCUE); + stream->start_pos=ret; + stream->end_pos=ret2; + printf ("start:%d end:%d\n", ret, ret2); + return stream; +} + + //============ Open DVD title ============== #ifdef USE_DVDNAV if(dvd_nav){ |