comparison libmpdemux/demuxer.c @ 3777:026ccd3dc489

added real demuxer
author alex
date Wed, 26 Dec 2001 22:57:51 +0000
parents f9d9f6ab79f4
children 7ebf504c92d6
comparison
equal deleted inserted replaced
3776:a90d45d7bde6 3777:026ccd3dc489
157 int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t *ds); 157 int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t *ds);
158 int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t *ds); 158 int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t *ds);
159 int demux_asf_fill_buffer(demuxer_t *demux); 159 int demux_asf_fill_buffer(demuxer_t *demux);
160 int demux_mov_fill_buffer(demuxer_t *demux,demux_stream_t* ds); 160 int demux_mov_fill_buffer(demuxer_t *demux,demux_stream_t* ds);
161 int demux_vivo_fill_buffer(demuxer_t *demux); 161 int demux_vivo_fill_buffer(demuxer_t *demux);
162 int demux_real_fill_buffer(demuxer_t *demux);
162 #ifdef USE_TV 163 #ifdef USE_TV
163 #include "tv.h" 164 #include "tv.h"
164 extern tvi_handle_t *tv_handler; 165 extern tvi_handle_t *tv_handler;
165 extern int tv_param_on; 166 extern int tv_param_on;
166 167
179 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds); 180 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds);
180 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds); 181 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds);
181 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux); 182 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux);
182 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds); 183 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds);
183 case DEMUXER_TYPE_VIVO: return demux_vivo_fill_buffer(demux); 184 case DEMUXER_TYPE_VIVO: return demux_vivo_fill_buffer(demux);
185 case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux);
184 #ifdef USE_TV 186 #ifdef USE_TV
185 case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, tv_handler); 187 case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, tv_handler);
186 #endif 188 #endif
187 } 189 }
188 return 0; 190 return 0;
360 int demux_open_fli(demuxer_t* demuxer); 362 int demux_open_fli(demuxer_t* demuxer);
361 363
362 extern int vivo_check_file(demuxer_t *demuxer); 364 extern int vivo_check_file(demuxer_t *demuxer);
363 extern void demux_open_vivo(demuxer_t *demuxer); 365 extern void demux_open_vivo(demuxer_t *demuxer);
364 366
367 extern int real_check_file(demuxer_t *demuxer);
368 extern void demux_open_real(demuxer_t *demuxer);
369
365 demuxer_t* demux_open(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id){ 370 demuxer_t* demux_open(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id){
366 371
367 //int file_format=(*file_format_ptr); 372 //int file_format=(*file_format_ptr);
368 373
369 demuxer_t *demuxer=NULL; 374 demuxer_t *demuxer=NULL;
421 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VIVO){ 426 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VIVO){
422 demuxer=new_demuxer(stream,DEMUXER_TYPE_VIVO,audio_id,video_id,dvdsub_id); 427 demuxer=new_demuxer(stream,DEMUXER_TYPE_VIVO,audio_id,video_id,dvdsub_id);
423 if(vivo_check_file(demuxer)){ 428 if(vivo_check_file(demuxer)){
424 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected VIVO file format!\n"); 429 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected VIVO file format!\n");
425 file_format=DEMUXER_TYPE_VIVO; 430 file_format=DEMUXER_TYPE_VIVO;
431 }
432 }
433 //=============== Try to open as REAL file: =================
434 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REAL){
435 demuxer=new_demuxer(stream,DEMUXER_TYPE_REAL,audio_id,video_id,dvdsub_id);
436 if(real_check_file(demuxer)){
437 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected REAL file format!\n");
438 file_format=DEMUXER_TYPE_REAL;
426 } 439 }
427 } 440 }
428 //=============== Try to open as FLI file: ================= 441 //=============== Try to open as FLI file: =================
429 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_FLI){ 442 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_FLI){
430 demuxer=new_demuxer(stream,DEMUXER_TYPE_FLI,audio_id,video_id,dvdsub_id); 443 demuxer=new_demuxer(stream,DEMUXER_TYPE_FLI,audio_id,video_id,dvdsub_id);
528 } 541 }
529 case DEMUXER_TYPE_VIVO: { 542 case DEMUXER_TYPE_VIVO: {
530 demux_open_vivo(demuxer); 543 demux_open_vivo(demuxer);
531 break; 544 break;
532 } 545 }
546 case DEMUXER_TYPE_REAL: {
547 demux_open_real(demuxer);
548 break;
549 }
533 case DEMUXER_TYPE_ASF: { 550 case DEMUXER_TYPE_ASF: {
534 //---- ASF header: 551 //---- ASF header:
535 read_asf_header(demuxer); 552 read_asf_header(demuxer);
536 stream_reset(demuxer->stream); 553 stream_reset(demuxer->stream);
537 stream_seek(demuxer->stream,demuxer->movi_start); 554 stream_seek(demuxer->stream,demuxer->movi_start);