diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-12-08 19:33:38 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-12-08 19:33:38 +0000 |
commit | f861d2a4b3fc5332312d1597a8826f06d6dee3d5 (patch) | |
tree | d36bba25c9083b27465c8140f358e5dd71a773e0 /libmpdemux/demuxer.c | |
parent | 0955d2393468b2a92ef3e1a79f512a19613e3375 (diff) | |
download | mpv-f861d2a4b3fc5332312d1597a8826f06d6dee3d5.tar.bz2 mpv-f861d2a4b3fc5332312d1597a8826f06d6dee3d5.tar.xz |
LML-M4 mpeg4 capture card raw stream format support
original code by Maxim Yevtyushkin <max@linuxmedialabs.com>
partially rewritten, "mplayerized" by me
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11591 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r-- | libmpdemux/demuxer.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 3e27d0e7c3..86be9740f6 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -134,6 +134,7 @@ extern void demux_close_pva(demuxer_t* demuxer); 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 @@ void free_demuxer(demuxer_t *demuxer){ 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_ogg_fill_buffer(demuxer_t *d); 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 @@ int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ #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 bmp_check_file(demuxer_t *demuxer); 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 @@ if(file_format == DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_TS){ 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 @@ switch(file_format){ 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; |