diff libmpdemux/demuxer.c @ 6384:f0b933918a22

Support for playing audio cds using cdparanoia. Include a raw audio demuxer wich can be used for other purpose.
author albeu
date Tue, 11 Jun 2002 14:29:51 +0000
parents f03fe2e84efd
children 7bc4c6ba9485
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Mon Jun 10 18:43:42 2002 +0000
+++ b/libmpdemux/demuxer.c	Tue Jun 11 14:29:51 2002 +0000
@@ -260,6 +260,7 @@
 int demux_audio_fill_buffer(demux_stream_t *ds);
 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
 extern int demux_ogg_fill_buffer(demuxer_t *d);
+extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
 
 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
   // Note: parameter 'ds' can be NULL!
@@ -287,6 +288,7 @@
     case DEMUXER_TYPE_AUDIO: return demux_audio_fill_buffer(ds);
     case DEMUXER_TYPE_DEMUXERS: return demux_demuxers_fill_buffer(demux,ds);
     case DEMUXER_TYPE_OGG: return demux_ogg_fill_buffer(demux);
+    case DEMUXER_TYPE_RAWAUDIO: return demux_rawaudio_fill_buffer(demux,ds);
   }
   return 0;
 }
@@ -501,9 +503,12 @@
 extern void demux_open_nuv(demuxer_t *demuxer);
 extern int demux_audio_open(demuxer_t* demuxer);
 extern int demux_ogg_open(demuxer_t* demuxer);
+extern int demux_rawaudio_open(demuxer_t* demuxer);
 
 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer);
 
+extern int use_rawaudio;
+
 
 static demuxer_t* demux_open_stream(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id){
 
@@ -525,6 +530,11 @@
   file_format=DEMUXER_TYPE_MF;
  }
 
+if(stream->type == STREAMTYPE_CDDA || use_rawaudio) {
+  demuxer = new_demuxer(stream,DEMUXER_TYPE_RAWAUDIO,audio_id,video_id,dvdsub_id);
+  file_format = DEMUXER_TYPE_RAWAUDIO;
+}
+
 #ifdef USE_TV
 //=============== Try to open as TV-input: =================
 if((tv_param_on == 1) &&
@@ -789,6 +799,10 @@
 demuxer->file_format=file_format;
 
 switch(file_format){
+ case DEMUXER_TYPE_RAWAUDIO: {
+   demux_rawaudio_open(demuxer);
+   break;
+ }
  case DEMUXER_TYPE_MF: {
   if (!demux_open_mf(demuxer)) return NULL;
   break;
@@ -999,6 +1013,7 @@
 #ifdef HAVE_OGGVORBIS
 extern void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
 #endif
+extern void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
 
 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){
     demux_stream_t *d_audio=demuxer->audio;
@@ -1071,6 +1086,8 @@
  case DEMUXER_TYPE_OGG:
       demux_ogg_seek(demuxer,rel_seek_secs,flags);  break;
 #endif
+ case DEMUXER_TYPE_RAWAUDIO:
+      demux_rawaudio_seek(demuxer,rel_seek_secs,flags);  break;
 
 
 } // switch(demuxer->file_format)