summaryrefslogtreecommitdiffstats
path: root/libmpdemux/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/stream.c')
-rw-r--r--libmpdemux/stream.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libmpdemux/stream.c b/libmpdemux/stream.c
index bc999b553f..481066c173 100644
--- a/libmpdemux/stream.c
+++ b/libmpdemux/stream.c
@@ -32,6 +32,8 @@ extern int verbose; // defined in mplayer.c
#endif
+#include "vcd_read_bincue.h"
+
#ifdef USE_DVDREAD
int dvd_read_sector(dvd_priv_t *d,unsigned char* data);
void dvd_seek(dvd_priv_t *d,int pos);
@@ -80,6 +82,8 @@ int stream_fill_buffer(stream_t *s){
case STREAMTYPE_VCD:
len=vcd_read(s->fd,s->buffer);break;
#endif
+ case STREAMTYPE_VCDBINCUE:
+ len=cue_vcd_read(s->buffer);break;
#ifdef USE_DVDNAV
case STREAMTYPE_DVDNAV: {
dvdnav_stream_read((dvdnav_priv_t*)s->priv,s->buffer,&len);
@@ -128,6 +132,8 @@ off_t newpos=0;
#endif
case STREAMTYPE_VCD:
newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break;
+ case STREAMTYPE_VCDBINCUE:
+ newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break;
case STREAMTYPE_DVD:
newpos=pos/2048; newpos*=2048; break;
#ifdef HAVE_CDDA
@@ -166,6 +172,10 @@ if(newpos==0 || newpos!=s->pos){
vcd_set_msf(s->pos/VCD_SECTOR_DATA);
break;
#endif
+ case STREAMTYPE_VCDBINCUE:
+ s->pos=newpos; // real seek
+ cue_set_msf(s->pos/VCD_SECTOR_DATA);
+ break;
#ifdef HAVE_CDDA
case STREAMTYPE_CDDA: {
s->pos=newpos;