annotate libmpdemux/demuxer.c @ 13738:39004f891def

seeking based on the largest timestamp in an mpeg stream It is often more accurate than the current seeking and it has the additional benefit of giving the (almost) precise total time of the movie. patch by Michael Behrisch < behrisch at informatik.hu-berlin.de >
author aurel
date Sat, 23 Oct 2004 00:05:38 +0000
parents f1f20b06aa4a
children e632b43f0598
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 //=================== DEMUXER v2.5 =========================
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2
1430
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
3 #include <stdio.h>
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
4 #include <stdlib.h>
3150
8dae87740d33 bad malloc+strcpy => strdup
arpi
parents: 3101
diff changeset
5 #include <string.h>
1430
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
6 #include <unistd.h>
1728d249c783 missing unistd.h (requires for off_t under freebsd)
arpi
parents: 1428
diff changeset
7
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
8 #include <sys/types.h>
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
9 #include <sys/stat.h>
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
10
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
11 #include "config.h"
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
12 #include "mp_msg.h"
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
13 #include "help_mp.h"
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
14 #include "../m_config.h"
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
15
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
16 #include "stream.h"
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
17 #include "demuxer.h"
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
18 #include "stheader.h"
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
19 #include "mf.h"
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
20
13357
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
21 #include "../libao2/afmt.h"
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
22 #include "../libvo/fastmemcpy.h"
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
23
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
24 void free_demuxer_stream(demux_stream_t *ds){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
25 ds_free_packs(ds);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
26 free(ds);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
27 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
28
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 demux_stream_t* new_demuxer_stream(struct demuxer_st *demuxer,int id){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 demux_stream_t* ds=malloc(sizeof(demux_stream_t));
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 ds->buffer_pos=ds->buffer_size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 ds->buffer=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 ds->pts=0;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
34 ds->pts_bytes=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 ds->eof=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 ds->pos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 ds->dpos=0;
889
1b905517c684 AVI -bps desync problem solved
arpi_esp
parents: 828
diff changeset
38 ds->pack_no=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 //---------------
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 ds->packs=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 ds->bytes=0;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
42 ds->first=ds->last=ds->current=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 ds->id=id;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 ds->demuxer=demuxer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 //----------------
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 ds->asf_seq=-1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 ds->asf_packet=NULL;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents: 1
diff changeset
48 //----------------
7754
0568245deeb8 ss_div/ss_mul defaults to 0
arpi
parents: 7594
diff changeset
49 ds->ss_mul=ds->ss_div=0;
2419
24ba3dfb8e89 compressed mov audio fixed
arpi
parents: 2338
diff changeset
50 //----------------
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents: 1
diff changeset
51 ds->sh=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 return ds;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54
552
c2a449f90087 dvd sub support reading
arpi_esp
parents: 291
diff changeset
55 demuxer_t* new_demuxer(stream_t *stream,int type,int a_id,int v_id,int s_id){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 demuxer_t *d=malloc(sizeof(demuxer_t));
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
57 memset(d,0,sizeof(demuxer_t));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 d->stream=stream;
598
c7117e17e20b OSD seekbar fixed for mpeg/VCD
arpi_esp
parents: 587
diff changeset
59 d->movi_start=stream->start_pos;
c7117e17e20b OSD seekbar fixed for mpeg/VCD
arpi_esp
parents: 587
diff changeset
60 d->movi_end=stream->end_pos;
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
61 d->seekable=1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 d->synced=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 d->filepos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 d->audio=new_demuxer_stream(d,a_id);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 d->video=new_demuxer_stream(d,v_id);
552
c2a449f90087 dvd sub support reading
arpi_esp
parents: 291
diff changeset
66 d->sub=new_demuxer_stream(d,s_id);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 d->type=type;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
68 stream_reset(stream);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
69 stream_seek(stream,stream->start_pos);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 return d;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
73 sh_audio_t* new_sh_audio(demuxer_t *demuxer,int id){
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
74 if(id > MAX_A_STREAMS-1 || id < 0)
4642
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
75 {
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
76 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested audio stream id overflow (%d > %d)\n",
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
77 id, MAX_A_STREAMS);
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
78 return NULL;
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
79 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
80 if(demuxer->a_streams[id]){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
81 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_AudioStreamRedefined,id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
82 } else {
13357
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
83 sh_audio_t *sh;
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
84 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_FoundAudioStream,id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
85 demuxer->a_streams[id]=malloc(sizeof(sh_audio_t));
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
86 memset(demuxer->a_streams[id],0,sizeof(sh_audio_t));
13357
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
87 sh = demuxer->a_streams[id];
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
88 // set some defaults
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
89 sh->samplesize=2;
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
90 sh->sample_format=AFMT_S16_NE;
c605df89ca9f moved sh_audio initialization from dec_audio to demuxer.c to fix
reimar
parents: 13301
diff changeset
91 sh->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
92 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
93 return demuxer->a_streams[id];
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
94 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
95
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
96 void free_sh_audio(sh_audio_t* sh){
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
97 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing sh_audio at %p \n",sh);
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
98 if(sh->wf) free(sh->wf);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
99 free(sh);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
100 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
101
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
102 sh_video_t* new_sh_video(demuxer_t *demuxer,int id){
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
103 if(id > MAX_V_STREAMS-1 || id < 0)
4642
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
104 {
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
105 mp_msg(MSGT_DEMUXER,MSGL_WARN,"Requested video stream id overflow (%d > %d)\n",
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
106 id, MAX_V_STREAMS);
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
107 return NULL;
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
108 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
109 if(demuxer->v_streams[id]){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
110 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_VideoStreamRedefined,id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
111 } else {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
112 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_FoundVideoStream,id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
113 demuxer->v_streams[id]=malloc(sizeof(sh_video_t));
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
114 memset(demuxer->v_streams[id],0,sizeof(sh_video_t));
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
115 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
116 return demuxer->v_streams[id];
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
117 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
118
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
119 void free_sh_video(sh_video_t* sh){
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
120 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing sh_video at %p \n",sh);
1657
f6d3c1287748 freeing video buffer
arpi
parents: 1643
diff changeset
121 if(sh->bih) free(sh->bih);
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
122 free(sh);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
123 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
124
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
125 extern void demux_close_vivo(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
126 extern void demux_close_real(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
127 extern void demux_close_y4m(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
128 extern void demux_close_mf(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
129 extern void demux_close_roq(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
130 extern void demux_close_film(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
131 extern void demux_close_bmp(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
132 extern void demux_close_fli(demuxer_t* demuxer);
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
133 extern void demux_close_nsv(demuxer_t* demuxer);
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
134 extern void demux_close_nuv(demuxer_t* demuxer);
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
135 extern void demux_close_audio(demuxer_t* demuxer);
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
136 extern void demux_close_ogg(demuxer_t* demuxer);
13738
39004f891def seeking based on the largest timestamp in an mpeg stream
aurel
parents: 13686
diff changeset
137 extern void demux_close_mpg(demuxer_t* demuxer);
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
138 extern void demux_close_rtp(demuxer_t* demuxer);
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
139 extern void demux_close_demuxers(demuxer_t* demuxer);
6816
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
140 extern void demux_close_avi(demuxer_t *demuxer);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
141 extern void demux_close_rawdv(demuxer_t* demuxer);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
142 extern void demux_close_pva(demuxer_t* demuxer);
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
143 extern void demux_close_smjpeg(demuxer_t* demuxer);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
144 extern void demux_close_xmms(demuxer_t* demuxer);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
145 extern void demux_close_gif(demuxer_t* demuxer);
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
146 extern void demux_close_lmlm4(demuxer_t* demuxer);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
147 extern void demux_close_ts(demuxer_t* demuxer);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
148 extern void demux_close_mkv(demuxer_t* demuxer);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
149 extern void demux_close_ra(demuxer_t* demuxer);
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
150 extern void demux_close_ty(demuxer_t* demuxer);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
151 extern void demux_close_lavf(demuxer_t* demuxer);
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
152
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
153
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
154 #ifdef USE_TV
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
155 #include "tv.h"
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
156 extern int tv_param_on;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
157
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
158 extern int demux_tv_fill_buffer(demuxer_t *demux, demux_stream_t *ds);
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
159 extern int demux_open_tv(demuxer_t *demuxer);
10538
dd2572331142 10l - some forgotten ifdefs
henry
parents: 10442
diff changeset
160 #if defined(USE_TV) && (defined(HAVE_TV_V4L) || defined(HAVE_TV_V4L2))
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
161 extern void demux_close_tv(demuxer_t *demuxer);
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
162 #endif
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
163 #endif
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
164
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
165 void free_demuxer(demuxer_t *demuxer){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
166 int i;
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
167 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing demuxer at %p \n",demuxer);
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
168 switch(demuxer->type) {
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
169 case DEMUXER_TYPE_PVA:
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
170 demux_close_pva(demuxer); break;
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
171 case DEMUXER_TYPE_VIVO:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
172 demux_close_vivo(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
173 case DEMUXER_TYPE_REAL:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
174 demux_close_real(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
175 case DEMUXER_TYPE_Y4M:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
176 demux_close_y4m(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
177 case DEMUXER_TYPE_MF:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
178 demux_close_mf(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
179 case DEMUXER_TYPE_ROQ:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
180 demux_close_roq(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
181 case DEMUXER_TYPE_FILM:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
182 demux_close_film(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
183 case DEMUXER_TYPE_BMP:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
184 demux_close_bmp(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
185 case DEMUXER_TYPE_FLI:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
186 demux_close_fli(demuxer); break;
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
187 case DEMUXER_TYPE_NSV:
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
188 demux_close_nsv(demuxer); break;
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
189 case DEMUXER_TYPE_NUV:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
190 demux_close_nuv(demuxer); break;
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
191 case DEMUXER_TYPE_MPEG_TY:
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
192 demux_close_ty(demuxer); break;
10538
dd2572331142 10l - some forgotten ifdefs
henry
parents: 10442
diff changeset
193 #if defined(USE_TV) && (defined(HAVE_TV_V4L) || defined(HAVE_TV_V4L2))
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
194 case DEMUXER_TYPE_TV:
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
195 demux_close_tv(demuxer); break;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
196 #endif
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
197 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
198 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
199 demux_close_rawdv(demuxer); break;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
200 #endif
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
201 case DEMUXER_TYPE_AUDIO:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
202 demux_close_audio(demuxer); break;
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
203 #ifdef HAVE_OGGVORBIS
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
204 case DEMUXER_TYPE_OGG:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
205 demux_close_ogg(demuxer); break;
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
206 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
207 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
208 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
209 demux_close_mkv(demuxer); break;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
210 #endif
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
211 #ifdef STREAMING_LIVE_DOT_COM
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
212 case DEMUXER_TYPE_RTP:
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
213 demux_close_rtp(demuxer); break;
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
214 #endif
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
215 case DEMUXER_TYPE_SMJPEG:
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
216 demux_close_smjpeg(demuxer); return;
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
217 case DEMUXER_TYPE_DEMUXERS:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
218 demux_close_demuxers(demuxer); return;
6816
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
219 case DEMUXER_TYPE_AVI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
220 case DEMUXER_TYPE_AVI_NI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
221 case DEMUXER_TYPE_AVI_NINI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
222 demux_close_avi(demuxer); return;
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
223 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
224 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
225 demux_close_xmms(demuxer); break;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
226 #endif
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
227 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
228 case DEMUXER_TYPE_GIF:
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
229 demux_close_gif(demuxer); break;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
230 #endif
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
231 case DEMUXER_TYPE_LMLM4:
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
232 demux_close_lmlm4(demuxer); break;
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
233 case DEMUXER_TYPE_MPEG_TS:
10687
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
234 case DEMUXER_TYPE_MPEG4_IN_TS:
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
235 demux_close_ts(demuxer); break;
13738
39004f891def seeking based on the largest timestamp in an mpeg stream
aurel
parents: 13686
diff changeset
236 case DEMUXER_TYPE_MPEG_PS:
39004f891def seeking based on the largest timestamp in an mpeg stream
aurel
parents: 13686
diff changeset
237 demux_close_mpg(demuxer); break;
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
238 case DEMUXER_TYPE_REALAUDIO:
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
239 demux_close_ra(demuxer); break;
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
240 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
241 case DEMUXER_TYPE_LAVF:
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
242 demux_close_lavf(demuxer); break;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
243 #endif
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
244 }
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
245 // free streams:
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
246 for(i=0;i<256;i++){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
247 if(demuxer->a_streams[i]) free_sh_audio(demuxer->a_streams[i]);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
248 if(demuxer->v_streams[i]) free_sh_video(demuxer->v_streams[i]);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
249 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
250 //if(sh_audio) free_sh_audio(sh_audio);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
251 //if(sh_video) free_sh_video(sh_video);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
252 // free demuxers:
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
253 free_demuxer_stream(demuxer->audio);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
254 free_demuxer_stream(demuxer->video);
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
255 free_demuxer_stream(demuxer->sub);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
256 if(demuxer->info) {
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
257 for(i=0;demuxer->info[i] != NULL; i++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
258 free(demuxer->info[i]);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
259 free(demuxer->info);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
260 }
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
261 free(demuxer);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
262 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
263
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
264
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
265 void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
266 // demux_packet_t* dp=new_demux_packet(len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
267 // stream_read(stream,dp->buffer,len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 // dp->pts=pts; //(float)pts/90000.0f;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
269 // dp->pos=pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270 // append packet to DS stream:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271 ++ds->packs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
272 ds->bytes+=dp->len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 if(ds->last){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
274 // next packet in stream
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
275 ds->last->next=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
276 ds->last=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
277 } else {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
278 // first packet in stream
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 ds->first=ds->last=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
281 mp_dbg(MSGT_DEMUXER,MSGL_DBG2,"DEMUX: Append packet to %s, len=%d pts=%5.3f pos=%u [packs: A=%d V=%d]\n",
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282 (ds==ds->demuxer->audio)?"d_audio":"d_video",
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
283 dp->len,dp->pts,(unsigned int)dp->pos,ds->demuxer->audio->packs,ds->demuxer->video->packs);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
286 void ds_read_packet(demux_stream_t *ds,stream_t *stream,int len,float pts,off_t pos,int flags){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
287 demux_packet_t* dp=new_demux_packet(len);
10891
65ed62e138fa Fixed 'reading after EOF'. demuxers didn't check, how many they've read!
lumag
parents: 10882
diff changeset
288 len = stream_read(stream,dp->buffer,len);
65ed62e138fa Fixed 'reading after EOF'. demuxers didn't check, how many they've read!
lumag
parents: 10882
diff changeset
289 resize_demux_packet(dp, len);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
290 dp->pts=pts; //(float)pts/90000.0f;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
291 dp->pos=pos;
979
3bcc435cd5a2 keyframe flag added
arpi_esp
parents: 889
diff changeset
292 dp->flags=flags;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
293 // append packet to DS stream:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
294 ds_add_packet(ds,dp);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
295 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
296
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297 // return value:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
298 // 0 = EOF or no stream found or invalid type
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 // 1 = successfully read a packet
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
300 int demux_mf_fill_buffer( demuxer_t *demux);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
301 int demux_roq_fill_buffer(demuxer_t *demux);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
302 int demux_film_fill_buffer(demuxer_t *demux);
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
303 int demux_bmp_fill_buffer(demuxer_t *demux);
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
304 int demux_fli_fill_buffer(demuxer_t *demux);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305 int demux_mpg_es_fill_buffer(demuxer_t *demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306 int demux_mpg_fill_buffer(demuxer_t *demux);
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
307 int demux_ty_fill_buffer(demuxer_t *demux);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308 int demux_avi_fill_buffer(demuxer_t *demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t *ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310 int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t *ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311 int demux_asf_fill_buffer(demuxer_t *demux);
2106
0ad08f8e49b9 ehh. 10l. required for MOV
arpi
parents: 2050
diff changeset
312 int demux_mov_fill_buffer(demuxer_t *demux,demux_stream_t* ds);
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
313 int demux_vivo_fill_buffer(demuxer_t *demux);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
314 int demux_real_fill_buffer(demuxer_t *demuxer);
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
315 int demux_nsv_fill_buffer(demuxer_t *demux);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
316 int demux_nuv_fill_buffer(demuxer_t *demux);
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
317 int demux_rtp_fill_buffer(demuxer_t *demux, demux_stream_t* ds);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
318 int demux_rawdv_fill_buffer(demuxer_t *demuxer);
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
319 int demux_y4m_fill_buffer(demuxer_t *demux);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
320 int demux_audio_fill_buffer(demux_stream_t *ds);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
321 int demux_pva_fill_buffer(demuxer_t *demux);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
322 int demux_xmms_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
323 int demux_gif_fill_buffer(demuxer_t *demux);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
324 int demux_ts_fill_buffer(demuxer_t *demux);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
325 int demux_ra_fill_buffer(demuxer_t *demux);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
326
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
327 extern int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds);
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
328 extern int demux_ogg_fill_buffer(demuxer_t *d);
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
329 extern int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
330 extern int demux_rawvideo_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds);
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
331 extern int demux_smjpeg_fill_buffer(demuxer_t* demux);
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
332 extern int demux_lmlm4_fill_buffer(demuxer_t* demux);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
333 extern int demux_mkv_fill_buffer(demuxer_t *d);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
334 extern int demux_lavf_fill_buffer(demuxer_t *d);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
335
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
336 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
337 // Note: parameter 'ds' can be NULL!
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
338 // printf("demux->type=%d\n",demux->type);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
339 switch(demux->type){
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
340 case DEMUXER_TYPE_MF: return demux_mf_fill_buffer(demux);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
341 case DEMUXER_TYPE_ROQ: return demux_roq_fill_buffer(demux);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
342 case DEMUXER_TYPE_FILM: return demux_film_fill_buffer(demux);
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
343 case DEMUXER_TYPE_BMP: return demux_bmp_fill_buffer(demux);
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
344 case DEMUXER_TYPE_FLI: return demux_fli_fill_buffer(demux);
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
345 case DEMUXER_TYPE_MPEG_TY: return demux_ty_fill_buffer( demux );
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
346 case DEMUXER_TYPE_MPEG4_ES:
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
347 case DEMUXER_TYPE_H264_ES:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
348 case DEMUXER_TYPE_MPEG_ES: return demux_mpg_es_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
349 case DEMUXER_TYPE_MPEG_PS: return demux_mpg_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
350 case DEMUXER_TYPE_AVI: return demux_avi_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
351 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
352 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
353 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux);
2106
0ad08f8e49b9 ehh. 10l. required for MOV
arpi
parents: 2050
diff changeset
354 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds);
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
355 case DEMUXER_TYPE_VIVO: return demux_vivo_fill_buffer(demux);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
356 case DEMUXER_TYPE_PVA: return demux_pva_fill_buffer(demux);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
357 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
358 case DEMUXER_TYPE_RAWDV: return demux_rawdv_fill_buffer(demux);
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
359 #endif
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
360 case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux);
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
361 case DEMUXER_TYPE_NSV: return demux_nsv_fill_buffer(demux);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
362 case DEMUXER_TYPE_NUV: return demux_nuv_fill_buffer(demux);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
363 #ifdef USE_TV
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
364 case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, ds);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
365 #endif
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
366 case DEMUXER_TYPE_Y4M: return demux_y4m_fill_buffer(demux);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
367 case DEMUXER_TYPE_AUDIO: return demux_audio_fill_buffer(ds);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
368 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
369 case DEMUXER_TYPE_XMMS: return demux_xmms_fill_buffer(demux,ds);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
370 #endif
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
371 case DEMUXER_TYPE_DEMUXERS: return demux_demuxers_fill_buffer(demux,ds);
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
372 #ifdef HAVE_OGGVORBIS
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
373 case DEMUXER_TYPE_OGG: return demux_ogg_fill_buffer(demux);
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
374 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
375 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
376 case DEMUXER_TYPE_MATROSKA: return demux_mkv_fill_buffer(demux);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
377 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
378 case DEMUXER_TYPE_RAWAUDIO: return demux_rawaudio_fill_buffer(demux,ds);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
379 case DEMUXER_TYPE_RAWVIDEO: return demux_rawvideo_fill_buffer(demux,ds);
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
380 #ifdef STREAMING_LIVE_DOT_COM
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
381 case DEMUXER_TYPE_RTP: return demux_rtp_fill_buffer(demux, ds);
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
382 #endif
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
383 case DEMUXER_TYPE_SMJPEG: return demux_smjpeg_fill_buffer(demux);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
384 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
385 case DEMUXER_TYPE_GIF: return demux_gif_fill_buffer(demux);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
386 #endif
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
387 case DEMUXER_TYPE_LMLM4: return demux_lmlm4_fill_buffer(demux);
10687
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
388 case DEMUXER_TYPE_MPEG_TS:
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
389 case DEMUXER_TYPE_MPEG4_IN_TS:
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
390 return demux_ts_fill_buffer(demux);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
391 case DEMUXER_TYPE_REALAUDIO: return demux_ra_fill_buffer(demux);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
392 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
393 case DEMUXER_TYPE_LAVF: return demux_lavf_fill_buffer(demux);
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
394 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
395 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
396 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
397 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
398
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
399 // return value:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
400 // 0 = EOF
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
401 // 1 = succesfull
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
402 int ds_fill_buffer(demux_stream_t *ds){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
403 demuxer_t *demux=ds->demuxer;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
404 if(ds->current) free_demux_packet(ds->current);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
405 if(verbose>2){
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
406 if(ds==demux->audio) mp_dbg(MSGT_DEMUXER,MSGL_DBG3,"ds_fill_buffer(d_audio) called\n");else
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
407 if(ds==demux->video) mp_dbg(MSGT_DEMUXER,MSGL_DBG3,"ds_fill_buffer(d_video) called\n");else
5470
e80d66b5e4a7 added debug printf for dvdsub - from dvdnav patch by Kees Cook <mplayer@outflux.net>
arpi
parents: 5469
diff changeset
408 if(ds==demux->sub) mp_dbg(MSGT_DEMUXER,MSGL_DBG3,"ds_fill_buffer(d_sub) called\n");else
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
409 mp_dbg(MSGT_DEMUXER,MSGL_DBG3,"ds_fill_buffer(unknown 0x%X) called\n",(unsigned int)ds);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
410 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 while(1){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 if(ds->packs){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413 demux_packet_t *p=ds->first;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 // copy useful data:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 ds->buffer=p->buffer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 ds->buffer_pos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 ds->buffer_size=p->len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 ds->pos=p->pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 ds->dpos+=p->len; // !!!
889
1b905517c684 AVI -bps desync problem solved
arpi_esp
parents: 828
diff changeset
420 ++ds->pack_no;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
421 if(p->pts){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
422 ds->pts=p->pts;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
423 ds->pts_bytes=0;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
424 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
425 ds->pts_bytes+=p->len; // !!!
979
3bcc435cd5a2 keyframe flag added
arpi_esp
parents: 889
diff changeset
426 ds->flags=p->flags;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
427 // unlink packet:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
428 ds->bytes-=p->len;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
429 ds->current=p;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 ds->first=p->next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
431 if(!ds->first) ds->last=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
432 --ds->packs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433 return 1; //ds->buffer_size;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
435 if(demux->audio->packs>=MAX_PACKS || demux->audio->bytes>=MAX_PACK_BYTES){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
436 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes);
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
437 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
438 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
439 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
440 if(demux->video->packs>=MAX_PACKS || demux->video->bytes>=MAX_PACK_BYTES){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
441 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes);
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
442 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
443 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
444 }
1421
ea0a0b9e6fbc nosound avi seeking fixed
arpi
parents: 1401
diff changeset
445 if(!demux_fill_buffer(demux,ds)){
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
446 mp_dbg(MSGT_DEMUXER,MSGL_DBG2,"ds_fill_buffer()->demux_fill_buffer() failed\n");
1421
ea0a0b9e6fbc nosound avi seeking fixed
arpi
parents: 1401
diff changeset
447 break; // EOF
ea0a0b9e6fbc nosound avi seeking fixed
arpi
parents: 1401
diff changeset
448 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
449 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
450 ds->buffer_pos=ds->buffer_size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
451 ds->buffer=NULL;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
452 ds->current=NULL;
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
453 mp_msg(MSGT_DEMUXER,MSGL_V,"ds_fill_buffer: EOF reached (stream: %s) \n",ds==demux->audio?"audio":"video");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
454 ds->eof=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
455 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
456 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
457
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
458 int demux_read_data(demux_stream_t *ds,unsigned char* mem,int len){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
459 int x;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
460 int bytes=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
461 while(len>0){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
462 x=ds->buffer_size-ds->buffer_pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463 if(x==0){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 if(!ds_fill_buffer(ds)) return bytes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465 } else {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
466 if(x>len) x=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467 if(mem) memcpy(mem+bytes,&ds->buffer[ds->buffer_pos],x);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468 bytes+=x;len-=x;ds->buffer_pos+=x;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
469 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
470 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
471 return bytes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
472 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
474 int demux_read_data_pack(demux_stream_t *ds,unsigned char* mem,int len){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
475 int x;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
476 int bytes=0;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
477 while(len>0){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
478 x=ds->buffer_size-ds->buffer_pos;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
479 if(x==0){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
480 if(!ds_fill_buffer(ds)) return bytes;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
481 } else {
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
482 if(x>len) x=len;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
483 if(mem) memcpy(mem+bytes,&ds->buffer[ds->buffer_pos],x);
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
484 bytes+=x;len-=x;ds->buffer_pos+=x;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
485 return bytes; // stop at end of package! (for correct timestamping)
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
486 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
487 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
488 return bytes;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
489 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
490
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
491
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
492 void ds_free_packs(demux_stream_t *ds){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
493 demux_packet_t *dp=ds->first;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
494 while(dp){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
495 demux_packet_t *dn=dp->next;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
496 free_demux_packet(dp);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
497 dp=dn;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
498 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
499 if(ds->asf_packet){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
500 // free unfinished .asf fragments:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
501 free(ds->asf_packet->buffer);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
502 free(ds->asf_packet);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
503 ds->asf_packet=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
504 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
505 ds->first=ds->last=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
506 ds->packs=0; // !!!!!
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
507 ds->bytes=0;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
508 if(ds->current) free_demux_packet(ds->current);
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
509 ds->current=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510 ds->buffer=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
511 ds->buffer_pos=ds->buffer_size;
828
c71695c30006 added pts_bytes=0 to ds_free_packs
arpi_esp
parents: 746
diff changeset
512 ds->pts=0; ds->pts_bytes=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
513 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
514
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
515 int ds_get_packet(demux_stream_t *ds,unsigned char **start){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
516 while(1){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
517 int len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
518 if(ds->buffer_pos>=ds->buffer_size){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
519 if(!ds_fill_buffer(ds)){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
520 // EOF
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
521 *start = NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
522 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
523 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
524 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
525 len=ds->buffer_size-ds->buffer_pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
526 *start = &ds->buffer[ds->buffer_pos];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
527 ds->buffer_pos+=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
528 return len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
529 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
530 }
554
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
531
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
532 int ds_get_packet_sub(demux_stream_t *ds,unsigned char **start){
554
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
533 while(1){
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
534 int len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
535 if(ds->buffer_pos>=ds->buffer_size){
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
536 *start = NULL;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
537 if(!ds->packs) return -1; // no sub
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
538 if(!ds_fill_buffer(ds)) return -1; // EOF
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
539 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
540 len=ds->buffer_size-ds->buffer_pos;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
541 *start = &ds->buffer[ds->buffer_pos];
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
542 ds->buffer_pos+=len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
543 return len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
544 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
545 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
546
5930
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
547 float ds_get_next_pts(demux_stream_t *ds) {
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
548 demuxer_t* demux = ds->demuxer;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
549 while(!ds->first) {
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
550 if(demux->audio->packs>=MAX_PACKS || demux->audio->bytes>=MAX_PACK_BYTES){
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
551 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes);
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
552 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
553 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
554 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
555 if(demux->video->packs>=MAX_PACKS || demux->video->bytes>=MAX_PACK_BYTES){
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
556 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes);
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
557 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
558 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
559 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
560 if(!demux_fill_buffer(demux,ds))
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
561 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
562 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
563 return ds->first->pts;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
564 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
565
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
566 // ====================================================================
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
567
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
568 // feed-back from demuxers:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
569 extern int num_elementary_packets100; // for MPEG-ES fileformat detection
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
570 extern int num_elementary_packets101;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
571 extern int num_elementary_packetsPES;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
572 extern int num_elementary_packets1B6;
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
573 extern int num_elementary_packets12x;
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
574 extern int num_h264_slice; //combined slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
575 extern int num_h264_dpa; //DPA Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
576 extern int num_h264_dpb; //DPB Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
577 extern int num_h264_dpc; //DPC Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
578 extern int num_h264_idr; //IDR Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
579 extern int num_h264_sps;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
580 extern int num_h264_pps;
4735
21eca91fece7 ehh, i forgot to commit this...
arpi
parents: 4696
diff changeset
581 extern int num_mp3audio_packets;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
582
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
583 // commandline options, flags:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
584 extern int force_ni;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
585 extern int pts_from_bps;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
586
7559
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
587 //extern int audio_id;
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
588 //extern int video_id;
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
589 //extern int dvdsub_id;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
590
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
591 int asf_check_header(demuxer_t *demuxer);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
592 int read_asf_header(demuxer_t *demuxer);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
593 demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id);
2050
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
594 demuxer_t* demux_open_avi(demuxer_t* demuxer);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
595 int mov_check_file(demuxer_t* demuxer);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
596 int mov_read_header(demuxer_t* demuxer);
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
597 int demux_open_fli(demuxer_t* demuxer);
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
598 int demux_open_mf(demuxer_t* demuxer);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
599 int demux_open_film(demuxer_t* demuxer);
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
600 int demux_open_bmp(demuxer_t* demuxer);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
601 int demux_open_roq(demuxer_t* demuxer);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
602 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
603 int demux_open_rawdv(demuxer_t* demuxer);
7594
a715a0960762 This just corrects a function name to match the other demuxer's
arpi
parents: 7559
diff changeset
604 extern int rawdv_check_file(demuxer_t *demuxer);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
605 #endif
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
606
2931
bce9c945b29c tv interface update
alex
parents: 2881
diff changeset
607 extern int vivo_check_file(demuxer_t *demuxer);
bce9c945b29c tv interface update
alex
parents: 2881
diff changeset
608 extern void demux_open_vivo(demuxer_t *demuxer);
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
609 extern int y4m_check_file(demuxer_t *demuxer);
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
610 extern void demux_open_y4m(demuxer_t *demuxer);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
611 extern int roq_check_file(demuxer_t *demuxer);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
612 extern int pva_check_file(demuxer_t * demuxer);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 8056
diff changeset
613 extern demuxer_t * demux_open_pva(demuxer_t * demuxer);
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
614 extern int real_check_file(demuxer_t *demuxer);
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
615 extern void demux_open_real(demuxer_t *demuxer);
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
616 extern int nsv_check_file(demuxer_t *demuxer);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
617 extern int nuv_check_file(demuxer_t *demuxer);
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
618 extern void demux_open_nsv(demuxer_t *demuxer);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
619 extern void demux_open_nuv(demuxer_t *demuxer);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
620 extern int demux_audio_open(demuxer_t* demuxer);
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
621 extern int demux_ogg_open(demuxer_t* demuxer);
13738
39004f891def seeking based on the largest timestamp in an mpeg stream
aurel
parents: 13686
diff changeset
622 extern int demux_mpg_open(demuxer_t* demuxer);
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
623 extern int demux_rawaudio_open(demuxer_t* demuxer);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
624 extern int demux_rawvideo_open(demuxer_t* demuxer);
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
625 extern int smjpeg_check_file(demuxer_t *demuxer);
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
626 extern int demux_open_smjpeg(demuxer_t* demuxer);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 8056
diff changeset
627 extern int bmp_check_file(demuxer_t *demuxer);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
628 extern int demux_xmms_open(demuxer_t* demuxer);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
629 extern int gif_check_file(demuxer_t *demuxer);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
630 extern int demux_open_gif(demuxer_t* demuxer);
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
631 extern int lmlm4_check_file(demuxer_t* demuxer);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
632 extern int demux_open_lmlm4(demuxer_t* demuxer);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
633 extern int ts_check_file(demuxer_t * demuxer);
10221
75c4595b0ffd warning fixes Raindel Shachar <raindel@techunix.technion.ac.il>
alex
parents: 10164
diff changeset
634 extern int demux_open_ts(demuxer_t *demuxer);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
635 extern int demux_open_mkv(demuxer_t *demuxer);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
636 extern int ra_check_file(demuxer_t *demuxer);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
637 extern int demux_open_ra(demuxer_t* demuxer);
11576
2c9e2da67647 Fixes for a couple of warnings.
mosu
parents: 11575
diff changeset
638 #ifdef HAVE_MATROSKA
2c9e2da67647 Fixes for a couple of warnings.
mosu
parents: 11575
diff changeset
639 extern int demux_mkv_open(demuxer_t *demuxer);
2c9e2da67647 Fixes for a couple of warnings.
mosu
parents: 11575
diff changeset
640 #endif
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
641 extern int lavf_check_file(demuxer_t *demuxer);
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
642 extern int demux_open_lavf(demuxer_t* demuxer);
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
643
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
644 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer);
13450
043571569005 missing extern
rathann
parents: 13357
diff changeset
645 #ifdef STREAMING_LIVE_DOT_COM
043571569005 missing extern
rathann
parents: 13357
diff changeset
646 extern demuxer_t* demux_open_rtp(demuxer_t* demuxer);
043571569005 missing extern
rathann
parents: 13357
diff changeset
647 #endif
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
648
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
649 int extension_parsing=1; // 0=off 1=mixed (used only for unstable formats)
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
650
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
651 /*
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
652 NOTE : Several demuxers may be opened at the same time so
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
653 demuxers should NEVER rely on an external var to enable them
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
654 self. If a demuxer can't do any autodection it should only use
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
655 file_format. The user can explictly set file_format with the -demuxer
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
656 option so there is really no need for another extra var.
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
657 For conivence an option can be added to set file_format directly
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
658 to the right type (ex: rawaudio,rawvideo).
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
659 Also the stream can override the file_format so a demuxer wich rely
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
660 on a special stream type can set file_format at the stream level
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
661 (ex: tv,mf).
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
662 */
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
663
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
664 static demuxer_t* demux_open_stream(stream_t *stream,int file_format,int audio_id,int video_id,int dvdsub_id,char* filename){
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
665
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
666 //int file_format=(*file_format_ptr);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
667
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
668 demuxer_t *demuxer=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
669
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
670 demux_stream_t *d_audio=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
671 demux_stream_t *d_video=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
672
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
673 sh_audio_t *sh_audio=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
674 sh_video_t *sh_video=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
675
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
676 //printf("demux_open(%p,%d,%d,%d,%d) \n",stream,file_format,audio_id,video_id,dvdsub_id);
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
677
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
678 if(file_format == DEMUXER_TYPE_RAWAUDIO) {
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
679 demuxer = new_demuxer(stream,DEMUXER_TYPE_RAWAUDIO,audio_id,video_id,dvdsub_id);
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
680 }
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
681 if(file_format == DEMUXER_TYPE_RAWVIDEO) {
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
682 demuxer = new_demuxer(stream,DEMUXER_TYPE_RAWVIDEO,audio_id,video_id,dvdsub_id);
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
683 }
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
684
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
685 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
686 //=============== Try to open as TV-input: =================
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
687 if(file_format==DEMUXER_TYPE_TV){
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
688 demuxer=new_demuxer(stream,DEMUXER_TYPE_TV,audio_id,video_id,dvdsub_id);
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
689 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedTV);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
690 }
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
691 #endif
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
692
6942
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
693 //=============== Try to open as multi file: =================
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
694 if(file_format==DEMUXER_TYPE_MF){
6942
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
695 demuxer=new_demuxer(stream,DEMUXER_TYPE_MF,audio_id,video_id,dvdsub_id);
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
696 mp_msg( MSGT_DEMUXER,MSGL_INFO,"[demuxer] mf support.\n" );
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
697 }
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
698
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
699 //=============== Try to open as AVI file: =================
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
700 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_AVI){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
701 demuxer=new_demuxer(stream,DEMUXER_TYPE_AVI,audio_id,video_id,dvdsub_id);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
702 { //---- RIFF header:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
703 int id=stream_read_dword_le(demuxer->stream); // "RIFF"
13588
d1ff5291daed Support ON2 variation of AVI format (.vp5 files)
rtognimp
parents: 13520
diff changeset
704 if((id==mmioFOURCC('R','I','F','F')) || (id==mmioFOURCC('O','N','2',' '))){
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
705 stream_read_dword_le(demuxer->stream); //filesize
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
706 id=stream_read_dword_le(demuxer->stream); // "AVI "
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
707 if(id==formtypeAVI){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
708 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"AVI");
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
709 file_format=DEMUXER_TYPE_AVI;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
710 }
13588
d1ff5291daed Support ON2 variation of AVI format (.vp5 files)
rtognimp
parents: 13520
diff changeset
711 if(id==mmioFOURCC('O','N','2','f')){
d1ff5291daed Support ON2 variation of AVI format (.vp5 files)
rtognimp
parents: 13520
diff changeset
712 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"ON2 AVI");
d1ff5291daed Support ON2 variation of AVI format (.vp5 files)
rtognimp
parents: 13520
diff changeset
713 file_format=DEMUXER_TYPE_AVI;
d1ff5291daed Support ON2 variation of AVI format (.vp5 files)
rtognimp
parents: 13520
diff changeset
714 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
715 }
13520
5f4f9de738b2 fixed small memleak
reimar
parents: 13450
diff changeset
716 if (file_format==DEMUXER_TYPE_UNKNOWN) {
5f4f9de738b2 fixed small memleak
reimar
parents: 13450
diff changeset
717 free_demuxer(demuxer);
5f4f9de738b2 fixed small memleak
reimar
parents: 13450
diff changeset
718 demuxer = NULL;
5f4f9de738b2 fixed small memleak
reimar
parents: 13450
diff changeset
719 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
720 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
721 }
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
722 //=============== Try to open as Y4M file: =================
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
723 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_Y4M){
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
724 demuxer=new_demuxer(stream,DEMUXER_TYPE_Y4M,audio_id,video_id,dvdsub_id);
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
725 if(y4m_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
726 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"YUV4MPEG2");
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
727 file_format=DEMUXER_TYPE_Y4M;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
728 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
729 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
730 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
731 }
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
732 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
733 //=============== Try to open as ASF file: =================
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
734 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_ASF){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
735 demuxer=new_demuxer(stream,DEMUXER_TYPE_ASF,audio_id,video_id,dvdsub_id);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
736 if(asf_check_header(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
737 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"ASF");
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
738 file_format=DEMUXER_TYPE_ASF;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
739 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
740 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
741 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
742 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
743 }
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
744 //=============== Try to open as NSV file: =================
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
745 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NSV){
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
746 demuxer=new_demuxer(stream,DEMUXER_TYPE_NSV,audio_id,video_id,dvdsub_id);
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
747 if(file_format==DEMUXER_TYPE_NSV||nsv_check_file(demuxer)){
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
748 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"Nullsoft Streaming Video");
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
749 file_format=DEMUXER_TYPE_NSV;
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
750 } else {
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
751 free_demuxer(demuxer);
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
752 demuxer = NULL;
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
753 }
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
754 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
755 //=============== Try to open as NUV file: =================
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
756 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_NUV){
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
757 demuxer=new_demuxer(stream,DEMUXER_TYPE_NUV,audio_id,video_id,dvdsub_id);
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
758 if(nuv_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
759 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"NuppelVideo");
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
760 file_format=DEMUXER_TYPE_NUV;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
761 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
762 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
763 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
764 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
765 }
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
766 //=============== Try to open as REAL file: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
767 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REAL){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
768 demuxer=new_demuxer(stream,DEMUXER_TYPE_REAL,audio_id,video_id,dvdsub_id);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
769 if(real_check_file(demuxer)){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
770 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REAL");
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
771 file_format=DEMUXER_TYPE_REAL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
772 } else {
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
773 free_demuxer(demuxer);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
774 demuxer = NULL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
775 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
776 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
777 //=============== Try to open as SMJPEG file: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
778 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_SMJPEG){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
779 demuxer=new_demuxer(stream,DEMUXER_TYPE_SMJPEG,audio_id,video_id,dvdsub_id);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
780 if(smjpeg_check_file(demuxer)){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
781 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"SMJPEG");
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
782 file_format=DEMUXER_TYPE_SMJPEG;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
783 } else {
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
784 free_demuxer(demuxer);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
785 demuxer = NULL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
786 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
787 }
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
788 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
789 //=============== Try to open as Matroska file: =================
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
790 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MATROSKA){
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
791 demuxer=new_demuxer(stream,DEMUXER_TYPE_MATROSKA,audio_id,video_id,dvdsub_id);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
792 if(demux_mkv_open(demuxer)){
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
793 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"Matroska");
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
794 file_format=DEMUXER_TYPE_MATROSKA;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
795 } else {
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
796 free_demuxer(demuxer);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
797 demuxer = NULL;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
798 }
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
799 }
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
800 #endif
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
801 //=============== Try to open as REALAUDIO file: =================
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
802 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REALAUDIO){
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
803 demuxer=new_demuxer(stream,DEMUXER_TYPE_REALAUDIO,audio_id,video_id,dvdsub_id);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
804 if(ra_check_file(demuxer)){
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
805 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REALAUDIO");
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
806 file_format=DEMUXER_TYPE_REALAUDIO;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
807 } else {
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
808 free_demuxer(demuxer);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
809 demuxer = NULL;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
810 }
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
811 }
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
812
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
813 //=============== Try based on filename EXTENSION: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
814 // Ok. We're over the stable detectable fileformats, the next ones are a bit
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
815 // fuzzy. So by default (extension_parsing==1) try extension-based detection
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
816 // first:
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
817 if(file_format==DEMUXER_TYPE_UNKNOWN && filename && extension_parsing==1){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
818 file_format=demuxer_type_by_filename(filename);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
819 if(file_format!=DEMUXER_TYPE_UNKNOWN){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
820 // we like recursion :)
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
821 demuxer=demux_open_stream(stream,file_format,audio_id,video_id,dvdsub_id,NULL);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
822 if(demuxer) return demuxer; // done!
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
823 file_format=DEMUXER_TYPE_UNKNOWN; // continue fuzzy guessing...
10379
296064e1baf0 fixed mpeg-ps ext-based detection sig11 bug reporetd by Raindel Shachar
arpi
parents: 10310
diff changeset
824 mp_msg(MSGT_DEMUXER,MSGL_V,"demuxer: continue fuzzy content-based format guessing...\n");
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
825 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
826 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
827
2878
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
828 //=============== Try to open as MOV file: =================
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
829 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MOV){
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
830 demuxer=new_demuxer(stream,DEMUXER_TYPE_MOV,audio_id,video_id,dvdsub_id);
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
831 if(mov_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
832 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"QuickTime/MOV");
8937
afca652cb0e5 patch adds support for MOV-Reference-Files.
arpi
parents: 8926
diff changeset
833 file_format=demuxer->type;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
834 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
835 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
836 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
837 }
2878
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
838 }
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
839 //=============== Try to open as VIVO file: =================
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
840 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_VIVO){
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
841 demuxer=new_demuxer(stream,DEMUXER_TYPE_VIVO,audio_id,video_id,dvdsub_id);
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
842 if(vivo_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
843 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "VIVO");
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
844 file_format=DEMUXER_TYPE_VIVO;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
845 } else {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
846 free_demuxer(demuxer);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
847 demuxer = NULL;
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
848 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
849 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
850 //=============== Try to open as FLI file: =================
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
851 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_FLI){
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
852 demuxer=new_demuxer(stream,DEMUXER_TYPE_FLI,audio_id,video_id,dvdsub_id);
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
853 {
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
854 int id;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
855 stream_seek(demuxer->stream, 4);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
856 id=stream_read_word_le(demuxer->stream);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
857 // check for the FLI file magic number
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
858 if((id==0xAF11) || (id==0xAF12)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
859 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"FLI");
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
860 file_format=DEMUXER_TYPE_FLI;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
861 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
862 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
863 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
864 }
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
865 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
866 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
867 //=============== Try to open as FILM file: =================
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
868 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_FILM){
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
869 demuxer=new_demuxer(stream,DEMUXER_TYPE_FILM,audio_id,video_id,dvdsub_id);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
870 {
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
871 int signature=stream_read_fourcc(demuxer->stream);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
872 // check for the FLI file magic number
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
873 if(signature==mmioFOURCC('F', 'I', 'L', 'M')){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
874 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"FILM");
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
875 file_format=DEMUXER_TYPE_FILM;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
876 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
877 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
878 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
879 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
880 }
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
881 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
882 //=============== Try to open as RoQ file: =================
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
883 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_ROQ){
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
884 demuxer=new_demuxer(stream,DEMUXER_TYPE_ROQ,audio_id,video_id,dvdsub_id);
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
885 if(roq_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
886 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"ROQ");
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
887 file_format=DEMUXER_TYPE_ROQ;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
888 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
889 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
890 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
891 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
892 }
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
893 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
894 //=============== Try to open as GIF file: =================
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
895 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_GIF){
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
896 demuxer=new_demuxer(stream,DEMUXER_TYPE_GIF,audio_id,video_id,dvdsub_id);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
897 if(gif_check_file(demuxer)){
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
898 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"GIF");
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
899 file_format=DEMUXER_TYPE_GIF;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
900 } else {
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
901 free_demuxer(demuxer);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
902 demuxer = NULL;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
903 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
904 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
905 #endif
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
906 //=============== Try to open as BMP file: =================
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
907 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_BMP){
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
908 demuxer=new_demuxer(stream,DEMUXER_TYPE_BMP,audio_id,video_id,dvdsub_id);
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
909 if(bmp_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
910 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"BMP");
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
911 file_format=DEMUXER_TYPE_BMP;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
912 } else {
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
913 free_demuxer(demuxer);
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
914 demuxer = NULL;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
915 }
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
916 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
917 #ifdef HAVE_OGGVORBIS
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
918 //=============== Try to open as Ogg file: =================
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
919 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_OGG){
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
920 demuxer=new_demuxer(stream,DEMUXER_TYPE_OGG,audio_id,video_id,dvdsub_id);
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
921 if(demux_ogg_open(demuxer)){
12434
aa7216363fd4 Cosmetics. Shortened the "displaying subtitle..." message. Replaced "OGG" with "Ogg" as it is a name, not an abbreviation/acronym.
mosu
parents: 12223
diff changeset
922 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"Ogg");
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
923 file_format=DEMUXER_TYPE_OGG;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
924 } else {
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
925 free_demuxer(demuxer);
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
926 demuxer = NULL;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
927 }
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
928 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
929 #endif
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
930 //=============== Try to open as PVA file: =================
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
931 if(file_format == DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_PVA){
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
932 demuxer=new_demuxer(stream,DEMUXER_TYPE_PVA,audio_id,video_id,dvdsub_id);
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
933 if(pva_check_file(demuxer)) {
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
934 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"PVA");
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
935 file_format=DEMUXER_TYPE_PVA;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
936 } else {
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
937 free_demuxer(demuxer);
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
938 demuxer=NULL;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
939 }
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
940 }
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
941 //=============== Try to open as MPEG-TS file: =================
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
942 if(file_format == DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_TS){
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
943 demuxer=new_demuxer(stream,DEMUXER_TYPE_MPEG_TS,audio_id,video_id,dvdsub_id);
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
944 if(ts_check_file(demuxer)) {
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
945 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"TS");
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
946 file_format=DEMUXER_TYPE_MPEG_TS;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
947 } else {
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
948 free_demuxer(demuxer);
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
949 demuxer=NULL;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
950 }
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
951 }
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
952 //=============== Try to open as LMLM4 file: =================
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
953 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_LMLM4){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
954 demuxer=new_demuxer(stream,DEMUXER_TYPE_LMLM4,audio_id,video_id,dvdsub_id);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
955 if(lmlm4_check_file(demuxer)){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
956 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"RAW LMLM4");
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
957 file_format=DEMUXER_TYPE_LMLM4;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
958 } else {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
959 free_demuxer(demuxer);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
960 demuxer = NULL;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
961 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
962 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
963 //=============== Try to open as MPEG-PS file: =================
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
964 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_PS){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
965 int pes=1;
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
966 int tmp;
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
967 off_t tmppos;
10379
296064e1baf0 fixed mpeg-ps ext-based detection sig11 bug reporetd by Raindel Shachar
arpi
parents: 10310
diff changeset
968 file_format=DEMUXER_TYPE_UNKNOWN;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
969 while(pes>=0){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
970 demuxer=new_demuxer(stream,DEMUXER_TYPE_MPEG_PS,audio_id,video_id,dvdsub_id);
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
971
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
972 // try to pre-detect PES:
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
973 tmppos=stream_tell(demuxer->stream);
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
974 tmp=stream_read_dword(demuxer->stream);
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
975 if(tmp==0x1E0 || tmp==0x1C0){
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
976 tmp=stream_read_word(demuxer->stream);
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
977 if(tmp>1 && tmp<=2048) pes=0; // demuxer->synced=3; // PES...
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
978 }
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
979 stream_seek(demuxer->stream,tmppos);
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
980
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
981 if(!pes) demuxer->synced=3; // hack!
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
982
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
983 num_elementary_packets100=0;
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
984 num_elementary_packets101=0;
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
985 num_elementary_packets1B6=0;
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
986 num_elementary_packets12x=0;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
987 num_elementary_packetsPES=0;
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
988 num_h264_slice=0; //combined slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
989 num_h264_dpa=0; //DPA Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
990 num_h264_dpb=0; //DPB Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
991 num_h264_dpc=0; //DPC Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
992 num_h264_idr=0; //IDR Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
993 num_h264_sps=0;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
994 num_h264_pps=0;
4735
21eca91fece7 ehh, i forgot to commit this...
arpi
parents: 4696
diff changeset
995 num_mp3audio_packets=0;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
996
13738
39004f891def seeking based on the largest timestamp in an mpeg stream
aurel
parents: 13686
diff changeset
997 if(demux_mpg_open(demuxer)){
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
998 if(!pes)
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
999 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"MPEG-PES");
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1000 else
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
1001 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"MPEG-PS");
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1002 file_format=DEMUXER_TYPE_MPEG_PS;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1003 } else {
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1004 mp_msg(MSGT_DEMUX,MSGL_V,"MPEG packet stats: p100: %d p101: %d p1B6: %d p12x: %d sli: %d a: %d b: %d c: %d idr: %d sps: %d pps: %d PES: %d MP3: %d \n",
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1005 num_elementary_packets100,num_elementary_packets101,
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1006 num_elementary_packets1B6,num_elementary_packets12x,
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1007 num_h264_slice, num_h264_dpa,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1008 num_h264_dpb, num_h264_dpc=0,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1009 num_h264_idr, num_h264_sps=0,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1010 num_h264_pps,
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1011 num_elementary_packetsPES,num_mp3audio_packets);
5804
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
1012 //MPEG packet stats: p100: 458 p101: 458 PES: 0 MP3: 1103 (.m2v)
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
1013 if(num_mp3audio_packets>50 && num_mp3audio_packets>2*num_elementary_packets100
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
1014 && abs(num_elementary_packets100-num_elementary_packets101)>2)
5068
64bf084309cf mp3 detection fixed...
arpi
parents: 4765
diff changeset
1015 break; // it's .MP3
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1016 // some hack to get meaningfull error messages to our unhappy users:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1017 if(num_elementary_packets100>=2 && num_elementary_packets101>=2 &&
2881
79142edcad77 001.vdr fix
arpi
parents: 2878
diff changeset
1018 abs(num_elementary_packets101+8-num_elementary_packets100)<16){
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1019 if(num_elementary_packetsPES>=4 && num_elementary_packetsPES>=num_elementary_packets100-4){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1020 --pes;continue; // tricky...
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1021 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1022 file_format=DEMUXER_TYPE_MPEG_ES; // <-- hack is here :)
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1023 } else
9446
29a9b69033f1 enabling mpeg4-es autodetection (if we dont enable it, then we will never know if it works ...)
michael
parents: 9129
diff changeset
1024 #if 1
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1025 // fuzzy mpeg4-es detection. do NOT enable without heavy testing of mpeg formats detection!
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1026 if(num_elementary_packets1B6>3 && num_elementary_packets12x>=1 &&
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1027 num_elementary_packetsPES==0 && num_elementary_packets100<=num_elementary_packets12x &&
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1028 demuxer->synced<2){
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1029 file_format=DEMUXER_TYPE_MPEG4_ES;
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1030 } else
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1031 #endif
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1032 #if 1
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1033 // fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!
9918
michael
parents: 9824
diff changeset
1034 if((num_h264_slice>3 || (num_h264_dpa>3 && num_h264_dpb>3 && num_h264_dpc>3)) &&
michael
parents: 9824
diff changeset
1035 /* FIXME num_h264_sps>=1 && */ num_h264_pps>=1 && num_h264_idr>=1 &&
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1036 num_elementary_packets1B6==0 && num_elementary_packetsPES==0 &&
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1037 demuxer->synced<2){
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1038 file_format=DEMUXER_TYPE_H264_ES;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1039 } else
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1040 #endif
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1041 {
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1042 if(demuxer->synced==2)
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1043 mp_msg(MSGT_DEMUXER,MSGL_ERR,"MPEG: " MSGTR_MissingVideoStreamBug);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1044 else
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1045 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_NotSystemStream);
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
1046 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1047 demuxer = NULL;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1048 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1049 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1050 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1051 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1052 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1053 //=============== Try to open as MPEG-ES file: =================
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1054 if(file_format==DEMUXER_TYPE_MPEG_ES || file_format==DEMUXER_TYPE_MPEG4_ES || file_format==DEMUXER_TYPE_H264_ES){ // little hack, see above!
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1055 demuxer=new_demuxer(stream,file_format,audio_id,video_id,dvdsub_id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1056 if(!ds_fill_buffer(demuxer->video)){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
1057 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_InvalidMPEGES);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1058 file_format=DEMUXER_TYPE_UNKNOWN;
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
1059 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1060 demuxer = NULL;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1061 } else {
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1062 switch(file_format){
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1063 case DEMUXER_TYPE_MPEG_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1064 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "MPEG-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1065 case DEMUXER_TYPE_MPEG4_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1066 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "MPEG4-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1067 case DEMUXER_TYPE_H264_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1068 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "H264-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1069 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1070 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1071 }
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1072 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1073 //=============== Try to open raw DV file, as produced by dvgrab --format raw =================
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1074 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_RAWDV)
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1075 {
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1076 demuxer=new_demuxer(stream,DEMUXER_TYPE_RAWDV,audio_id,video_id,dvdsub_id);
7594
a715a0960762 This just corrects a function name to match the other demuxer's
arpi
parents: 7559
diff changeset
1077 if(rawdv_check_file(demuxer))
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1078 {
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
1079 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"RAWDV");
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1080 file_format=DEMUXER_TYPE_RAWDV;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1081 }
8821
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1082 else {
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1083 free_demuxer(demuxer);
8821
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1084 demuxer=NULL;
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1085 }
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1086 }
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1087 #endif
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1088 //=============== Try to open as audio file: =================
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1089 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_AUDIO){
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1090 demuxer=new_demuxer(stream,DEMUXER_TYPE_AUDIO,audio_id,video_id,dvdsub_id);
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1091 if(demux_audio_open(demuxer)){
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1092 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedAudiofile);
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1093 file_format=DEMUXER_TYPE_AUDIO;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1094 } else {
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1095 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1096 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1097 }
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1098 }
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1099 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1100 //=============== Try to open as XMMS file: =================
10164
alex
parents: 10033
diff changeset
1101 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_XMMS){
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1102 demuxer=new_demuxer(stream,DEMUXER_TYPE_XMMS,audio_id,video_id,dvdsub_id);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1103 if(demux_xmms_open(demuxer)){
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1104 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedAudiofile);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1105 file_format=DEMUXER_TYPE_XMMS;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1106 } else {
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1107 free_demuxer(demuxer);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1108 demuxer = NULL;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1109 }
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1110 }
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1111 #endif
10274
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1112 //=============== Try to open as MPEG-TY file: =================
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1113 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_TY)
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1114 {
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1115 demuxer=new_demuxer(stream,DEMUXER_TYPE_MPEG_TY,audio_id,video_id,dvdsub_id);
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1116 if(ds_fill_buffer(demuxer->video)){
10442
d532fa79b0be inconsistency
alex
parents: 10379
diff changeset
1117 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"TiVo");
10274
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1118 file_format=DEMUXER_TYPE_MPEG_TY;
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1119 } else {
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1120 free_demuxer(demuxer);
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1121 demuxer = NULL;
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1122 }
cd8909001845 tivo demuxer moved down, its fileformat detection is unstable (misdetects mpeg-ps)
arpi
parents: 10263
diff changeset
1123 }
7007
3639db1fb8d3 typo fixes by Ross Finlayson <finlayson@live.com>
arpi
parents: 6951
diff changeset
1124 //=============== Try to open as a RTP stream: ===========
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1125 if(file_format==DEMUXER_TYPE_RTP) {
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1126 demuxer=new_demuxer(stream,DEMUXER_TYPE_RTP,audio_id,video_id,dvdsub_id);
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1127 }
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1128 //=============== Try to open with LAVF: =================
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1129 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1130 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_LAVF){
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1131 demuxer=new_demuxer(stream,DEMUXER_TYPE_LAVF,audio_id,video_id,dvdsub_id);
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1132 if(lavf_check_file(demuxer)){
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1133 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"libavformat"); //FIXME print format
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1134 file_format=DEMUXER_TYPE_LAVF;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1135 } else {
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1136 free_demuxer(demuxer);
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1137 demuxer = NULL;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1138 }
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1139 }
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1140 #endif
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1141 //=============== Unknown, exiting... ===========================
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1142 if(file_format==DEMUXER_TYPE_UNKNOWN || demuxer == NULL){
8925
5c15777f1c07 this patch adds an fallback to playlist (any but the plaintext-list format)
arpi
parents: 8821
diff changeset
1143 //mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_FormatNotRecognized); // will be done by mplayer.c after fallback to playlist-parsing
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1144 return NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1145 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1146 //====== File format recognized, set up these for compatibility: =========
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1147 d_audio=demuxer->audio;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1148 d_video=demuxer->video;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1149 //d_dvdsub=demuxer->sub;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1150
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1151 demuxer->file_format=file_format;
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1152
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1153 switch(file_format){
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1154 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1155 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1156 {
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1157 if (!demux_open_rawdv(demuxer)) return NULL;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1158 break;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1159 }
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1160 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1161 case DEMUXER_TYPE_RAWAUDIO: {
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1162 demux_rawaudio_open(demuxer);
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1163 break;
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1164 }
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1165 case DEMUXER_TYPE_RAWVIDEO: {
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1166 demux_rawvideo_open(demuxer);
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1167 break;
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1168 }
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1169 case DEMUXER_TYPE_MF: {
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1170 if (!demux_open_mf(demuxer)) return NULL;
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1171 break;
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1172 }
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1173 case DEMUXER_TYPE_FLI: {
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1174 if (!demux_open_fli(demuxer)) return NULL;
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1175 break;
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1176 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1177 case DEMUXER_TYPE_FILM: {
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1178 if (!demux_open_film(demuxer)) return NULL;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1179 break;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1180 }
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1181 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1182 case DEMUXER_TYPE_GIF: {
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1183 if (!demux_open_gif(demuxer)) return NULL;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1184 break;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1185 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1186 #endif
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1187 case DEMUXER_TYPE_BMP: {
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1188 if (!demux_open_bmp(demuxer)) return NULL;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1189 break;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1190 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1191 case DEMUXER_TYPE_ROQ: {
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1192 if (!demux_open_roq(demuxer)) return NULL;
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1193 break;
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1194 }
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1195 case DEMUXER_TYPE_SMJPEG: {
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1196 if (!demux_open_smjpeg(demuxer)) return NULL;
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1197 break;
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1198 }
1490
71424eb2b282 MOV file support - not works yet
arpi
parents: 1485
diff changeset
1199 case DEMUXER_TYPE_MOV: {
2127
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1200 if(!mov_read_header(demuxer)) return NULL;
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1201 // sh_video=d_video->sh;if(sh_video) sh_video->ds=d_video;
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1202 // sh_audio=d_audio->sh;if(sh_audio) sh_audio->ds=d_audio;
1490
71424eb2b282 MOV file support - not works yet
arpi
parents: 1485
diff changeset
1203 break;
71424eb2b282 MOV file support - not works yet
arpi
parents: 1485
diff changeset
1204 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1205 case DEMUXER_TYPE_AVI: {
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1206 sh_audio_t* sh_a;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1207 demuxer = (demuxer_t*) demux_open_avi(demuxer);
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
1208 if(!demuxer) return NULL; // failed to open
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1209 sh_a = (sh_audio_t*)demuxer->audio->sh;
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1210 if(demuxer->audio->id != -2 && sh_a) {
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1211 #ifdef HAVE_OGGVORBIS
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1212 // support for Ogg-in-AVI:
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1213 if(sh_a->format == 0xFFFE)
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1214 demuxer = init_avi_with_ogg(demuxer);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1215 else if(sh_a->format == 0x674F) {
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1216 stream_t* s;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1217 demuxer_t *od;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1218 s = new_ds_stream(demuxer->audio);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1219 od = new_demuxer(s,DEMUXER_TYPE_OGG,-1,-2,-2);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1220 if(!demux_ogg_open(od)) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1221 mp_msg( MSGT_DEMUXER,MSGL_ERR,MSGTR_ErrorOpeningOGGDemuxer);
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1222 free_stream(s);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1223 demuxer->audio->id = -2;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1224 } else
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1225 demuxer = new_demuxers_demuxer(demuxer,od,demuxer);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1226 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1227 #endif
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1228 }
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1229 return demuxer;
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1230 // break;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1231 }
12175
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
1232 case DEMUXER_TYPE_NSV: {
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
1233 demux_open_nsv(demuxer);
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
1234 break;
da8e39bfe121 nsv (Nullsoft streaming video) demuxer
rtognimp
parents: 12164
diff changeset
1235 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1236 case DEMUXER_TYPE_NUV: {
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1237 demux_open_nuv(demuxer);
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1238 break;
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1239 }
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1240 case DEMUXER_TYPE_VIVO: {
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1241 demux_open_vivo(demuxer);
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1242 break;
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1243 }
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1244 case DEMUXER_TYPE_PVA: {
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1245 demux_open_pva(demuxer);
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1246 break;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1247 }
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1248 case DEMUXER_TYPE_Y4M: {
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1249 demux_open_y4m(demuxer);
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1250 break;
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1251 }
11590
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1252 case DEMUXER_TYPE_LMLM4: {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1253 demux_open_lmlm4(demuxer);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1254 if(!ds_fill_buffer(d_video)){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1255 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingVideoStream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1256 sh_video=NULL;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1257 } else {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1258 sh_video=d_video->sh;sh_video->ds=d_video;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1259 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1260 if(audio_id!=-2) {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1261 if(!ds_fill_buffer(d_audio)){
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1262 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingAudioStream);
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1263 sh_audio=NULL;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1264 } else {
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1265 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1266 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1267 }
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1268 break;
0908285ada31 LML-M4 mpeg4 capture card raw stream format support
arpi
parents: 11576
diff changeset
1269 }
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1270 case DEMUXER_TYPE_REAL: {
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1271 demux_open_real(demuxer);
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1272 break;
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1273 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1274 case DEMUXER_TYPE_ASF: {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1275 //---- ASF header:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1276 read_asf_header(demuxer);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1277 stream_reset(demuxer->stream);
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1278 stream_seek(demuxer->stream,demuxer->movi_start);
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1279 // demuxer->idx_pos=0;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1280 // demuxer->endpos=avi_header.movi_end;
4587
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1281 if(d_video->id != -2) {
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1282 if(!ds_fill_buffer(d_video)){
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1283 mp_msg(MSGT_DEMUXER,MSGL_WARN,"ASF: " MSGTR_MissingVideoStream);
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1284 sh_video=NULL;
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1285 //printf("ASF: missing video stream!? contact the author, it may be a bug :(\n");
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1286 } else {
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1287 sh_video=d_video->sh;sh_video->ds=d_video;
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1288 sh_video->fps=1000.0f; sh_video->frametime=0.001f; // 1ms
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1289 // sh_video->i_bps=10*asf_packetsize; // FIXME!
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1290 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1291 }
4587
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1292 if(d_audio->id!=-2){
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1293 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_ASFSearchingForAudioStream,d_audio->id);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1294 if(!ds_fill_buffer(d_audio)){
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1295 mp_msg(MSGT_DEMUXER,MSGL_INFO,"ASF: " MSGTR_MissingAudioStream);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1296 sh_audio=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1297 } else {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1298 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1299 sh_audio->format=sh_audio->wf->wFormatTag;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1300 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1301 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1302 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1303 }
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1304 case DEMUXER_TYPE_H264_ES:
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1305 case DEMUXER_TYPE_MPEG4_ES:
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1306 case DEMUXER_TYPE_MPEG_ES: {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1307 sh_audio=NULL; // ES streams has no audio channel
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1308 d_video->sh=new_sh_video(demuxer,0); // create dummy video stream header, id=0
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1309 sh_video=d_video->sh;sh_video->ds=d_video;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1310 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1311 }
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1312
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1313 case DEMUXER_TYPE_MPEG_TY: {
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1314 sh_video=d_video->sh;sh_video->ds=d_video;
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1315
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1316 if(audio_id!=-2) {
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1317 if(!ds_fill_buffer(d_audio)){
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1318 mp_msg(MSGT_DEMUXER,MSGL_INFO,"MPEG: " MSGTR_MissingAudioStream);
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1319 sh_audio=NULL;
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1320 } else {
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1321 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1322 switch(d_audio->id & 0xE0){ // 1110 0000 b (high 3 bit: type low 5: id)
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1323 case 0x00: sh_audio->format=0x50;break; // mpeg
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1324 case 0xA0: sh_audio->format=0x10001;break; // dvd pcm
13006
8639d064d3a1 DTS support via lavc and libdts
rtognimp
parents: 12835
diff changeset
1325 case 0x80: if((d_audio->id & 0xF8) == 0x88) sh_audio->format=0x2001;//dts
8639d064d3a1 DTS support via lavc and libdts
rtognimp
parents: 12835
diff changeset
1326 else sh_audio->format=0x2000;break; // ac3
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1327 default: sh_audio=NULL; // unknown type
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1328 }
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1329 }
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1330 }
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1331 break;
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1332 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1333 case DEMUXER_TYPE_MPEG_PS: {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1334 sh_video=d_video->sh;sh_video->ds=d_video;
4391
6394c1e9e770 DVD start position handling changed (progbar/eta fix)
arpi
parents: 4203
diff changeset
1335 // if(demuxer->stream->type!=STREAMTYPE_VCD) demuxer->movi_start=0; // for VCD
1628
bd1ef18cdf33 seeking flags implemented: 0x1=rel/abs and 0x2=time/percent
arpi
parents: 1623
diff changeset
1336
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1337 if(audio_id!=-2) {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1338 if(!ds_fill_buffer(d_audio)){
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1339 mp_msg(MSGT_DEMUXER,MSGL_INFO,"MPEG: " MSGTR_MissingAudioStream);
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1340 sh_audio=NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1341 } else {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1342 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1343 switch(d_audio->id & 0xE0){ // 1110 0000 b (high 3 bit: type low 5: id)
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1344 case 0x00: sh_audio->format=0x50;break; // mpeg
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1345 case 0xA0: sh_audio->format=0x10001;break; // dvd pcm
13006
8639d064d3a1 DTS support via lavc and libdts
rtognimp
parents: 12835
diff changeset
1346 case 0x80: if((d_audio->id & 0xF8) == 0x88) sh_audio->format=0x2001;//dts
8639d064d3a1 DTS support via lavc and libdts
rtognimp
parents: 12835
diff changeset
1347 else sh_audio->format=0x2000;break; // ac3
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1348 default: sh_audio=NULL; // unknown type
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1349 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1350 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1351 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1352 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1353 }
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1354 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1355 case DEMUXER_TYPE_TV: {
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
1356 if (!demux_open_tv(demuxer)) return(NULL);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1357 break;
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1358 }
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1359 #endif
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1360 #ifdef STREAMING_LIVE_DOT_COM
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1361 case DEMUXER_TYPE_RTP: {
13673
2299f20215a4 Fix segfault for unexistant/unreachable rtsp streams
rtognimp
parents: 13588
diff changeset
1362 if (!(demuxer = demux_open_rtp(demuxer))) return NULL;
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1363 break;
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1364 }
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1365 #endif
10687
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
1366 case DEMUXER_TYPE_MPEG_TS:
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
1367 case DEMUXER_TYPE_MPEG4_IN_TS: {
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1368 demux_open_ts(demuxer);
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1369 break;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1370 }
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1371 case DEMUXER_TYPE_REALAUDIO: {
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1372 if (!demux_open_ra(demuxer)) return NULL;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1373 break;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1374 }
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1375 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1376 case DEMUXER_TYPE_LAVF: {
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1377 if (!demux_open_lavf(demuxer)) return NULL;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1378 break;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1379 }
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1380 #endif
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1381 } // switch(file_format)
2590
b1e6f5aa1815 pts_from_bps fix
arpi
parents: 2419
diff changeset
1382 pts_from_bps=0; // !!!
13301
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1383 if ((sh_video=demuxer->video->sh) && sh_video->bih)
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1384 mp_msg(MSGT_DEMUX,MSGL_INFO,"VIDEO: [%.4s] %ldx%ld %dbpp %5.3f fps %5.1f kbps (%4.1f kbyte/s)\n",
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1385 (char *)&sh_video->bih->biCompression,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1386 sh_video->bih->biWidth,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1387 sh_video->bih->biHeight,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1388 sh_video->bih->biBitCount,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1389 sh_video->fps,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1390 sh_video->i_bps*0.008f,
638673d1f83a show video format for all demuxers, not just avi (move this somewhere else if you prefer)
rfelker
parents: 13006
diff changeset
1391 sh_video->i_bps/1024.0f );
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1392 return demuxer;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1393 }
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1394
6623
7bc4c6ba9485 add -audiofile support for gui
pontscho
parents: 6384
diff changeset
1395 char* audio_stream = NULL;
7867
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1396 char* sub_stream = NULL;
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1397 int demuxer_type = 0, audio_demuxer_type = 0, sub_demuxer_type = 0;
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1398 int audio_stream_cache = 0;
7867
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1399
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1400 extern int hr_mp3_seek;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1401
12835
4235ae5a2d60 cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents: 12434
diff changeset
1402 extern float stream_cache_min_percent;
4235ae5a2d60 cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents: 12434
diff changeset
1403 extern float stream_cache_prefill_percent;
4235ae5a2d60 cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents: 12434
diff changeset
1404
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1405 demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int dvdsub_id,char* filename){
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1406 stream_t *as = NULL,*ss = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1407 demuxer_t *vd,*ad = NULL,*sd = NULL;
12223
e7c8200ffdc5 Respect -playlist for asx streams
rtognimp
parents: 12175
diff changeset
1408 int afmt =DEMUXER_TYPE_UNKNOWN,sfmt = DEMUXER_TYPE_UNKNOWN ;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1409
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1410 if(audio_stream) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1411 as = open_stream(audio_stream,0,&afmt);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1412 if(!as) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1413 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_CannotOpenAudioStream,audio_stream);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1414 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1415 }
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1416 if(audio_stream_cache) {
12835
4235ae5a2d60 cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents: 12434
diff changeset
1417 if(!stream_enable_cache(as,audio_stream_cache*1024,audio_stream_cache*1024*(stream_cache_min_percent / 100.0),
4235ae5a2d60 cache min fill adjustment, based on patch by Jeremy Huddleston
iive
parents: 12434
diff changeset
1418 audio_stream_cache*1024*(stream_cache_prefill_percent / 100.0))) {
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1419 free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1420 mp_msg(MSGT_DEMUXER,MSGL_ERR,"Can't enable audio stream cache\n");
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1421 return NULL;
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1422 }
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1423 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1424 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1425 if(sub_stream) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1426 ss = open_stream(sub_stream,0,&sfmt);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1427 if(!ss) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1428 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_CannotOpenSubtitlesStream,sub_stream);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1429 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1430 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1431 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1432
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1433 vd = demux_open_stream(vs,demuxer_type ? demuxer_type : file_format,audio_stream ? -2 : audio_id,video_id, sub_stream ? -2 : dvdsub_id, filename);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1434 if(!vd) {
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1435 if(as) free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1436 if(ss) free_stream(ss);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1437 return NULL;
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1438 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1439 if(as) {
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1440 ad = demux_open_stream(as,audio_demuxer_type ? audio_demuxer_type : afmt,audio_id,-2,-2, audio_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1441 if(!ad) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1442 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningAudioDemuxerFailed,audio_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1443 free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1444 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1445 else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->format == 0x55) // MP3
7867
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1446 hr_mp3_seek=1; // Enable high res seeking
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1447 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1448 if(ss) {
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1449 sd = demux_open_stream(ss,sub_demuxer_type ? sub_demuxer_type : sfmt,-2,-2,dvdsub_id, sub_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1450 if(!sd) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1451 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningSubtitlesDemuxerFailed,sub_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1452 free_stream(ss);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1453 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1454 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1455
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1456 if(ad && sd)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1457 return new_demuxers_demuxer(vd,ad,sd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1458 else if(ad)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1459 return new_demuxers_demuxer(vd,ad,vd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1460 else if(sd)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1461 return new_demuxers_demuxer(vd,vd,sd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1462 else
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1463 return vd;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1464 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1465
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1466 int demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,int flags);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1467 int demux_seek_asf(demuxer_t *demuxer,float rel_seek_secs,int flags);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1468 int demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,int flags);
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1469 int demux_seek_ty(demuxer_t *demuxer,float rel_seek_secs,int flags);
3863
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1470 int demux_seek_y4m(demuxer_t *demuxer,float rel_seek_secs,int flags);
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1471 int demux_seek_fli(demuxer_t *demuxer,float rel_seek_secs,int flags);
5157
f67b321e1eda FILM demuxer is leaner, meaner, and cleaner, also with proper bailout on
melanson
parents: 5152
diff changeset
1472 int demux_seek_film(demuxer_t *demuxer,float rel_seek_secs,int flags);
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1473 int demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,int flags);
4065
763a0e7e0521 seek patch by Panagoitis Issaris
alex
parents: 3863
diff changeset
1474 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags);
2227
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1475 void demux_seek_mov(demuxer_t *demuxer,float pts,int flags);
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1476 int demux_seek_real(demuxer_t *demuxer,float rel_seek_secs,int flags);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1477 int demux_seek_pva(demuxer_t *demuxer,float rel_seek_secs,int flags);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1478 int demux_seek_ts(demuxer_t *demuxer,float rel_seek_secs,int flags);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1479 int demux_seek_lavf(demuxer_t *demuxer,float rel_seek_secs,int flags);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1480
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1481 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1482 int demux_seek_rawdv(demuxer_t *demuxer, float pts, int flags);
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1483 #endif
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1484
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1485 extern void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1486 extern void demux_demuxers_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
5732
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1487 extern void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1488 extern void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1489 extern void demux_rawvideo_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1490 extern void demux_xmms_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1491 extern void demux_mkv_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1492
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1493 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1494 demux_stream_t *d_audio=demuxer->audio;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1495 demux_stream_t *d_video=demuxer->video;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1496 sh_audio_t *sh_audio=d_audio->sh;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1497 sh_video_t *sh_video=d_video->sh;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1498
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1499 if(!demuxer->seekable){
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1500 if(demuxer->file_format==DEMUXER_TYPE_AVI)
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1501 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekRawAVI);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1502 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1503 else if (demuxer->file_format==DEMUXER_TYPE_TV)
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1504 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_TVInputNotSeekable);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1505 #endif
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1506 else
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1507 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekFile);
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1508 return 0;
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1509 }
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1510
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1511 // clear demux buffers:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1512 if(sh_audio){ ds_free_packs(d_audio);sh_audio->a_buffer_len=0;}
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1513 ds_free_packs(d_video);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1514
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1515 demuxer->stream->eof=0; // clear eof flag
3542
465329581ad8 reset ds eof flags at seeking - requires for mpeg -loop
arpi
parents: 3411
diff changeset
1516 demuxer->video->eof=0;
465329581ad8 reset ds eof flags at seeking - requires for mpeg -loop
arpi
parents: 3411
diff changeset
1517 demuxer->audio->eof=0;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1518
4203
7cfa69df9e0b reverted old seeking method - ask Holm why...
arpi
parents: 4189
diff changeset
1519 #if 0
3824
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1520 if(sh_audio) sh_audio->timer=sh_video->timer;
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1521 #else
8056
324b6e5387be A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents: 8030
diff changeset
1522 if(sh_audio) sh_audio->delay=0;
4587
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1523 if(sh_video) sh_video->timer=0; // !!!!!!
3824
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1524 #endif
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1525
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1526 switch(demuxer->file_format){
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1527
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1528 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1529 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1530 demux_seek_rawdv(demuxer,rel_seek_secs,flags); break;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1531 #endif
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1532 case DEMUXER_TYPE_AVI:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1533 demux_seek_avi(demuxer,rel_seek_secs,flags); break;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1534
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1535 case DEMUXER_TYPE_ASF:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1536 demux_seek_asf(demuxer,rel_seek_secs,flags); break;
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1537
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1538 case DEMUXER_TYPE_MPEG_TY:
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1539 demux_seek_ty(demuxer,rel_seek_secs,flags); break;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1540
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1541 case DEMUXER_TYPE_H264_ES:
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1542 case DEMUXER_TYPE_MPEG4_ES:
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1543 case DEMUXER_TYPE_MPEG_ES:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1544 case DEMUXER_TYPE_MPEG_PS:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1545 demux_seek_mpg(demuxer,rel_seek_secs,flags); break;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1546
2227
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1547 case DEMUXER_TYPE_MOV:
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1548 demux_seek_mov(demuxer,rel_seek_secs,flags); break;
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1549
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1550 case DEMUXER_TYPE_REAL:
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1551 demux_seek_real(demuxer,rel_seek_secs,flags); break;
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1552
3863
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1553 case DEMUXER_TYPE_Y4M:
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1554 demux_seek_y4m(demuxer,rel_seek_secs,flags); break;
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1555
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1556 case DEMUXER_TYPE_MF:
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1557 demux_seek_mf(demuxer,rel_seek_secs,flags); break;
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1558
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1559 case DEMUXER_TYPE_PVA:
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1560 demux_seek_pva(demuxer,rel_seek_secs,flags); break;
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1561
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1562 case DEMUXER_TYPE_FLI:
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1563 demux_seek_fli(demuxer,rel_seek_secs,flags); break;
5157
f67b321e1eda FILM demuxer is leaner, meaner, and cleaner, also with proper bailout on
melanson
parents: 5152
diff changeset
1564 case DEMUXER_TYPE_FILM:
f67b321e1eda FILM demuxer is leaner, meaner, and cleaner, also with proper bailout on
melanson
parents: 5152
diff changeset
1565 demux_seek_film(demuxer,rel_seek_secs,flags); break;
4065
763a0e7e0521 seek patch by Panagoitis Issaris
alex
parents: 3863
diff changeset
1566 case DEMUXER_TYPE_NUV:
763a0e7e0521 seek patch by Panagoitis Issaris
alex
parents: 3863
diff changeset
1567 demux_seek_nuv(demuxer,rel_seek_secs,flags); break;
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1568 case DEMUXER_TYPE_AUDIO:
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1569 demux_audio_seek(demuxer,rel_seek_secs,flags); break;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1570 case DEMUXER_TYPE_DEMUXERS:
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1571 demux_demuxers_seek(demuxer,rel_seek_secs,flags); break;
5754
db8764171482 mplayer was not compileable without, i tested it with and without vorbis, i hope it's ok
jaf
parents: 5732
diff changeset
1572 #ifdef HAVE_OGGVORBIS
5732
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1573 case DEMUXER_TYPE_OGG:
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1574 demux_ogg_seek(demuxer,rel_seek_secs,flags); break;
5754
db8764171482 mplayer was not compileable without, i tested it with and without vorbis, i hope it's ok
jaf
parents: 5732
diff changeset
1575 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1576 case DEMUXER_TYPE_RAWAUDIO:
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1577 demux_rawaudio_seek(demuxer,rel_seek_secs,flags); break;
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1578 case DEMUXER_TYPE_RAWVIDEO:
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1579 demux_rawvideo_seek(demuxer,rel_seek_secs,flags); break;
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1580 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1581 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1582 demux_xmms_seek(demuxer,rel_seek_secs,flags); break;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1583 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1584 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1585 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1586 demux_mkv_seek(demuxer,rel_seek_secs,flags); break;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1587 #endif
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1588 case DEMUXER_TYPE_MPEG_TS:
10687
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
1589 case DEMUXER_TYPE_MPEG4_IN_TS:
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1590 demux_seek_ts(demuxer,rel_seek_secs,flags); break;
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1591 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1592 case DEMUXER_TYPE_LAVF:
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1593 demux_seek_lavf(demuxer,rel_seek_secs,flags); break;
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1594 #endif
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1595
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1596 } // switch(demuxer->file_format)
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1597
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1598 return 1;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1599 }
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1600
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1601 int demux_info_add(demuxer_t *demuxer, char *opt, char *param)
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1602 {
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1603 char **info = demuxer->info;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1604 int n = 0;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1605
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1606
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1607 for(n = 0; info && info[2*n] != NULL; n++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1608 {
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1609 if(!strcasecmp(opt,info[2*n]))
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1610 {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1611 mp_msg(MSGT_DEMUX, MSGL_WARN,MSGTR_DemuxerInfoAlreadyPresent,opt);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1612 return 0;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1613 }
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1614 }
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1615
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1616 info = demuxer->info = (char**)realloc(info,(2*(n+2))*sizeof(char*));
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1617 info[2*n] = strdup(opt);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1618 info[2*n+1] = strdup(param);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1619 memset(&info[2*(n+1)],0,2*sizeof(char*));
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1620
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1621 return 1;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1622 }
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1623
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1624 int demux_info_print(demuxer_t *demuxer)
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1625 {
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1626 char **info = demuxer->info;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1627 int n;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1628
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1629 if(!info)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1630 return 0;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1631
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1632 mp_msg(MSGT_DEMUX, MSGL_INFO,MSGTR_ClipInfo);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1633 for(n = 0; info[2*n] != NULL ; n++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1634 mp_msg(MSGT_DEMUX, MSGL_INFO, " %s: %s\n",info[2*n],info[2*n+1]);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1635
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1636 return 0;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1637 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1638
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1639 char* demux_info_get(demuxer_t *demuxer, char *opt) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1640 int i;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1641 char **info = demuxer->info;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1642
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1643 for(i = 0; info && info[2*i] != NULL; i++) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1644 if(!strcasecmp(opt,info[2*i]))
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1645 return info[2*i+1];
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1646 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1647
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1648 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1649 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1650
10310
68e714ed669f fix one missing #include, one missing extern and one 10l error.
rathann
parents: 10274
diff changeset
1651 extern int demux_ty_control(demuxer_t *demuxer, int cmd, void *arg);
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1652 extern int demux_mpg_control(demuxer_t *demuxer, int cmd, void *arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1653 extern int demux_asf_control(demuxer_t *demuxer, int cmd, void *arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1654 extern int demux_avi_control(demuxer_t *demuxer, int cmd, void *arg);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1655 extern int demux_xmms_control(demuxer_t *demuxer, int cmd, void *arg);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1656 extern int demux_mkv_control(demuxer_t *demuxer, int cmd, void *arg);
10882
e46e5a6c53b8 get_percent_pos support in demux_audio, patch by ROSEN Jeremy <jeremy.rosen at c-s.fr>
faust3
parents: 10687
diff changeset
1657 extern int demux_audio_control(demuxer_t *demuxer, int cmd, void *arg);
11575
0ac7fe8f3af8 Get the total length for Ogg files. Patch by Michael Behrisch <behrisch@informatik.hu-berlin.de>.
mosu
parents: 11466
diff changeset
1658 extern int demux_ogg_control(demuxer_t *demuxer, int cmd, void *arg);
11466
5cdfc3ef39f8 missing extern
rathann
parents: 11441
diff changeset
1659 extern int demux_real_control(demuxer_t *demuxer, int cmd, void *arg);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1660 extern int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg);
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1661
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1662 int demux_control(demuxer_t *demuxer, int cmd, void *arg) {
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1663 switch(demuxer->type) {
10263
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1664 case DEMUXER_TYPE_MPEG_TY:
0df8816f4665 TiVo demuxer and sub-cc/osd decoder
arpi
parents: 10221
diff changeset
1665 return demux_ty_control(demuxer,cmd,arg);
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1666 case DEMUXER_TYPE_MPEG4_ES:
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1667 case DEMUXER_TYPE_MPEG_ES:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1668 case DEMUXER_TYPE_MPEG_PS:
10687
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
1669 case DEMUXER_TYPE_MPEG_TS:
f8d6f7d59ceb - initial support for MPEG4 in TS (M4V is working, but not AAC yet)
arpi
parents: 10538
diff changeset
1670 case DEMUXER_TYPE_MPEG4_IN_TS:
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1671 return demux_mpg_control(demuxer,cmd,arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1672 case DEMUXER_TYPE_ASF:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1673 return demux_asf_control(demuxer,cmd,arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1674 case DEMUXER_TYPE_AVI:
8425
58063f77aa4d 10l - demux_avi handles AVI_NI and AVI_NINI too
arpi
parents: 8387
diff changeset
1675 case DEMUXER_TYPE_AVI_NI:
58063f77aa4d 10l - demux_avi handles AVI_NI and AVI_NINI too
arpi
parents: 8387
diff changeset
1676 case DEMUXER_TYPE_AVI_NINI:
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1677 return demux_avi_control(demuxer,cmd,arg);
10882
e46e5a6c53b8 get_percent_pos support in demux_audio, patch by ROSEN Jeremy <jeremy.rosen at c-s.fr>
faust3
parents: 10687
diff changeset
1678 case DEMUXER_TYPE_AUDIO:
e46e5a6c53b8 get_percent_pos support in demux_audio, patch by ROSEN Jeremy <jeremy.rosen at c-s.fr>
faust3
parents: 10687
diff changeset
1679 return demux_audio_control(demuxer,cmd,arg);
11575
0ac7fe8f3af8 Get the total length for Ogg files. Patch by Michael Behrisch <behrisch@informatik.hu-berlin.de>.
mosu
parents: 11466
diff changeset
1680 #ifdef HAVE_OGGVORBIS
0ac7fe8f3af8 Get the total length for Ogg files. Patch by Michael Behrisch <behrisch@informatik.hu-berlin.de>.
mosu
parents: 11466
diff changeset
1681 case DEMUXER_TYPE_OGG:
0ac7fe8f3af8 Get the total length for Ogg files. Patch by Michael Behrisch <behrisch@informatik.hu-berlin.de>.
mosu
parents: 11466
diff changeset
1682 return demux_ogg_control(demuxer,cmd,arg);
0ac7fe8f3af8 Get the total length for Ogg files. Patch by Michael Behrisch <behrisch@informatik.hu-berlin.de>.
mosu
parents: 11466
diff changeset
1683 #endif
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1684 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1685 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1686 return demux_xmms_control(demuxer,cmd,arg);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1687 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1688 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1689 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1690 return demux_mkv_control(demuxer,cmd,arg);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1691 #endif
11441
fef5c880a61c seek in realmedia files
luran
parents: 10891
diff changeset
1692 case DEMUXER_TYPE_REAL:
fef5c880a61c seek in realmedia files
luran
parents: 10891
diff changeset
1693 return demux_real_control(demuxer, cmd, arg);
12164
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1694 #ifdef USE_LIBAVFORMAT
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1695 case DEMUXER_TYPE_LAVF:
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1696 return demux_lavf_control(demuxer, cmd, arg);
77ff303c0eaa demux_lavf
michael
parents: 11985
diff changeset
1697 #endif
11441
fef5c880a61c seek in realmedia files
luran
parents: 10891
diff changeset
1698
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1699 default:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1700 return DEMUXER_CTRL_NOTIMPL;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1701 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1702 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1703
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1704
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1705
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1706 unsigned long demuxer_get_time_length(demuxer_t *demuxer){
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1707 unsigned long get_time_ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1708 if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,(void *)&get_time_ans)<=0) {
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1709 get_time_ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1710 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1711 return get_time_ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1712 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1713
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1714 int demuxer_get_percent_pos(demuxer_t *demuxer){
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1715 int ans;
8387
arpi
parents: 8208
diff changeset
1716 if (demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans)<=0) {
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1717 ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1718 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1719 if (ans>100 || ans<0) ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1720 return ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1721 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1722