diff libmpdemux/demuxer.c @ 7382:89cbab549659

added smjpeg demuxer only for nexus' request
author alex
date Fri, 13 Sep 2002 18:58:14 +0000
parents b2445802532c
children 7d83ac879f51
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Fri Sep 13 11:54:59 2002 +0000
+++ b/libmpdemux/demuxer.c	Fri Sep 13 18:58:14 2002 +0000
@@ -155,6 +155,7 @@
 extern void demux_close_avi(demuxer_t *demuxer);
 extern void demux_close_rawdv(demuxer_t* demuxer);
 extern void demux_close_pva(demuxer_t* demuxer);
+extern void demux_close_smjpeg(demuxer_t* demuxer);
 
 #ifdef USE_TV
 #include "tv.h"
@@ -207,6 +208,8 @@
     case DEMUXER_TYPE_RTP:
       demux_close_rtp(demuxer); break;
 #endif
+    case DEMUXER_TYPE_SMJPEG:
+      demux_close_smjpeg(demuxer); return;
     case DEMUXER_TYPE_DEMUXERS:
       demux_close_demuxers(demuxer); return;
     case DEMUXER_TYPE_AVI: 
@@ -292,6 +295,7 @@
 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);
+extern int demux_smjpeg_fill_buffer(demuxer_t* demux);
 
 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
   // Note: parameter 'ds' can be NULL!
@@ -327,6 +331,7 @@
 #ifdef STREAMING_LIVE_DOT_COM
     case DEMUXER_TYPE_RTP: return demux_rtp_fill_buffer(demux, ds);
 #endif
+    case DEMUXER_TYPE_SMJPEG: return demux_smjpeg_fill_buffer(demux);
   }
   return 0;
 }
@@ -546,6 +551,8 @@
 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 int smjpeg_check_file(demuxer_t *demuxer);
+extern int demux_open_smjpeg(demuxer_t* demuxer);
 
 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer);
 
@@ -734,6 +741,17 @@
       demuxer = NULL;
   }
 }
+//=============== Try to open as SMJPEG file: =================
+if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_SMJPEG){
+  demuxer=new_demuxer(stream,DEMUXER_TYPE_SMJPEG,audio_id,video_id,dvdsub_id);
+  if(smjpeg_check_file(demuxer)){
+      mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected SMJPEG file!\n");
+      file_format=DEMUXER_TYPE_SMJPEG;
+  } else {
+      free_demuxer(demuxer);
+      demuxer = NULL;
+  }
+}
 //=============== Try to open as Ogg file: =================
 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_OGG){
   demuxer=new_demuxer(stream,DEMUXER_TYPE_OGG,audio_id,video_id,dvdsub_id);
@@ -899,6 +917,10 @@
   if (!demux_open_roq(demuxer)) return NULL;
   break;
  }
+ case DEMUXER_TYPE_SMJPEG: {
+  if (!demux_open_smjpeg(demuxer)) return NULL;
+  break;
+ }
  case DEMUXER_TYPE_MOV: {
   if(!mov_read_header(demuxer)) return NULL;
 //  sh_video=d_video->sh;if(sh_video) sh_video->ds=d_video;