diff libmpdemux/demuxer.c @ 3786:7ebf504c92d6

yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
author arpi
date Thu, 27 Dec 2001 02:08:31 +0000
parents 026ccd3dc489
children 3cea69dda1b3
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Thu Dec 27 02:02:03 2001 +0000
+++ b/libmpdemux/demuxer.c	Thu Dec 27 02:08:31 2001 +0000
@@ -168,6 +168,7 @@
 extern int demux_tv_fill_buffer(demuxer_t *demux, tvi_handle_t *tvh);
 extern int demux_open_tv(demuxer_t *demuxer, tvi_handle_t *tvh);
 #endif
+int demux_y4m_fill_buffer(demuxer_t *demux);
 
 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
   // Note: parameter 'ds' can be NULL!
@@ -186,6 +187,7 @@
 #ifdef USE_TV
     case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, tv_handler);
 #endif
+    case DEMUXER_TYPE_Y4M: return demux_y4m_fill_buffer(demux);
   }
   return 0;
 }
@@ -363,6 +365,8 @@
 
 extern int vivo_check_file(demuxer_t *demuxer);
 extern void demux_open_vivo(demuxer_t *demuxer);
+extern int y4m_check_file(demuxer_t *demuxer);
+extern void demux_open_y4m(demuxer_t *demuxer);
 
 extern int real_check_file(demuxer_t *demuxer);
 extern void demux_open_real(demuxer_t *demuxer);
@@ -414,6 +418,14 @@
       file_format=DEMUXER_TYPE_ASF;
   }
 }
+//=============== Try to open as Y4M file: =================
+if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_Y4M){
+  demuxer=new_demuxer(stream,DEMUXER_TYPE_Y4M,audio_id,video_id,dvdsub_id);
+  if(y4m_check_file(demuxer)){
+      mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected YUV4MPEG2 file format!\n");
+      file_format=DEMUXER_TYPE_Y4M;
+  }
+}
 //=============== Try to open as MOV file: =================
 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MOV){
   demuxer=new_demuxer(stream,DEMUXER_TYPE_MOV,audio_id,video_id,dvdsub_id);
@@ -543,6 +555,10 @@
   demux_open_vivo(demuxer);
   break;
  }
+ case DEMUXER_TYPE_Y4M: {
+  demux_open_y4m(demuxer);
+  break;
+ }
  case DEMUXER_TYPE_REAL: {
   demux_open_real(demuxer);
   break;