comparison libmpdemux/demuxer.c @ 14276:fa80ed52127b

TwinVQ decoder and demuxer
author rtognimp
date Wed, 29 Dec 2004 19:51:56 +0000
parents 815f03b7cee5
children 8769fa370f83
comparison
equal deleted inserted replaced
14275:de13fd557440 14276:fa80ed52127b
154 extern void demux_close_ts(demuxer_t* demuxer); 154 extern void demux_close_ts(demuxer_t* demuxer);
155 extern void demux_close_mkv(demuxer_t* demuxer); 155 extern void demux_close_mkv(demuxer_t* demuxer);
156 extern void demux_close_ra(demuxer_t* demuxer); 156 extern void demux_close_ra(demuxer_t* demuxer);
157 extern void demux_close_ty(demuxer_t* demuxer); 157 extern void demux_close_ty(demuxer_t* demuxer);
158 extern void demux_close_lavf(demuxer_t* demuxer); 158 extern void demux_close_lavf(demuxer_t* demuxer);
159 extern void demux_close_vqf(demuxer_t* demuxer);
159 160
160 161
161 #ifdef USE_TV 162 #ifdef USE_TV
162 #include "tv.h" 163 #include "tv.h"
163 extern int tv_param_on; 164 extern int tv_param_on;
239 demux_close_ts(demuxer); break; 240 demux_close_ts(demuxer); break;
240 case DEMUXER_TYPE_MPEG_PS: 241 case DEMUXER_TYPE_MPEG_PS:
241 demux_close_mpg(demuxer); break; 242 demux_close_mpg(demuxer); break;
242 case DEMUXER_TYPE_REALAUDIO: 243 case DEMUXER_TYPE_REALAUDIO:
243 demux_close_ra(demuxer); break; 244 demux_close_ra(demuxer); break;
245 case DEMUXER_TYPE_VQF:
246 demux_close_vqf(demuxer); break;
244 #ifdef USE_LIBAVFORMAT 247 #ifdef USE_LIBAVFORMAT
245 case DEMUXER_TYPE_LAVF: 248 case DEMUXER_TYPE_LAVF:
246 demux_close_lavf(demuxer); break; 249 demux_close_lavf(demuxer); break;
247 #endif 250 #endif
248 } 251 }
324 int demux_pva_fill_buffer(demuxer_t *demux); 327 int demux_pva_fill_buffer(demuxer_t *demux);
325 int demux_xmms_fill_buffer(demuxer_t *demux,demux_stream_t *ds); 328 int demux_xmms_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
326 int demux_gif_fill_buffer(demuxer_t *demux); 329 int demux_gif_fill_buffer(demuxer_t *demux);
327 int demux_ts_fill_buffer(demuxer_t *demux); 330 int demux_ts_fill_buffer(demuxer_t *demux);
328 int demux_ra_fill_buffer(demuxer_t *demux); 331 int demux_ra_fill_buffer(demuxer_t *demux);
332 int demux_vqf_fill_buffer(demuxer_t *demux);
329 333
330 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds); 334 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
331 extern int demux_ogg_fill_buffer(demuxer_t *d); 335 extern int demux_ogg_fill_buffer(demuxer_t *d);
332 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); 336 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
333 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); 337 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
388 #endif 392 #endif
389 case DEMUXER_TYPE_LMLM4: return demux_lmlm4_fill_buffer(demux); 393 case DEMUXER_TYPE_LMLM4: return demux_lmlm4_fill_buffer(demux);
390 case DEMUXER_TYPE_MPEG_TS: 394 case DEMUXER_TYPE_MPEG_TS:
391 return demux_ts_fill_buffer(demux); 395 return demux_ts_fill_buffer(demux);
392 case DEMUXER_TYPE_REALAUDIO: return demux_ra_fill_buffer(demux); 396 case DEMUXER_TYPE_REALAUDIO: return demux_ra_fill_buffer(demux);
397 case DEMUXER_TYPE_VQF: return demux_vqf_fill_buffer(demux);
393 #ifdef USE_LIBAVFORMAT 398 #ifdef USE_LIBAVFORMAT
394 case DEMUXER_TYPE_LAVF: return demux_lavf_fill_buffer(demux); 399 case DEMUXER_TYPE_LAVF: return demux_lavf_fill_buffer(demux);
395 #endif 400 #endif
396 } 401 }
397 return 0; 402 return 0;
632 extern int ts_check_file(demuxer_t * demuxer); 637 extern int ts_check_file(demuxer_t * demuxer);
633 extern int demux_open_ts(demuxer_t *demuxer); 638 extern int demux_open_ts(demuxer_t *demuxer);
634 extern int demux_open_mkv(demuxer_t *demuxer); 639 extern int demux_open_mkv(demuxer_t *demuxer);
635 extern int ra_check_file(demuxer_t *demuxer); 640 extern int ra_check_file(demuxer_t *demuxer);
636 extern int demux_open_ra(demuxer_t* demuxer); 641 extern int demux_open_ra(demuxer_t* demuxer);
642 extern int demux_probe_vqf(demuxer_t *demuxer);
643 extern int demux_open_vqf(demuxer_t* demuxer);
637 #ifdef HAVE_MATROSKA 644 #ifdef HAVE_MATROSKA
638 extern int demux_mkv_open(demuxer_t *demuxer); 645 extern int demux_mkv_open(demuxer_t *demuxer);
639 #endif 646 #endif
640 extern int lavf_check_file(demuxer_t *demuxer); 647 extern int lavf_check_file(demuxer_t *demuxer);
641 extern int demux_open_lavf(demuxer_t* demuxer); 648 extern int demux_open_lavf(demuxer_t* demuxer);
801 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REALAUDIO){ 808 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REALAUDIO){
802 demuxer=new_demuxer(stream,DEMUXER_TYPE_REALAUDIO,audio_id,video_id,dvdsub_id); 809 demuxer=new_demuxer(stream,DEMUXER_TYPE_REALAUDIO,audio_id,video_id,dvdsub_id);
803 if(ra_check_file(demuxer)){ 810 if(ra_check_file(demuxer)){
804 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REALAUDIO"); 811 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REALAUDIO");
805 file_format=DEMUXER_TYPE_REALAUDIO; 812 file_format=DEMUXER_TYPE_REALAUDIO;
813 } else {
814 free_demuxer(demuxer);
815 demuxer = NULL;
816 }
817 }
818
819 //=============== Try to open as VQF file: =================
820 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VQF){
821 demuxer=new_demuxer(stream,DEMUXER_TYPE_VQF,audio_id,video_id,dvdsub_id);
822 if(demux_probe_vqf(demuxer)){
823 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"VQF");
824 file_format=DEMUXER_TYPE_VQF;
806 } else { 825 } else {
807 free_demuxer(demuxer); 826 free_demuxer(demuxer);
808 demuxer = NULL; 827 demuxer = NULL;
809 } 828 }
810 } 829 }
1353 } 1372 }
1354 case DEMUXER_TYPE_REALAUDIO: { 1373 case DEMUXER_TYPE_REALAUDIO: {
1355 if (!demux_open_ra(demuxer)) return NULL; 1374 if (!demux_open_ra(demuxer)) return NULL;
1356 break; 1375 break;
1357 } 1376 }
1377 case DEMUXER_TYPE_VQF: {
1378 if (!demux_open_vqf(demuxer)) return NULL;
1379 break;
1380 }
1358 #ifdef USE_LIBAVFORMAT 1381 #ifdef USE_LIBAVFORMAT
1359 case DEMUXER_TYPE_LAVF: { 1382 case DEMUXER_TYPE_LAVF: {
1360 if (!demux_open_lavf(demuxer)) return NULL; 1383 if (!demux_open_lavf(demuxer)) return NULL;
1361 break; 1384 break;
1362 } 1385 }
1472 extern void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); 1495 extern void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1473 extern void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); 1496 extern void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1474 extern void demux_rawvideo_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); 1497 extern void demux_rawvideo_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1475 extern void demux_xmms_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); 1498 extern void demux_xmms_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1476 extern void demux_mkv_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); 1499 extern void demux_mkv_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1500 extern void demux_seek_vqf(demuxer_t *demuxer,float rel_seek_secs,int flags);
1477 1501
1478 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ 1502 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){
1479 demux_stream_t *d_audio=demuxer->audio; 1503 demux_stream_t *d_audio=demuxer->audio;
1480 demux_stream_t *d_video=demuxer->video; 1504 demux_stream_t *d_video=demuxer->video;
1481 sh_audio_t *sh_audio=d_audio->sh; 1505 sh_audio_t *sh_audio=d_audio->sh;
1574 demux_seek_ts(demuxer,rel_seek_secs,flags); break; 1598 demux_seek_ts(demuxer,rel_seek_secs,flags); break;
1575 #ifdef USE_LIBAVFORMAT 1599 #ifdef USE_LIBAVFORMAT
1576 case DEMUXER_TYPE_LAVF: 1600 case DEMUXER_TYPE_LAVF:
1577 demux_seek_lavf(demuxer,rel_seek_secs,flags); break; 1601 demux_seek_lavf(demuxer,rel_seek_secs,flags); break;
1578 #endif 1602 #endif
1603 case DEMUXER_TYPE_VQF:
1604 demux_seek_vqf(demuxer,rel_seek_secs,flags); break;
1579 1605
1580 } // switch(demuxer->file_format) 1606 } // switch(demuxer->file_format)
1581 1607
1582 return 1; 1608 return 1;
1583 } 1609 }