summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-13 18:58:14 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-09-13 18:58:14 +0000
commit62269a7d37fd8eedf43a3bcfe173876ca190b154 (patch)
treed69b99aa4c10682e433a5b0e9a69528c696abbd3 /libmpdemux/demuxer.c
parentafe86d36b572d32aea58757abccedb86e313d842 (diff)
downloadmpv-62269a7d37fd8eedf43a3bcfe173876ca190b154.tar.bz2
mpv-62269a7d37fd8eedf43a3bcfe173876ca190b154.tar.xz
added smjpeg demuxer only for nexus' request
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7383 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index a67a863b6d..1102597b97 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -155,6 +155,7 @@ extern void demux_close_demuxers(demuxer_t* demuxer);
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 @@ void free_demuxer(demuxer_t *demuxer){
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 @@ int demux_pva_fill_buffer(demuxer_t *demux);
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 @@ int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
#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 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 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 @@ if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_BMP){
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 @@ switch(file_format){
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;