summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-04-12 14:19:12 +0000
committerrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-04-12 14:19:12 +0000
commit087c4e58012b36023957cbd14ae4b2490cb38e06 (patch)
treeb51164dccb58eb217b133585cea4b7a0b39f1d29 /libmpdemux/demuxer.c
parent138eac342d5b5e91e2f957c50bc2adbbc6b84849 (diff)
downloadmpv-087c4e58012b36023957cbd14ae4b2490cb38e06.tar.bz2
mpv-087c4e58012b36023957cbd14ae4b2490cb38e06.tar.xz
nsv (Nullsoft streaming video) demuxer
Patch by Reza Jelveh <reza (dot) jelveh (at) tu-harburg (dot) de> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12176 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 fceb8990b9..7d69dbb6d8 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -123,6 +123,7 @@ extern void demux_close_roq(demuxer_t* demuxer);
extern void demux_close_film(demuxer_t* demuxer);
extern void demux_close_bmp(demuxer_t* demuxer);
extern void demux_close_fli(demuxer_t* demuxer);
+extern void demux_close_nsv(demuxer_t* demuxer);
extern void demux_close_nuv(demuxer_t* demuxer);
extern void demux_close_audio(demuxer_t* demuxer);
extern void demux_close_ogg(demuxer_t* demuxer);
@@ -175,6 +176,8 @@ void free_demuxer(demuxer_t *demuxer){
demux_close_bmp(demuxer); break;
case DEMUXER_TYPE_FLI:
demux_close_fli(demuxer); break;
+ case DEMUXER_TYPE_NSV:
+ demux_close_nsv(demuxer); break;
case DEMUXER_TYPE_NUV:
demux_close_nuv(demuxer); break;
case DEMUXER_TYPE_MPEG_TY:
@@ -299,6 +302,7 @@ int demux_asf_fill_buffer(demuxer_t *demux);
int demux_mov_fill_buffer(demuxer_t *demux,demux_stream_t* ds);
int demux_vivo_fill_buffer(demuxer_t *demux);
int demux_real_fill_buffer(demuxer_t *demuxer);
+int demux_nsv_fill_buffer(demuxer_t *demux);
int demux_nuv_fill_buffer(demuxer_t *demux);
int demux_rtp_fill_buffer(demuxer_t *demux, demux_stream_t* ds);
int demux_rawdv_fill_buffer(demuxer_t *demuxer);
@@ -344,6 +348,7 @@ int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
case DEMUXER_TYPE_RAWDV: return demux_rawdv_fill_buffer(demux);
#endif
case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux);
+ case DEMUXER_TYPE_NSV: return demux_nsv_fill_buffer(demux);
case DEMUXER_TYPE_NUV: return demux_nuv_fill_buffer(demux);
#ifdef USE_TV
case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, ds);
@@ -598,7 +603,9 @@ extern int pva_check_file(demuxer_t * demuxer);
extern demuxer_t * demux_open_pva(demuxer_t * demuxer);
extern int real_check_file(demuxer_t *demuxer);
extern void demux_open_real(demuxer_t *demuxer);
+extern int nsv_check_file(demuxer_t *demuxer);
extern int nuv_check_file(demuxer_t *demuxer);
+extern void demux_open_nsv(demuxer_t *demuxer);
extern void demux_open_nuv(demuxer_t *demuxer);
extern int demux_audio_open(demuxer_t* demuxer);
extern int demux_ogg_open(demuxer_t* demuxer);
@@ -715,6 +722,17 @@ if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_ASF){
demuxer = NULL;
}
}
+//=============== Try to open as NSV file: =================
+if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NSV){
+ demuxer=new_demuxer(stream,DEMUXER_TYPE_NSV,audio_id,video_id,dvdsub_id);
+ if(file_format==DEMUXER_TYPE_NSV||nsv_check_file(demuxer)){
+ mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"Nullsoft Streaming Video");
+ file_format=DEMUXER_TYPE_NSV;
+ } else {
+ free_demuxer(demuxer);
+ demuxer = NULL;
+ }
+}
//=============== Try to open as NUV file: =================
if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NUV){
demuxer=new_demuxer(stream,DEMUXER_TYPE_NUV,audio_id,video_id,dvdsub_id);
@@ -1192,6 +1210,10 @@ switch(file_format){
return demuxer;
// break;
}
+ case DEMUXER_TYPE_NSV: {
+ demux_open_nsv(demuxer);
+ break;
+ }
case DEMUXER_TYPE_NUV: {
demux_open_nuv(demuxer);
break;