comparison libmpdemux/demuxer.c @ 10033:4ecb40d73e24

Add support for Realaudio files
author rtognimp
date Wed, 30 Apr 2003 19:50:46 +0000
parents c6fab860ab18
children 01586a9d643d
comparison
equal deleted inserted replaced
10032:392ce6c74cd5 10033:4ecb40d73e24
134 extern void demux_close_smjpeg(demuxer_t* demuxer); 134 extern void demux_close_smjpeg(demuxer_t* demuxer);
135 extern void demux_close_xmms(demuxer_t* demuxer); 135 extern void demux_close_xmms(demuxer_t* demuxer);
136 extern void demux_close_gif(demuxer_t* demuxer); 136 extern void demux_close_gif(demuxer_t* demuxer);
137 extern void demux_close_ts(demuxer_t* demuxer); 137 extern void demux_close_ts(demuxer_t* demuxer);
138 extern void demux_close_mkv(demuxer_t* demuxer); 138 extern void demux_close_mkv(demuxer_t* demuxer);
139 extern void demux_close_ra(demuxer_t* demuxer);
139 140
140 #ifdef USE_TV 141 #ifdef USE_TV
141 #include "tv.h" 142 #include "tv.h"
142 extern int tv_param_on; 143 extern int tv_param_on;
143 144
210 case DEMUXER_TYPE_GIF: 211 case DEMUXER_TYPE_GIF:
211 demux_close_gif(demuxer); break; 212 demux_close_gif(demuxer); break;
212 #endif 213 #endif
213 case DEMUXER_TYPE_MPEG_TS: 214 case DEMUXER_TYPE_MPEG_TS:
214 demux_close_ts(demuxer); break; 215 demux_close_ts(demuxer); break;
216 case DEMUXER_TYPE_REALAUDIO:
217 demux_close_ra(demuxer); break;
215 218
216 } 219 }
217 // free streams: 220 // free streams:
218 for(i=0;i<256;i++){ 221 for(i=0;i<256;i++){
219 if(demuxer->a_streams[i]) free_sh_audio(demuxer->a_streams[i]); 222 if(demuxer->a_streams[i]) free_sh_audio(demuxer->a_streams[i]);
289 int demux_audio_fill_buffer(demux_stream_t *ds); 292 int demux_audio_fill_buffer(demux_stream_t *ds);
290 int demux_pva_fill_buffer(demuxer_t *demux); 293 int demux_pva_fill_buffer(demuxer_t *demux);
291 int demux_xmms_fill_buffer(demuxer_t *demux,demux_stream_t *ds); 294 int demux_xmms_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
292 int demux_gif_fill_buffer(demuxer_t *demux); 295 int demux_gif_fill_buffer(demuxer_t *demux);
293 int demux_ts_fill_buffer(demuxer_t *demux); 296 int demux_ts_fill_buffer(demuxer_t *demux);
297 int demux_ra_fill_buffer(demuxer_t *demux);
294 298
295 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds); 299 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
296 extern int demux_ogg_fill_buffer(demuxer_t *d); 300 extern int demux_ogg_fill_buffer(demuxer_t *d);
297 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); 301 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
298 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); 302 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
347 case DEMUXER_TYPE_SMJPEG: return demux_smjpeg_fill_buffer(demux); 351 case DEMUXER_TYPE_SMJPEG: return demux_smjpeg_fill_buffer(demux);
348 #ifdef HAVE_GIF 352 #ifdef HAVE_GIF
349 case DEMUXER_TYPE_GIF: return demux_gif_fill_buffer(demux); 353 case DEMUXER_TYPE_GIF: return demux_gif_fill_buffer(demux);
350 #endif 354 #endif
351 case DEMUXER_TYPE_MPEG_TS: return demux_ts_fill_buffer(demux); 355 case DEMUXER_TYPE_MPEG_TS: return demux_ts_fill_buffer(demux);
356 case DEMUXER_TYPE_REALAUDIO: return demux_ra_fill_buffer(demux);
352 } 357 }
353 return 0; 358 return 0;
354 } 359 }
355 360
356 // return value: 361 // return value:
582 extern int demux_xmms_open(demuxer_t* demuxer); 587 extern int demux_xmms_open(demuxer_t* demuxer);
583 extern int gif_check_file(demuxer_t *demuxer); 588 extern int gif_check_file(demuxer_t *demuxer);
584 extern int demux_open_gif(demuxer_t* demuxer); 589 extern int demux_open_gif(demuxer_t* demuxer);
585 extern int ts_check_file(demuxer_t * demuxer); 590 extern int ts_check_file(demuxer_t * demuxer);
586 extern int demux_open_mkv(demuxer_t *demuxer); 591 extern int demux_open_mkv(demuxer_t *demuxer);
592 extern int ra_check_file(demuxer_t *demuxer);
593 extern int demux_open_ra(demuxer_t* demuxer);
587 594
588 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer); 595 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer);
589 596
590 int extension_parsing=1; // 0=off 1=mixed (used only for unstable formats) 597 int extension_parsing=1; // 0=off 1=mixed (used only for unstable formats)
591 598
721 free_demuxer(demuxer); 728 free_demuxer(demuxer);
722 demuxer = NULL; 729 demuxer = NULL;
723 } 730 }
724 } 731 }
725 #endif 732 #endif
733 //=============== Try to open as REALAUDIO file: =================
734 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REALAUDIO){
735 demuxer=new_demuxer(stream,DEMUXER_TYPE_REALAUDIO,audio_id,video_id,dvdsub_id);
736 if(ra_check_file(demuxer)){
737 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REALAUDIO");
738 file_format=DEMUXER_TYPE_REALAUDIO;
739 } else {
740 free_demuxer(demuxer);
741 demuxer = NULL;
742 }
743 }
726 744
727 //=============== Try based on filename EXTENSION: ================= 745 //=============== Try based on filename EXTENSION: =================
728 // Ok. We're over the stable detectable fileformats, the next ones are a bit 746 // Ok. We're over the stable detectable fileformats, the next ones are a bit
729 // fuzzy. So by default (extension_parsing==1) try extension-based detection 747 // fuzzy. So by default (extension_parsing==1) try extension-based detection
730 // first: 748 // first:
1202 #endif 1220 #endif
1203 case DEMUXER_TYPE_MPEG_TS: { 1221 case DEMUXER_TYPE_MPEG_TS: {
1204 demux_open_ts(demuxer); 1222 demux_open_ts(demuxer);
1205 break; 1223 break;
1206 } 1224 }
1225 case DEMUXER_TYPE_REALAUDIO: {
1226 if (!demux_open_ra(demuxer)) return NULL;
1227 break;
1228 }
1207 } // switch(file_format) 1229 } // switch(file_format)
1208 pts_from_bps=0; // !!! 1230 pts_from_bps=0; // !!!
1209 return demuxer; 1231 return demuxer;
1210 } 1232 }
1211 1233