diff libmpdemux/stream.c @ 15518:9391bf60ccdf

ported dvd:// to the new stream api
author nicodvb
date Thu, 19 May 2005 19:50:39 +0000
parents 5eb4994a691f
children 2c5186ed83b9
line wrap: on
line diff
--- a/libmpdemux/stream.c	Thu May 19 12:09:26 2005 +0000
+++ b/libmpdemux/stream.c	Thu May 19 19:50:39 2005 +0000
@@ -37,12 +37,6 @@
 
 //#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);
-void dvd_close(dvd_priv_t *d);
-#endif
-
 #ifdef LIBSMBCLIENT
 #include "libsmbclient.h"
 #endif
@@ -65,10 +59,14 @@
 #ifdef HAVE_VSTREAM
 extern stream_info_t stream_info_vstream;
 #endif
+#ifdef USE_DVDNAV
+extern stream_info_t stream_info_dvdnav;
+#endif
 
 extern stream_info_t stream_info_cue;
 extern stream_info_t stream_info_null;
 extern stream_info_t stream_info_file;
+extern stream_info_t stream_info_dvd;
 
 stream_info_t* auto_open_streams[] = {
 #ifdef HAVE_VCD
@@ -90,6 +88,11 @@
   &stream_info_vstream,
 #endif
   &stream_info_cue,
+  &stream_info_dvd,
+#ifdef USE_DVDNAV
+  &stream_info_dvdnav;
+#endif
+
   &stream_info_null,
   &stream_info_file,
   NULL
@@ -203,23 +206,6 @@
 #else
     len=read(s->fd,s->buffer,STREAM_BUFFER_SIZE);break;
 #endif
-#ifdef USE_DVDNAV
-  case STREAMTYPE_DVDNAV: {
-    dvdnav_stream_read((dvdnav_priv_t*)s->priv,s->buffer,&len);
-    if (len==0) return 0; // this was an event, so repeat the read
-    break;
-  }
-#endif
-#ifdef USE_DVDREAD
-  case STREAMTYPE_DVD: {
-    off_t pos=dvd_read_sector(s->priv,s->buffer);
-    if(pos>=0){
-	len=2048; // full sector
-	s->pos=2048*pos-len;
-    } else len=-1; // error
-    break;
-  }
-#endif
   case STREAMTYPE_DS:
     len = demux_read_data((demux_stream_t*)s->priv,s->buffer,STREAM_BUFFER_SIZE);
     break;
@@ -251,8 +237,6 @@
 #else
     newpos=pos&(~(STREAM_BUFFER_SIZE-1));break;
 #endif
-  case STREAMTYPE_DVD:
-    newpos=pos/2048; newpos*=2048; break;
   default:
     // Round on sector size
     if(s->sector_size)
@@ -276,7 +260,6 @@
     (unsigned int)s->pos,newpos,pos,s->buf_len);
 #endif
 }
-
   pos-=newpos;
 
 if(newpos==0 || newpos!=s->pos){
@@ -287,25 +270,6 @@
     if(smbc_lseek(s->fd,s->pos,SEEK_SET)<0) s->eof=1;
     break;
 #endif
-#ifdef USE_DVDNAV
-  case STREAMTYPE_DVDNAV: {
-    if (newpos==0) {
-      if (dvdnav_stream_reset((dvdnav_priv_t*)s->priv))
-        s->pos=0;
-    }
-    if(newpos!=s->pos){
-      mp_msg(MSGT_STREAM,MSGL_INFO,"Cannot seek in DVDNAV streams yet!\n");
-      return 1;
-    }
-    break;
-  }
-#endif
-#ifdef USE_DVDREAD
-  case STREAMTYPE_DVD:
-    s->pos=newpos; // real seek
-    dvd_seek(s->priv,s->pos/2048);
-    break;
-#endif
   case STREAMTYPE_STREAM:
     //s->pos=newpos; // real seek
     // Some streaming protocol allow to seek backward and forward
@@ -428,11 +392,6 @@
     smbc_close(s->fd);
     break;    
 #endif
-
-#ifdef USE_DVDREAD
-  case STREAMTYPE_DVD:
-    dvd_close(s->priv);
-#endif
   default:
     if(s->close) s->close(s);
   }