summaryrefslogtreecommitdiffstats
path: root/libmpdemux/open.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-04 20:11:06 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-04 20:11:06 +0000
commit43b7a734ff99915eecd1587378cecaef267a0e66 (patch)
tree692ddf2b81adde331c45cd89decf85f077ea0542 /libmpdemux/open.c
parentb768679cb9d6e36ee57772b8b67e79a36a3d6dd9 (diff)
downloadmpv-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.c27
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){