diff libmpdemux/demuxer.c @ 11590:0908285ada31

LML-M4 mpeg4 capture card raw stream format support original code by Maxim Yevtyushkin <max@linuxmedialabs.com> partially rewritten, "mplayerized" by me
author arpi
date Mon, 08 Dec 2003 19:33:38 +0000
parents 2c9e2da67647
children c43d654a1f45
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Mon Dec 08 18:35:39 2003 +0000
+++ b/libmpdemux/demuxer.c	Mon Dec 08 19:33:38 2003 +0000
@@ -134,6 +134,7 @@
 extern void demux_close_smjpeg(demuxer_t* demuxer);
 extern void demux_close_xmms(demuxer_t* demuxer);
 extern void demux_close_gif(demuxer_t* demuxer);
+extern void demux_close_lmlm4(demuxer_t* demuxer);
 extern void demux_close_ts(demuxer_t* demuxer);
 extern void demux_close_mkv(demuxer_t* demuxer);
 extern void demux_close_ra(demuxer_t* demuxer);
@@ -215,6 +216,8 @@
     case DEMUXER_TYPE_GIF:
       demux_close_gif(demuxer); break;
 #endif
+    case DEMUXER_TYPE_LMLM4:
+      demux_close_lmlm4(demuxer); break;
     case DEMUXER_TYPE_MPEG_TS:
     case DEMUXER_TYPE_MPEG4_IN_TS:
       demux_close_ts(demuxer); break;
@@ -308,6 +311,7 @@
 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
 extern int demux_smjpeg_fill_buffer(demuxer_t* demux);
+extern int demux_lmlm4_fill_buffer(demuxer_t* demux);
 extern int demux_mkv_fill_buffer(demuxer_t *d);
 
 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
@@ -360,6 +364,7 @@
 #ifdef HAVE_GIF
     case DEMUXER_TYPE_GIF: return demux_gif_fill_buffer(demux);
 #endif
+    case DEMUXER_TYPE_LMLM4: return demux_lmlm4_fill_buffer(demux);
     case DEMUXER_TYPE_MPEG_TS: 
     case DEMUXER_TYPE_MPEG4_IN_TS: 
 	return demux_ts_fill_buffer(demux);
@@ -597,6 +602,8 @@
 extern int demux_xmms_open(demuxer_t* demuxer);
 extern int gif_check_file(demuxer_t *demuxer);
 extern int demux_open_gif(demuxer_t* demuxer);
+extern int lmlm4_check_file(demuxer_t* demuxer);
+extern int demux_open_lmlm4(demuxer_t* demuxer);
 extern int ts_check_file(demuxer_t * demuxer);
 extern int demux_open_ts(demuxer_t *demuxer);
 extern int demux_open_mkv(demuxer_t *demuxer);
@@ -895,6 +902,17 @@
 		demuxer=NULL;
 	}
 }
+//=============== Try to open as LMLM4 file: =================
+if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_LMLM4){
+  demuxer=new_demuxer(stream,DEMUXER_TYPE_LMLM4,audio_id,video_id,dvdsub_id);
+  if(lmlm4_check_file(demuxer)){
+      mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"RAW LMLM4");
+      file_format=DEMUXER_TYPE_LMLM4;
+  } else {
+      free_demuxer(demuxer);
+      demuxer = NULL;
+  }
+}
 //=============== Try to open as MPEG-PS file: =================
 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_PS){
  int pes=1;
@@ -1167,6 +1185,24 @@
   demux_open_y4m(demuxer);
   break;
  }
+ case DEMUXER_TYPE_LMLM4: {
+  demux_open_lmlm4(demuxer);
+  if(!ds_fill_buffer(d_video)){
+    mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingVideoStream);
+    sh_video=NULL;
+  } else {
+    sh_video=d_video->sh;sh_video->ds=d_video;
+  }
+  if(audio_id!=-2) {
+   if(!ds_fill_buffer(d_audio)){
+    mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingAudioStream);
+    sh_audio=NULL;
+   } else {
+    sh_audio=d_audio->sh;sh_audio->ds=d_audio;
+   }
+  }
+  break;
+ }
  case DEMUXER_TYPE_REAL: {
   demux_open_real(demuxer);
   break;