Mercurial > mplayer.hg
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 |