Mercurial > mplayer.hg
comparison libmpdemux/demuxer.c @ 7364:b2445802532c
.PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
slightly modified patch, original by Matteo Giani <matgiani@ctonet.it>
author | arpi |
---|---|
date | Tue, 10 Sep 2002 21:50:03 +0000 |
parents | 9129781e5939 |
children | 89cbab549659 |
comparison
equal
deleted
inserted
replaced
7363:8acd8cb8fd52 | 7364:b2445802532c |
---|---|
152 extern void demux_close_ogg(demuxer_t* demuxer); | 152 extern void demux_close_ogg(demuxer_t* demuxer); |
153 extern void demux_close_rtp(demuxer_t* demuxer); | 153 extern void demux_close_rtp(demuxer_t* demuxer); |
154 extern void demux_close_demuxers(demuxer_t* demuxer); | 154 extern void demux_close_demuxers(demuxer_t* demuxer); |
155 extern void demux_close_avi(demuxer_t *demuxer); | 155 extern void demux_close_avi(demuxer_t *demuxer); |
156 extern void demux_close_rawdv(demuxer_t* demuxer); | 156 extern void demux_close_rawdv(demuxer_t* demuxer); |
157 extern void demux_close_pva(demuxer_t* demuxer); | |
157 | 158 |
158 #ifdef USE_TV | 159 #ifdef USE_TV |
159 #include "tv.h" | 160 #include "tv.h" |
160 extern int tv_param_on; | 161 extern int tv_param_on; |
161 | 162 |
168 | 169 |
169 void free_demuxer(demuxer_t *demuxer){ | 170 void free_demuxer(demuxer_t *demuxer){ |
170 int i; | 171 int i; |
171 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing demuxer at %p \n",demuxer); | 172 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing demuxer at %p \n",demuxer); |
172 switch(demuxer->type) { | 173 switch(demuxer->type) { |
174 case DEMUXER_TYPE_PVA: | |
175 demux_close_pva(demuxer); break; | |
173 case DEMUXER_TYPE_VIVO: | 176 case DEMUXER_TYPE_VIVO: |
174 demux_close_vivo(demuxer); break; | 177 demux_close_vivo(demuxer); break; |
175 case DEMUXER_TYPE_REAL: | 178 case DEMUXER_TYPE_REAL: |
176 demux_close_real(demuxer); break; | 179 demux_close_real(demuxer); break; |
177 case DEMUXER_TYPE_Y4M: | 180 case DEMUXER_TYPE_Y4M: |
282 int demux_nuv_fill_buffer(demuxer_t *demux); | 285 int demux_nuv_fill_buffer(demuxer_t *demux); |
283 int demux_rtp_fill_buffer(demuxer_t *demux, demux_stream_t* ds); | 286 int demux_rtp_fill_buffer(demuxer_t *demux, demux_stream_t* ds); |
284 int demux_rawdv_fill_buffer(demuxer_t *demuxer); | 287 int demux_rawdv_fill_buffer(demuxer_t *demuxer); |
285 int demux_y4m_fill_buffer(demuxer_t *demux); | 288 int demux_y4m_fill_buffer(demuxer_t *demux); |
286 int demux_audio_fill_buffer(demux_stream_t *ds); | 289 int demux_audio_fill_buffer(demux_stream_t *ds); |
290 int demux_pva_fill_buffer(demuxer_t *demux); | |
291 | |
287 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds); | 292 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds); |
288 extern int demux_ogg_fill_buffer(demuxer_t *d); | 293 extern int demux_ogg_fill_buffer(demuxer_t *d); |
289 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); | 294 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds); |
290 | 295 |
291 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ | 296 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){ |
303 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds); | 308 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds); |
304 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds); | 309 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds); |
305 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux); | 310 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux); |
306 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds); | 311 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds); |
307 case DEMUXER_TYPE_VIVO: return demux_vivo_fill_buffer(demux); | 312 case DEMUXER_TYPE_VIVO: return demux_vivo_fill_buffer(demux); |
313 case DEMUXER_TYPE_PVA: return demux_pva_fill_buffer(demux); | |
308 #ifdef HAVE_LIBDV095 | 314 #ifdef HAVE_LIBDV095 |
309 case DEMUXER_TYPE_RAWDV: return demux_rawdv_fill_buffer(demux); | 315 case DEMUXER_TYPE_RAWDV: return demux_rawdv_fill_buffer(demux); |
310 #endif | 316 #endif |
311 case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux); | 317 case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux); |
312 case DEMUXER_TYPE_NUV: return demux_nuv_fill_buffer(demux); | 318 case DEMUXER_TYPE_NUV: return demux_nuv_fill_buffer(demux); |
530 extern int vivo_check_file(demuxer_t *demuxer); | 536 extern int vivo_check_file(demuxer_t *demuxer); |
531 extern void demux_open_vivo(demuxer_t *demuxer); | 537 extern void demux_open_vivo(demuxer_t *demuxer); |
532 extern int y4m_check_file(demuxer_t *demuxer); | 538 extern int y4m_check_file(demuxer_t *demuxer); |
533 extern void demux_open_y4m(demuxer_t *demuxer); | 539 extern void demux_open_y4m(demuxer_t *demuxer); |
534 extern int roq_check_file(demuxer_t *demuxer); | 540 extern int roq_check_file(demuxer_t *demuxer); |
535 | 541 extern int pva_check_file(demuxer_t * demuxer); |
536 extern int real_check_file(demuxer_t *demuxer); | 542 extern int real_check_file(demuxer_t *demuxer); |
537 extern void demux_open_real(demuxer_t *demuxer); | 543 extern void demux_open_real(demuxer_t *demuxer); |
538 | |
539 extern int nuv_check_file(demuxer_t *demuxer); | 544 extern int nuv_check_file(demuxer_t *demuxer); |
540 extern void demux_open_nuv(demuxer_t *demuxer); | 545 extern void demux_open_nuv(demuxer_t *demuxer); |
541 extern int demux_audio_open(demuxer_t* demuxer); | 546 extern int demux_audio_open(demuxer_t* demuxer); |
542 extern int demux_ogg_open(demuxer_t* demuxer); | 547 extern int demux_ogg_open(demuxer_t* demuxer); |
543 extern int demux_rawaudio_open(demuxer_t* demuxer); | 548 extern int demux_rawaudio_open(demuxer_t* demuxer); |
737 file_format=DEMUXER_TYPE_OGG; | 742 file_format=DEMUXER_TYPE_OGG; |
738 } else { | 743 } else { |
739 free_demuxer(demuxer); | 744 free_demuxer(demuxer); |
740 demuxer = NULL; | 745 demuxer = NULL; |
741 } | 746 } |
747 } | |
748 //=============== Try to open as PVA file: ================= | |
749 if(file_format == DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_PVA){ | |
750 demuxer=new_demuxer(stream,DEMUXER_TYPE_PVA,audio_id,video_id,dvdsub_id); | |
751 if(pva_check_file(demuxer)) { | |
752 mp_msg(MSGT_DEMUXER,MSGL_INFO,"Detected PVA file...\n"); | |
753 file_format=DEMUXER_TYPE_PVA; | |
754 } else { | |
755 free_demuxer(demuxer); | |
756 demuxer=NULL; | |
757 } | |
742 } | 758 } |
743 //=============== Try to open as MPEG-PS file: ================= | 759 //=============== Try to open as MPEG-PS file: ================= |
744 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_PS){ | 760 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_PS){ |
745 int pes=1; | 761 int pes=1; |
746 int tmp; | 762 int tmp; |
919 } | 935 } |
920 case DEMUXER_TYPE_VIVO: { | 936 case DEMUXER_TYPE_VIVO: { |
921 demux_open_vivo(demuxer); | 937 demux_open_vivo(demuxer); |
922 break; | 938 break; |
923 } | 939 } |
940 case DEMUXER_TYPE_PVA: { | |
941 demux_open_pva(demuxer); | |
942 break; | |
943 } | |
924 case DEMUXER_TYPE_Y4M: { | 944 case DEMUXER_TYPE_Y4M: { |
925 demux_open_y4m(demuxer); | 945 demux_open_y4m(demuxer); |
926 break; | 946 break; |
927 } | 947 } |
928 case DEMUXER_TYPE_REAL: { | 948 case DEMUXER_TYPE_REAL: { |
1067 int demux_seek_film(demuxer_t *demuxer,float rel_seek_secs,int flags); | 1087 int demux_seek_film(demuxer_t *demuxer,float rel_seek_secs,int flags); |
1068 int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags); | 1088 int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags); |
1069 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags); | 1089 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags); |
1070 void demux_seek_mov(demuxer_t *demuxer,float pts,int flags); | 1090 void demux_seek_mov(demuxer_t *demuxer,float pts,int flags); |
1071 int demux_seek_real(demuxer_t *demuxer,float rel_seek_secs,int flags); | 1091 int demux_seek_real(demuxer_t *demuxer,float rel_seek_secs,int flags); |
1092 int demux_seek_pva(demuxer_t *demuxer,float rel_seek_secs,int flags); | |
1093 | |
1072 #ifdef HAVE_LIBDV095 | 1094 #ifdef HAVE_LIBDV095 |
1073 int demux_seek_rawdv(demuxer_t *demuxer, float pts, int flags); | 1095 int demux_seek_rawdv(demuxer_t *demuxer, float pts, int flags); |
1074 #endif | 1096 #endif |
1075 | 1097 |
1076 extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); | 1098 extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags); |
1138 case DEMUXER_TYPE_Y4M: | 1160 case DEMUXER_TYPE_Y4M: |
1139 demux_seek_y4m(demuxer,rel_seek_secs,flags); break; | 1161 demux_seek_y4m(demuxer,rel_seek_secs,flags); break; |
1140 | 1162 |
1141 case DEMUXER_TYPE_MF: | 1163 case DEMUXER_TYPE_MF: |
1142 demux_seek_mf(demuxer,rel_seek_secs,flags); break; | 1164 demux_seek_mf(demuxer,rel_seek_secs,flags); break; |
1165 | |
1166 case DEMUXER_TYPE_PVA: | |
1167 demux_seek_pva(demuxer,rel_seek_secs,flags); break; | |
1143 | 1168 |
1144 case DEMUXER_TYPE_FLI: | 1169 case DEMUXER_TYPE_FLI: |
1145 demux_seek_fli(demuxer,rel_seek_secs,flags); break; | 1170 demux_seek_fli(demuxer,rel_seek_secs,flags); break; |
1146 case DEMUXER_TYPE_FILM: | 1171 case DEMUXER_TYPE_FILM: |
1147 demux_seek_film(demuxer,rel_seek_secs,flags); break; | 1172 demux_seek_film(demuxer,rel_seek_secs,flags); break; |