annotate libmpdemux/demuxer.c @ 10252:d275152390ee

I've found some time to implement the encoding support for the new DivX API. Now it's possible to play and encode movies with the latest DivX release. One thing that doesn't work is the new Video Buffer Verifier (VBV) multipass encoding. The encoder segfaults. Maybe it just isn't supported with the standard profile of the released binary encoder. Andreas Hess <jaska@gmx.net>
author arpi
date Fri, 06 Jun 2003 19:57:37 +0000
parents 75c4595b0ffd
children 0df8816f4665
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
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
21 #include "../libvo/fastmemcpy.h"
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
22
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
23 void free_demuxer_stream(demux_stream_t *ds){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
24 ds_free_packs(ds);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
25 free(ds);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
26 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
27
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 demux_stream_t* new_demuxer_stream(struct demuxer_st *demuxer,int id){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 demux_stream_t* ds=malloc(sizeof(demux_stream_t));
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 ds->buffer_pos=ds->buffer_size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 ds->buffer=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 ds->pts=0;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
33 ds->pts_bytes=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 ds->eof=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 ds->pos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 ds->dpos=0;
889
1b905517c684 AVI -bps desync problem solved
arpi_esp
parents: 828
diff changeset
37 ds->pack_no=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 //---------------
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 ds->packs=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 ds->bytes=0;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
41 ds->first=ds->last=ds->current=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 ds->id=id;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 ds->demuxer=demuxer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 //----------------
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 ds->asf_seq=-1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 ds->asf_packet=NULL;
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents: 1
diff changeset
47 //----------------
7754
0568245deeb8 ss_div/ss_mul defaults to 0
arpi
parents: 7594
diff changeset
48 ds->ss_mul=ds->ss_div=0;
2419
24ba3dfb8e89 compressed mov audio fixed
arpi
parents: 2338
diff changeset
49 //----------------
291
da98e96499bb sh_audio/sh_video added, general codec cleanup
arpi_esp
parents: 1
diff changeset
50 ds->sh=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 return ds;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53
552
c2a449f90087 dvd sub support reading
arpi_esp
parents: 291
diff changeset
54 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
55 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
56 memset(d,0,sizeof(demuxer_t));
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 d->stream=stream;
598
c7117e17e20b OSD seekbar fixed for mpeg/VCD
arpi_esp
parents: 587
diff changeset
58 d->movi_start=stream->start_pos;
c7117e17e20b OSD seekbar fixed for mpeg/VCD
arpi_esp
parents: 587
diff changeset
59 d->movi_end=stream->end_pos;
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
60 d->seekable=1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 d->synced=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 d->filepos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 d->audio=new_demuxer_stream(d,a_id);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 d->video=new_demuxer_stream(d,v_id);
552
c2a449f90087 dvd sub support reading
arpi_esp
parents: 291
diff changeset
65 d->sub=new_demuxer_stream(d,s_id);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 d->type=type;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
67 stream_reset(stream);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
68 stream_seek(stream,stream->start_pos);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 return d;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
72 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
73 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
74 {
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
75 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
76 id, MAX_A_STREAMS);
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
77 return NULL;
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
78 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
79 if(demuxer->a_streams[id]){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
80 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
81 } else {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
82 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
83 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
84 memset(demuxer->a_streams[id],0,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
85 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
86 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
87 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
88
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
89 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
90 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
91 if(sh->wf) free(sh->wf);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
92 free(sh);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
93 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
94
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
95 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
96 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
97 {
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
98 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
99 id, MAX_V_STREAMS);
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
diff changeset
100 return NULL;
e534c7dc0cc0 check for overflow in new_sh_video and new_sh_audio
alex
parents: 4587
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 if(demuxer->v_streams[id]){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
103 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
104 } else {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
105 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
106 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
107 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
108 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
109 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
110 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
111
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
112 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
113 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing sh_video at %p \n",sh);
1657
f6d3c1287748 freeing video buffer
arpi
parents: 1643
diff changeset
114 if(sh->bih) free(sh->bih);
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
115 free(sh);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
116 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
117
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
118 extern void demux_close_vivo(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
119 extern void demux_close_real(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
120 extern void demux_close_y4m(demuxer_t *demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
121 extern void demux_close_mf(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
122 extern void demux_close_roq(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
123 extern void demux_close_film(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
124 extern void demux_close_bmp(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
125 extern void demux_close_fli(demuxer_t* demuxer);
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
126 extern void demux_close_nuv(demuxer_t* demuxer);
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
127 extern void demux_close_audio(demuxer_t* demuxer);
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
128 extern void demux_close_ogg(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
129 extern void demux_close_rtp(demuxer_t* demuxer);
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
130 extern void demux_close_demuxers(demuxer_t* demuxer);
6816
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
131 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
132 extern void demux_close_rawdv(demuxer_t* demuxer);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
133 extern void demux_close_pva(demuxer_t* demuxer);
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
134 extern void demux_close_smjpeg(demuxer_t* demuxer);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
135 extern void demux_close_xmms(demuxer_t* demuxer);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
136 extern void demux_close_gif(demuxer_t* demuxer);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
137 extern void demux_close_ts(demuxer_t* demuxer);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
138 extern void demux_close_mkv(demuxer_t* demuxer);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
139 extern void demux_close_ra(demuxer_t* demuxer);
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
140
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
141 #ifdef USE_TV
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
142 #include "tv.h"
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
143 extern int tv_param_on;
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
144
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
145 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
146 extern int demux_open_tv(demuxer_t *demuxer);
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
147 #if defined(USE_TV) && defined(HAVE_TV_V4L)
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
148 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
149 #endif
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
150 #endif
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
151
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
152 void free_demuxer(demuxer_t *demuxer){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
153 int i;
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
154 mp_msg(MSGT_DEMUXER,MSGL_V,"DEMUXER: freeing demuxer at %p \n",demuxer);
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
155 switch(demuxer->type) {
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
156 case DEMUXER_TYPE_PVA:
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
157 demux_close_pva(demuxer); break;
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
158 case DEMUXER_TYPE_VIVO:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
159 demux_close_vivo(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
160 case DEMUXER_TYPE_REAL:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
161 demux_close_real(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
162 case DEMUXER_TYPE_Y4M:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
163 demux_close_y4m(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
164 case DEMUXER_TYPE_MF:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
165 demux_close_mf(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
166 case DEMUXER_TYPE_ROQ:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
167 demux_close_roq(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
168 case DEMUXER_TYPE_FILM:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
169 demux_close_film(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
170 case DEMUXER_TYPE_BMP:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
171 demux_close_bmp(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
172 case DEMUXER_TYPE_FLI:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
173 demux_close_fli(demuxer); break;
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
174 case DEMUXER_TYPE_NUV:
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
175 demux_close_nuv(demuxer); break;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
176 #if defined(USE_TV) && defined(HAVE_TV_V4L)
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
177 case DEMUXER_TYPE_TV:
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
178 demux_close_tv(demuxer); break;
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 7007
diff changeset
179 #endif
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
180 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
181 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
182 demux_close_rawdv(demuxer); break;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
183 #endif
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
184 case DEMUXER_TYPE_AUDIO:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
185 demux_close_audio(demuxer); break;
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
186 #ifdef HAVE_OGGVORBIS
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
187 case DEMUXER_TYPE_OGG:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
188 demux_close_ogg(demuxer); break;
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
189 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
190 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
191 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
192 demux_close_mkv(demuxer); break;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
193 #endif
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
194 #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
195 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
196 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
197 #endif
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
198 case DEMUXER_TYPE_SMJPEG:
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
199 demux_close_smjpeg(demuxer); return;
5812
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
200 case DEMUXER_TYPE_DEMUXERS:
f9d23c2aa6b7 Uninit added
albeu
parents: 5810
diff changeset
201 demux_close_demuxers(demuxer); return;
6816
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
202 case DEMUXER_TYPE_AVI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
203 case DEMUXER_TYPE_AVI_NI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
204 case DEMUXER_TYPE_AVI_NINI:
f01e5cefb828 Add uninit to the avi demuxer
albeu
parents: 6623
diff changeset
205 demux_close_avi(demuxer); return;
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
206 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
207 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
208 demux_close_xmms(demuxer); break;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
209 #endif
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
210 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
211 case DEMUXER_TYPE_GIF:
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
212 demux_close_gif(demuxer); break;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
213 #endif
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
214 case DEMUXER_TYPE_MPEG_TS:
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
215 demux_close_ts(demuxer); break;
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
216 case DEMUXER_TYPE_REALAUDIO:
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
217 demux_close_ra(demuxer); break;
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
218
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5804
diff changeset
219 }
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
220 // free streams:
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
221 for(i=0;i<256;i++){
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
222 if(demuxer->a_streams[i]) free_sh_audio(demuxer->a_streams[i]);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
223 if(demuxer->v_streams[i]) free_sh_video(demuxer->v_streams[i]);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
224 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
225 //if(sh_audio) free_sh_audio(sh_audio);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
226 //if(sh_video) free_sh_video(sh_video);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
227 // free demuxers:
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
228 free_demuxer_stream(demuxer->audio);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
229 free_demuxer_stream(demuxer->video);
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
230 free_demuxer_stream(demuxer->sub);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
231 if(demuxer->info) {
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
232 for(i=0;demuxer->info[i] != NULL; i++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
233 free(demuxer->info[i]);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
234 free(demuxer->info);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
235 }
1643
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
236 free(demuxer);
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
237 }
76835bed88ca free demux/ds/sh
arpi
parents: 1631
diff changeset
238
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
239
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
240 void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241 // demux_packet_t* dp=new_demux_packet(len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 // stream_read(stream,dp->buffer,len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 // dp->pts=pts; //(float)pts/90000.0f;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 // dp->pos=pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245 // append packet to DS stream:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
246 ++ds->packs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
247 ds->bytes+=dp->len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
248 if(ds->last){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 // next packet in stream
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250 ds->last->next=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
251 ds->last=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
252 } else {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
253 // first packet in stream
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
254 ds->first=ds->last=dp;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
255 }
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
256 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
257 (ds==ds->demuxer->audio)?"d_audio":"d_video",
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
258 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
259 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260
1428
a90d889eb649 largefile patch by Stephen Davies <steve@daviesfam.org>
arpi
parents: 1421
diff changeset
261 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
262 demux_packet_t* dp=new_demux_packet(len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
263 stream_read(stream,dp->buffer,len);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
264 dp->pts=pts; //(float)pts/90000.0f;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
265 dp->pos=pos;
979
3bcc435cd5a2 keyframe flag added
arpi_esp
parents: 889
diff changeset
266 dp->flags=flags;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
267 // append packet to DS stream:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 ds_add_packet(ds,dp);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
269 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271 // return value:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
272 // 0 = EOF or no stream found or invalid type
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 // 1 = successfully read a packet
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
274 int demux_mf_fill_buffer( demuxer_t *demux);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
275 int demux_roq_fill_buffer(demuxer_t *demux);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
276 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
277 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
278 int demux_fli_fill_buffer(demuxer_t *demux);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 int demux_mpg_es_fill_buffer(demuxer_t *demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 int demux_mpg_fill_buffer(demuxer_t *demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
281 int demux_avi_fill_buffer(demuxer_t *demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282 int demux_avi_fill_buffer_ni(demuxer_t *demux,demux_stream_t *ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
283 int demux_avi_fill_buffer_nini(demuxer_t *demux,demux_stream_t *ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 int demux_asf_fill_buffer(demuxer_t *demux);
2106
0ad08f8e49b9 ehh. 10l. required for MOV
arpi
parents: 2050
diff changeset
285 int demux_mov_fill_buffer(demuxer_t *demux,demux_stream_t* ds);
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
286 int demux_vivo_fill_buffer(demuxer_t *demux);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
287 int demux_real_fill_buffer(demuxer_t *demuxer);
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
288 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
289 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
290 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
291 int demux_y4m_fill_buffer(demuxer_t *demux);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
292 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
293 int demux_pva_fill_buffer(demuxer_t *demux);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
294 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
295 int demux_gif_fill_buffer(demuxer_t *demux);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
296 int demux_ts_fill_buffer(demuxer_t *demux);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
297 int demux_ra_fill_buffer(demuxer_t *demux);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
298
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
299 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
300 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
301 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
302 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
303 extern int demux_smjpeg_fill_buffer(demuxer_t* demux);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
304 extern int demux_mkv_fill_buffer(demuxer_t *d);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306 int demux_fill_buffer(demuxer_t *demux,demux_stream_t *ds){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
307 // 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
308 // printf("demux->type=%d\n",demux->type);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 switch(demux->type){
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
310 case DEMUXER_TYPE_MF: return demux_mf_fill_buffer(demux);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
311 case DEMUXER_TYPE_ROQ: return demux_roq_fill_buffer(demux);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
312 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
313 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
314 case DEMUXER_TYPE_FLI: return demux_fli_fill_buffer(demux);
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
315 case DEMUXER_TYPE_MPEG4_ES:
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
316 case DEMUXER_TYPE_H264_ES:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
317 case DEMUXER_TYPE_MPEG_ES: return demux_mpg_es_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318 case DEMUXER_TYPE_MPEG_PS: return demux_mpg_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
319 case DEMUXER_TYPE_AVI: return demux_avi_fill_buffer(demux);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
320 case DEMUXER_TYPE_AVI_NI: return demux_avi_fill_buffer_ni(demux,ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
321 case DEMUXER_TYPE_AVI_NINI: return demux_avi_fill_buffer_nini(demux,ds);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
322 case DEMUXER_TYPE_ASF: return demux_asf_fill_buffer(demux);
2106
0ad08f8e49b9 ehh. 10l. required for MOV
arpi
parents: 2050
diff changeset
323 case DEMUXER_TYPE_MOV: return demux_mov_fill_buffer(demux,ds);
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
324 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
325 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
326 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
327 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
328 #endif
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
329 case DEMUXER_TYPE_REAL: return demux_real_fill_buffer(demux);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
330 case DEMUXER_TYPE_NUV: return demux_nuv_fill_buffer(demux);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
331 #ifdef USE_TV
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
332 case DEMUXER_TYPE_TV: return demux_tv_fill_buffer(demux, ds);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
333 #endif
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
334 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
335 case DEMUXER_TYPE_AUDIO: return demux_audio_fill_buffer(ds);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
336 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
337 case DEMUXER_TYPE_XMMS: return demux_xmms_fill_buffer(demux,ds);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
338 #endif
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
339 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
340 #ifdef HAVE_OGGVORBIS
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
341 case DEMUXER_TYPE_OGG: return demux_ogg_fill_buffer(demux);
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
342 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
343 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
344 case DEMUXER_TYPE_MATROSKA: return demux_mkv_fill_buffer(demux);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
345 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
346 case DEMUXER_TYPE_RAWAUDIO: return demux_rawaudio_fill_buffer(demux,ds);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
347 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
348 #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
349 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
350 #endif
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
351 case DEMUXER_TYPE_SMJPEG: return demux_smjpeg_fill_buffer(demux);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
352 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
353 case DEMUXER_TYPE_GIF: return demux_gif_fill_buffer(demux);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
354 #endif
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
355 case DEMUXER_TYPE_MPEG_TS: return demux_ts_fill_buffer(demux);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
356 case DEMUXER_TYPE_REALAUDIO: return demux_ra_fill_buffer(demux);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
357 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
358 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
361 // return value:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
362 // 0 = EOF
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
363 // 1 = succesfull
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
364 int ds_fill_buffer(demux_stream_t *ds){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
365 demuxer_t *demux=ds->demuxer;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
366 if(ds->current) free_demux_packet(ds->current);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
367 if(verbose>2){
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
368 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
369 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
370 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
371 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
372 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
373 while(1){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
374 if(ds->packs){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
375 demux_packet_t *p=ds->first;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
376 // copy useful data:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
377 ds->buffer=p->buffer;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
378 ds->buffer_pos=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
379 ds->buffer_size=p->len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
380 ds->pos=p->pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
381 ds->dpos+=p->len; // !!!
889
1b905517c684 AVI -bps desync problem solved
arpi_esp
parents: 828
diff changeset
382 ++ds->pack_no;
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
383 if(p->pts){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
384 ds->pts=p->pts;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
385 ds->pts_bytes=0;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
386 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
387 ds->pts_bytes+=p->len; // !!!
979
3bcc435cd5a2 keyframe flag added
arpi_esp
parents: 889
diff changeset
388 ds->flags=p->flags;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
389 // unlink packet:
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
390 ds->bytes-=p->len;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
391 ds->current=p;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
392 ds->first=p->next;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
393 if(!ds->first) ds->last=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
394 --ds->packs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
395 return 1; //ds->buffer_size;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
396 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
397 if(demux->audio->packs>=MAX_PACKS || demux->audio->bytes>=MAX_PACK_BYTES){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
398 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyAudioInBuffer,demux->audio->packs,demux->audio->bytes);
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
399 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
400 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
401 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
402 if(demux->video->packs>=MAX_PACKS || demux->video->bytes>=MAX_PACK_BYTES){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
403 mp_msg(MSGT_DEMUXER,MSGL_ERR,MSGTR_TooManyVideoInBuffer,demux->video->packs,demux->video->bytes);
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
404 mp_msg(MSGT_DEMUXER,MSGL_HINT,MSGTR_MaybeNI);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
405 break;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
406 }
1421
ea0a0b9e6fbc nosound avi seeking fixed
arpi
parents: 1401
diff changeset
407 if(!demux_fill_buffer(demux,ds)){
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
408 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
409 break; // EOF
ea0a0b9e6fbc nosound avi seeking fixed
arpi
parents: 1401
diff changeset
410 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
411 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 ds->buffer_pos=ds->buffer_size=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413 ds->buffer=NULL;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
414 ds->current=NULL;
1567
5c7760aa4f94 printf->mp_msg/mp_dbg
arpi
parents: 1497
diff changeset
415 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
416 ds->eof=1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
420 int demux_read_data(demux_stream_t *ds,unsigned char* mem,int len){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
421 int x;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
422 int bytes=0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423 while(len>0){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
424 x=ds->buffer_size-ds->buffer_pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
425 if(x==0){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
426 if(!ds_fill_buffer(ds)) return bytes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
427 } else {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
428 if(x>len) x=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
429 if(mem) memcpy(mem+bytes,&ds->buffer[ds->buffer_pos],x);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
430 bytes+=x;len-=x;ds->buffer_pos+=x;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
431 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
432 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
433 return bytes;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
434 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
435
746
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
436 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
437 int x;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
438 int bytes=0;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
439 while(len>0){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
440 x=ds->buffer_size-ds->buffer_pos;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
441 if(x==0){
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
442 if(!ds_fill_buffer(ds)) return bytes;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
443 } else {
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
444 if(x>len) x=len;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
445 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
446 bytes+=x;len-=x;ds->buffer_pos+=x;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
447 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
448 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
449 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
450 return bytes;
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
451 }
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
452
cd1f0d4de0b8 new audio playback and A-V sync code
arpi_esp
parents: 598
diff changeset
453
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
454 void ds_free_packs(demux_stream_t *ds){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
455 demux_packet_t *dp=ds->first;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
456 while(dp){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
457 demux_packet_t *dn=dp->next;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
458 free_demux_packet(dp);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
459 dp=dn;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
460 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
461 if(ds->asf_packet){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
462 // free unfinished .asf fragments:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463 free(ds->asf_packet->buffer);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
464 free(ds->asf_packet);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
465 ds->asf_packet=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
466 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
467 ds->first=ds->last=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468 ds->packs=0; // !!!!!
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
469 ds->bytes=0;
6192
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
470 if(ds->current) free_demux_packet(ds->current);
f03fe2e84efd clone_demux_packet(), using refcounting to avoid memcpy()
arpi
parents: 5930
diff changeset
471 ds->current=NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
472 ds->buffer=NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473 ds->buffer_pos=ds->buffer_size;
828
c71695c30006 added pts_bytes=0 to ds_free_packs
arpi_esp
parents: 746
diff changeset
474 ds->pts=0; ds->pts_bytes=0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
475 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
476
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
477 int ds_get_packet(demux_stream_t *ds,unsigned char **start){
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
478 while(1){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
479 int len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
480 if(ds->buffer_pos>=ds->buffer_size){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
481 if(!ds_fill_buffer(ds)){
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
482 // EOF
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
483 *start = NULL;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
484 return -1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
485 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
486 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
487 len=ds->buffer_size-ds->buffer_pos;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
488 *start = &ds->buffer[ds->buffer_pos];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
489 ds->buffer_pos+=len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
490 return len;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
491 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
492 }
554
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
493
587
8511095c5283 stage#1 completed: c files no more included from mplayer.c
arpi_esp
parents: 554
diff changeset
494 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
495 while(1){
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
496 int len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
497 if(ds->buffer_pos>=ds->buffer_size){
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
498 *start = NULL;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
499 if(!ds->packs) return -1; // no sub
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
500 if(!ds_fill_buffer(ds)) return -1; // EOF
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
501 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
502 len=ds->buffer_size-ds->buffer_pos;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
503 *start = &ds->buffer[ds->buffer_pos];
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
504 ds->buffer_pos+=len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
505 return len;
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
506 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
507 }
d8b3c80604e3 dvd sub parser move dto mplayer.c
arpi_esp
parents: 552
diff changeset
508
5930
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
509 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
510 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
511 while(!ds->first) {
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
512 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
513 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
514 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
515 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
516 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
517 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
518 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
519 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
520 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
521 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
522 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
523 return -1;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
524 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
525 return ds->first->pts;
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
526 }
68cac7ecaf05 Fix frame_time for variable fps movies as it was the last frame duration.
albeu
parents: 5897
diff changeset
527
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
528 // ====================================================================
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
529
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
530 // 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
531 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
532 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
533 extern int num_elementary_packetsPES;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
534 extern int num_elementary_packets1B6;
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
535 extern int num_elementary_packets12x;
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
536 extern int num_h264_slice; //combined slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
537 extern int num_h264_dpa; //DPA Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
538 extern int num_h264_dpb; //DPB Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
539 extern int num_h264_dpc; //DPC Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
540 extern int num_h264_idr; //IDR Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
541 extern int num_h264_sps;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
542 extern int num_h264_pps;
4735
21eca91fece7 ehh, i forgot to commit this...
arpi
parents: 4696
diff changeset
543 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
544
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
545 // 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
546 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
547 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
548
7559
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
549 //extern int audio_id;
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
550 //extern int video_id;
b645204ea527 some cleanup - made private vars/funcs static, removed obsolete externs
arpi
parents: 7482
diff changeset
551 //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
552
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
553 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
554 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
555 demux_stream_t* demux_avi_select_stream(demuxer_t *demux,unsigned int id);
2050
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
556 demuxer_t* demux_open_avi(demuxer_t* demuxer);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
557 int mov_check_file(demuxer_t* demuxer);
18f4dd5d568f -Wall warnings fixed
arpi
parents: 1973
diff changeset
558 int mov_read_header(demuxer_t* demuxer);
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
559 int demux_open_fli(demuxer_t* demuxer);
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
560 int demux_open_mf(demuxer_t* demuxer);
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
561 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
562 int demux_open_bmp(demuxer_t* demuxer);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
563 int demux_open_roq(demuxer_t* demuxer);
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
564 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
565 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
566 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
567 #endif
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
568
2931
bce9c945b29c tv interface update
alex
parents: 2881
diff changeset
569 extern int vivo_check_file(demuxer_t *demuxer);
bce9c945b29c tv interface update
alex
parents: 2881
diff changeset
570 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
571 extern int y4m_check_file(demuxer_t *demuxer);
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
572 extern void demux_open_y4m(demuxer_t *demuxer);
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
573 extern int roq_check_file(demuxer_t *demuxer);
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
574 extern int pva_check_file(demuxer_t * demuxer);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 8056
diff changeset
575 extern demuxer_t * demux_open_pva(demuxer_t * demuxer);
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
576 extern int real_check_file(demuxer_t *demuxer);
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
577 extern void demux_open_real(demuxer_t *demuxer);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
578 extern int nuv_check_file(demuxer_t *demuxer);
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
579 extern void demux_open_nuv(demuxer_t *demuxer);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
580 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
581 extern int demux_ogg_open(demuxer_t* demuxer);
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
582 extern int demux_rawaudio_open(demuxer_t* demuxer);
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
583 extern int demux_rawvideo_open(demuxer_t* demuxer);
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
584 extern int smjpeg_check_file(demuxer_t *demuxer);
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
585 extern int demux_open_smjpeg(demuxer_t* demuxer);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 8056
diff changeset
586 extern int bmp_check_file(demuxer_t *demuxer);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
587 extern int demux_xmms_open(demuxer_t* demuxer);
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
588 extern int gif_check_file(demuxer_t *demuxer);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
589 extern int demux_open_gif(demuxer_t* demuxer);
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
590 extern int ts_check_file(demuxer_t * demuxer);
10221
75c4595b0ffd warning fixes Raindel Shachar <raindel@techunix.technion.ac.il>
alex
parents: 10164
diff changeset
591 extern int demux_open_ts(demuxer_t *demuxer);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
592 extern int demux_open_mkv(demuxer_t *demuxer);
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
593 extern int ra_check_file(demuxer_t *demuxer);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
594 extern int demux_open_ra(demuxer_t* demuxer);
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
595
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
596 extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer);
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
597
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
598 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
599
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
600 /*
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
601 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
602 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
603 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
604 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
605 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
606 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
607 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
608 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
609 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
610 (ex: tv,mf).
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
611 */
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
612
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
613 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
614
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
615 //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
616
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
617 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
618
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
619 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
620 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
621
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
622 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
623 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
624
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
625 //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
626
9751
00c97b0891e3 Fix all demuxers wich where using a global var to enable themself.
albeu
parents: 9709
diff changeset
627 if(file_format == DEMUXER_TYPE_RAWAUDIO) {
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
628 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
629 }
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
630 if(file_format == DEMUXER_TYPE_RAWVIDEO) {
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
631 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
632 }
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
633
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
634 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
635 //=============== 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
636 if(file_format==DEMUXER_TYPE_TV){
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
637 demuxer=new_demuxer(stream,DEMUXER_TYPE_TV,audio_id,video_id,dvdsub_id);
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
638 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedTV);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
639 }
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
640 #endif
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
641
6942
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
642 //=============== 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
643 if(file_format==DEMUXER_TYPE_MF){
6942
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
644 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
645 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
646 }
6048ac6ab001 detection reordered. note: raw DV detection should be more reliable.
arpi
parents: 6925
diff changeset
647
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
648 //=============== 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
649 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
650 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
651 { //---- RIFF header:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
652 int id=stream_read_dword_le(demuxer->stream); // "RIFF"
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
653 if(id==mmioFOURCC('R','I','F','F')){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
654 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
655 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
656 if(id==formtypeAVI){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
657 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
658 file_format=DEMUXER_TYPE_AVI;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
659 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
660 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
661 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
662 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
663 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
664 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
665 }
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
666 //=============== Try to open as Y4M file: =================
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
667 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_Y4M){
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
668 demuxer=new_demuxer(stream,DEMUXER_TYPE_Y4M,audio_id,video_id,dvdsub_id);
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
669 if(y4m_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
670 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"YUV4MPEG2");
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
671 file_format=DEMUXER_TYPE_Y4M;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
672 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
673 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
674 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
675 }
3833
dd5ae1d5ea42 asf<->y4m detection swapped
arpi
parents: 3824
diff changeset
676 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
677 //=============== 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
678 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
679 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
680 if(asf_check_header(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
681 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
682 file_format=DEMUXER_TYPE_ASF;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
683 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
684 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
685 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
686 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
687 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
688 //=============== Try to open as NUV file: =================
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
689 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
690 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
691 if(nuv_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
692 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
693 file_format=DEMUXER_TYPE_NUV;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
694 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
695 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
696 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
697 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
698 }
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
699 //=============== Try to open as REAL file: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
700 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
701 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
702 if(real_check_file(demuxer)){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
703 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
704 file_format=DEMUXER_TYPE_REAL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
705 } else {
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
706 free_demuxer(demuxer);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
707 demuxer = NULL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
708 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
709 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
710 //=============== Try to open as SMJPEG file: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
711 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
712 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
713 if(smjpeg_check_file(demuxer)){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
714 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
715 file_format=DEMUXER_TYPE_SMJPEG;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
716 } else {
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
717 free_demuxer(demuxer);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
718 demuxer = NULL;
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
719 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
720 }
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
721 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
722 //=============== Try to open as Matroska file: =================
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
723 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MATROSKA){
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
724 demuxer=new_demuxer(stream,DEMUXER_TYPE_MATROSKA,audio_id,video_id,dvdsub_id);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
725 if(demux_mkv_open(demuxer)){
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
726 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"Matroska");
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
727 file_format=DEMUXER_TYPE_MATROSKA;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
728 } else {
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
729 free_demuxer(demuxer);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
730 demuxer = NULL;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
731 }
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
732 }
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
733 #endif
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
734 //=============== Try to open as REALAUDIO file: =================
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
735 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_REALAUDIO){
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
736 demuxer=new_demuxer(stream,DEMUXER_TYPE_REALAUDIO,audio_id,video_id,dvdsub_id);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
737 if(ra_check_file(demuxer)){
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
738 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"REALAUDIO");
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
739 file_format=DEMUXER_TYPE_REALAUDIO;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
740 } else {
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
741 free_demuxer(demuxer);
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
742 demuxer = NULL;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
743 }
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
744 }
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
745
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
746 //=============== Try based on filename EXTENSION: =================
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
747 // 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
748 // 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
749 // first:
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
750 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
751 file_format=demuxer_type_by_filename(filename);
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
752 if(file_format!=DEMUXER_TYPE_UNKNOWN){
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
753 // we like recursion :)
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
754 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
755 if(demuxer) return demuxer; // done!
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
756 file_format=DEMUXER_TYPE_UNKNOWN; // continue fuzzy guessing...
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
757 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
758 }
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
759
2878
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
760 //=============== Try to open as MOV file: =================
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
761 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MOV){
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
762 demuxer=new_demuxer(stream,DEMUXER_TYPE_MOV,audio_id,video_id,dvdsub_id);
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
763 if(mov_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
764 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
765 file_format=demuxer->type;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
766 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
767 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
768 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
769 }
2878
1ca86a8dc530 qt/mov detection first
arpi
parents: 2837
diff changeset
770 }
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
771 //=============== Try to open as VIVO file: =================
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
772 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
773 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
774 if(vivo_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
775 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
776 file_format=DEMUXER_TYPE_VIVO;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
777 } else {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
778 free_demuxer(demuxer);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
779 demuxer = NULL;
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
780 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
781 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
782 //=============== Try to open as FLI file: =================
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
783 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
784 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
785 {
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
786 int id;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
787 stream_seek(demuxer->stream, 4);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
788 id=stream_read_word_le(demuxer->stream);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
789 // check for the FLI file magic number
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
790 if((id==0xAF11) || (id==0xAF12)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
791 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
792 file_format=DEMUXER_TYPE_FLI;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
793 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
794 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
795 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
796 }
3256
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
797 }
c42e6759c82b file format detection reordered to get better hits
arpi
parents: 3150
diff changeset
798 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
799 //=============== Try to open as FILM file: =================
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
800 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_FILM){
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
801 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
802 {
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
803 int signature=stream_read_fourcc(demuxer->stream);
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
804 // check for the FLI file magic number
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
805 if(signature==mmioFOURCC('F', 'I', 'L', 'M')){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
806 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"FILM");
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
807 file_format=DEMUXER_TYPE_FILM;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
808 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
809 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
810 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
811 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
812 }
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
813 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
814 //=============== Try to open as RoQ file: =================
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
815 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_ROQ){
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
816 demuxer=new_demuxer(stream,DEMUXER_TYPE_ROQ,audio_id,video_id,dvdsub_id);
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
817 if(roq_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
818 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"ROQ");
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
819 file_format=DEMUXER_TYPE_ROQ;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
820 } else {
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
821 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
822 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
823 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
824 }
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
825 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
826 //=============== Try to open as GIF file: =================
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
827 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_GIF){
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
828 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
829 if(gif_check_file(demuxer)){
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
830 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"GIF");
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
831 file_format=DEMUXER_TYPE_GIF;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
832 } else {
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
833 free_demuxer(demuxer);
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
834 demuxer = NULL;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
835 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
836 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
837 #endif
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
838 //=============== 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
839 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
840 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
841 if(bmp_check_file(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
842 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
843 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
844 } else {
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
845 free_demuxer(demuxer);
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
846 demuxer = NULL;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
847 }
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
848 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
849 #ifdef HAVE_OGGVORBIS
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
850 //=============== Try to open as Ogg file: =================
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
851 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
852 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
853 if(demux_ogg_open(demuxer)){
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
854 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
855 file_format=DEMUXER_TYPE_OGG;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
856 } else {
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
857 free_demuxer(demuxer);
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
858 demuxer = NULL;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
859 }
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
860 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
861 #endif
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
862 //=============== Try to open as PVA file: =================
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
863 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
864 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
865 if(pva_check_file(demuxer)) {
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
866 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
867 file_format=DEMUXER_TYPE_PVA;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
868 } else {
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
869 free_demuxer(demuxer);
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
870 demuxer=NULL;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
871 }
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
872 }
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
873 //=============== Try to open as MPEG-TS file: =================
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
874 if(file_format == DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MPEG_TS){
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
875 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
876 if(ts_check_file(demuxer)) {
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
877 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"TS");
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
878 file_format=DEMUXER_TYPE_MPEG_TS;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
879 } else {
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
880 free_demuxer(demuxer);
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
881 demuxer=NULL;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
882 }
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
883 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
884 //=============== 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
885 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
886 int pes=1;
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
887 int tmp;
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
888 off_t tmppos;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
889 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
890 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
891
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
892 // try to pre-detect PES:
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
893 tmppos=stream_tell(demuxer->stream);
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
894 tmp=stream_read_dword(demuxer->stream);
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
895 if(tmp==0x1E0 || tmp==0x1C0){
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
896 tmp=stream_read_word(demuxer->stream);
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
897 if(tmp>1 && tmp<=2048) pes=0; // demuxer->synced=3; // PES...
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
898 }
3772
f9d9f6ab79f4 mpeg startpos (-ss, -chapter) fixed
arpi
parents: 3770
diff changeset
899 stream_seek(demuxer->stream,tmppos);
3770
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
900
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
901 if(!pes) demuxer->synced=3; // hack!
4f1a99fb9d9a mpeg VDR vs. BIN fixed?
arpi
parents: 3544
diff changeset
902
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
903 num_elementary_packets100=0;
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
904 num_elementary_packets101=0;
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
905 num_elementary_packets1B6=0;
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
906 num_elementary_packets12x=0;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
907 num_elementary_packetsPES=0;
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
908 num_h264_slice=0; //combined slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
909 num_h264_dpa=0; //DPA Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
910 num_h264_dpb=0; //DPB Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
911 num_h264_dpc=0; //DPC Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
912 num_h264_idr=0; //IDR Slice
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
913 num_h264_sps=0;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
914 num_h264_pps=0;
4735
21eca91fece7 ehh, i forgot to commit this...
arpi
parents: 4696
diff changeset
915 num_mp3audio_packets=0;
1659
6b71bbf515e4 num_elementary_packets1xx reset
arpi
parents: 1657
diff changeset
916
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
917 if(ds_fill_buffer(demuxer->video)){
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
918 if(!pes)
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
919 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
920 else
7482
1056d2dc4f3a changed 'detected fileformat' messages to a message with %s
jaf
parents: 7469
diff changeset
921 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
922 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
923 } else {
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
924 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
925 num_elementary_packets100,num_elementary_packets101,
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
926 num_elementary_packets1B6,num_elementary_packets12x,
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
927 num_h264_slice, num_h264_dpa,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
928 num_h264_dpb, num_h264_dpc=0,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
929 num_h264_idr, num_h264_sps=0,
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
930 num_h264_pps,
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
931 num_elementary_packetsPES,num_mp3audio_packets);
5804
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
932 //MPEG packet stats: p100: 458 p101: 458 PES: 0 MP3: 1103 (.m2v)
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
933 if(num_mp3audio_packets>50 && num_mp3audio_packets>2*num_elementary_packets100
5a040bd83630 more strict check for .mp3
arpi
parents: 5754
diff changeset
934 && abs(num_elementary_packets100-num_elementary_packets101)>2)
5068
64bf084309cf mp3 detection fixed...
arpi
parents: 4765
diff changeset
935 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
936 // 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
937 if(num_elementary_packets100>=2 && num_elementary_packets101>=2 &&
2881
79142edcad77 001.vdr fix
arpi
parents: 2878
diff changeset
938 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
939 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
940 --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
941 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
942 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
943 } 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
944 #if 1
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
945 // 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
946 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
947 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
948 demuxer->synced<2){
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
949 file_format=DEMUXER_TYPE_MPEG4_ES;
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
950 } else
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
951 #endif
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
952 #if 1
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
953 // fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!
9918
michael
parents: 9824
diff changeset
954 if((num_h264_slice>3 || (num_h264_dpa>3 && num_h264_dpb>3 && num_h264_dpc>3)) &&
michael
parents: 9824
diff changeset
955 /* FIXME num_h264_sps>=1 && */ num_h264_pps>=1 && num_h264_idr>=1 &&
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
956 num_elementary_packets1B6==0 && num_elementary_packetsPES==0 &&
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
957 demuxer->synced<2){
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
958 file_format=DEMUXER_TYPE_H264_ES;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
959 } else
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
960 #endif
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
961 {
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
962 if(demuxer->synced==2)
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
963 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
964 else
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
965 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_NotSystemStream);
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
966 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
967 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
968 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
969 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
970 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
971 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
972 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
973 //=============== Try to open as MPEG-ES file: =================
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
974 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
975 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
976 if(!ds_fill_buffer(demuxer->video)){
1584
e49b3927c793 more messages for translator :)
arpi
parents: 1567
diff changeset
977 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
978 file_format=DEMUXER_TYPE_UNKNOWN;
4660
25b2a036aee7 A whole bunch of free_demuxer in demux_open
albeu
parents: 4642
diff changeset
979 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
980 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
981 } else {
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
982 switch(file_format){
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
983 case DEMUXER_TYPE_MPEG_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
984 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "MPEG-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
985 case DEMUXER_TYPE_MPEG4_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
986 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "MPEG4-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
987 case DEMUXER_TYPE_H264_ES:
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
988 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat, "H264-ES"); break;
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
989 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
990 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
991 }
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
992 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
993 //=============== 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
994 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
995 {
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
996 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
997 if(rawdv_check_file(demuxer))
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
998 {
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,"RAWDV");
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1000 file_format=DEMUXER_TYPE_RAWDV;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1001 }
8821
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1002 else {
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1003 free_demuxer(demuxer);
8821
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1004 demuxer=NULL;
76ec79da7a5c 10l (was segfaulting on non-dv file)
filon
parents: 8528
diff changeset
1005 }
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1006 }
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1007 #endif
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1008 //=============== Try to open as audio file: =================
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1009 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
1010 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
1011 if(demux_audio_open(demuxer)){
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1012 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
1013 file_format=DEMUXER_TYPE_AUDIO;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1014 } else {
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1015 free_demuxer(demuxer);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1016 demuxer = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1017 }
4696
629429644de7 10l... it detected mpeg1/2 ps files as mpeg audio...
arpi
parents: 4694
diff changeset
1018 }
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1019 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1020 //=============== Try to open as XMMS file: =================
10164
alex
parents: 10033
diff changeset
1021 if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_XMMS){
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1022 demuxer=new_demuxer(stream,DEMUXER_TYPE_XMMS,audio_id,video_id,dvdsub_id);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1023 if(demux_xmms_open(demuxer)){
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1024 mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_DetectedAudiofile);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1025 file_format=DEMUXER_TYPE_XMMS;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1026 } else {
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1027 free_demuxer(demuxer);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1028 demuxer = NULL;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1029 }
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1030 }
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1031 #endif
7007
3639db1fb8d3 typo fixes by Ross Finlayson <finlayson@live.com>
arpi
parents: 6951
diff changeset
1032 //=============== 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
1033 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
1034 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
1035 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1036 //=============== Unknown, exiting... ===========================
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1037 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
1038 //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
1039 return NULL;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1040 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1041 //====== 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
1042 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
1043 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
1044 //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
1045
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1046 demuxer->file_format=file_format;
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1047
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1048 switch(file_format){
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1049 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1050 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1051 {
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1052 if (!demux_open_rawdv(demuxer)) return NULL;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1053 break;
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1054 }
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1055 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1056 case DEMUXER_TYPE_RAWAUDIO: {
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1057 demux_rawaudio_open(demuxer);
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1058 break;
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1059 }
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1060 case DEMUXER_TYPE_RAWVIDEO: {
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1061 demux_rawvideo_open(demuxer);
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1062 break;
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1063 }
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1064 case DEMUXER_TYPE_MF: {
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1065 if (!demux_open_mf(demuxer)) return NULL;
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1066 break;
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1067 }
3101
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1068 case DEMUXER_TYPE_FLI: {
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1069 if (!demux_open_fli(demuxer)) return NULL;
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1070 break;
637e540831b9 mostly complete support for loading and decoding FLI/FLC animations
melanson
parents: 3091
diff changeset
1071 }
4189
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1072 case DEMUXER_TYPE_FILM: {
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1073 if (!demux_open_film(demuxer)) return NULL;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1074 break;
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1075 }
9129
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1076 #ifdef HAVE_GIF
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1077 case DEMUXER_TYPE_GIF: {
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1078 if (!demux_open_gif(demuxer)) return NULL;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1079 break;
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1080 }
6ecc0b5c08cb libgif/libungif based demuxer support for libmpdemux.
arpi
parents: 9069
diff changeset
1081 #endif
5214
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1082 case DEMUXER_TYPE_BMP: {
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1083 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
1084 break;
dd79075bbd98 added a BMP file demuxer...yeah, that's right, a static image BMP file
melanson
parents: 5157
diff changeset
1085 }
4451
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1086 case DEMUXER_TYPE_ROQ: {
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1087 if (!demux_open_roq(demuxer)) return NULL;
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1088 break;
5627d5b58083 implemented RoQ file demuxing
melanson
parents: 4391
diff changeset
1089 }
7382
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1090 case DEMUXER_TYPE_SMJPEG: {
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1091 if (!demux_open_smjpeg(demuxer)) return NULL;
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1092 break;
89cbab549659 added smjpeg demuxer only for nexus' request
alex
parents: 7364
diff changeset
1093 }
1490
71424eb2b282 MOV file support - not works yet
arpi
parents: 1485
diff changeset
1094 case DEMUXER_TYPE_MOV: {
2127
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1095 if(!mov_read_header(demuxer)) return NULL;
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1096 // sh_video=d_video->sh;if(sh_video) sh_video->ds=d_video;
e6ce221dee06 .mov support can be disabled
arpi
parents: 2106
diff changeset
1097 // 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
1098 break;
71424eb2b282 MOV file support - not works yet
arpi
parents: 1485
diff changeset
1099 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1100 case DEMUXER_TYPE_AVI: {
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1101 sh_audio_t* sh_a;
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1102 demuxer = (demuxer_t*) demux_open_avi(demuxer);
5412
db582be1b590 added soem debug prints, and fixed 10l bug of Alban
arpi
parents: 5214
diff changeset
1103 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
1104 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
1105 if(demuxer->audio->id != -2 && sh_a) {
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1106 #ifdef HAVE_OGGVORBIS
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1107 // support for Ogg-in-AVI:
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1108 if(sh_a->format == 0xFFFE)
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1109 demuxer = init_avi_with_ogg(demuxer);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1110 else if(sh_a->format == 0x674F) {
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1111 stream_t* s;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1112 demuxer_t *od;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1113 s = new_ds_stream(demuxer->audio);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1114 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
1115 if(!demux_ogg_open(od)) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1116 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
1117 free_stream(s);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1118 demuxer->audio->id = -2;
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1119 } else
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1120 demuxer = new_demuxers_demuxer(demuxer,od,demuxer);
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1121 }
7413
7d83ac879f51 removed dummy OGG functions - use #ifdef instead
arpi
parents: 7382
diff changeset
1122 #endif
5897
5f25f1f06c95 Add support for another AVI with ogg/vorbis audio (0x674F)
albeu
parents: 5812
diff changeset
1123 }
5133
9841a86d66f9 Initial ogg demuxer. No seeking, a/v sync is broken. Support avi
albeu
parents: 5107
diff changeset
1124 return demuxer;
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1125 // break;
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1126 }
3801
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1127 case DEMUXER_TYPE_NUV: {
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1128 demux_open_nuv(demuxer);
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1129 break;
3cea69dda1b3 added NuppelVideo demuxer, based on Panagiotis Issaris' patch
alex
parents: 3786
diff changeset
1130 }
2687
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1131 case DEMUXER_TYPE_VIVO: {
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1132 demux_open_vivo(demuxer);
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1133 break;
8c75a9a639c1 vivo demuxer
arpi
parents: 2590
diff changeset
1134 }
7364
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1135 case DEMUXER_TYPE_PVA: {
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1136 demux_open_pva(demuxer);
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1137 break;
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1138 }
3786
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1139 case DEMUXER_TYPE_Y4M: {
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1140 demux_open_y4m(demuxer);
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1141 break;
7ebf504c92d6 yuv4mpeg2 (mjpegtools) support by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 3777
diff changeset
1142 }
3777
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1143 case DEMUXER_TYPE_REAL: {
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1144 demux_open_real(demuxer);
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1145 break;
026ccd3dc489 added real demuxer
alex
parents: 3772
diff changeset
1146 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1147 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
1148 //---- ASF header:
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1149 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
1150 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
1151 stream_seek(demuxer->stream,demuxer->movi_start);
1485
b895f95e7657 AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents: 1456
diff changeset
1152 // 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
1153 // demuxer->endpos=avi_header.movi_end;
4587
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1154 if(d_video->id != -2) {
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1155 if(!ds_fill_buffer(d_video)){
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1156 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
1157 sh_video=NULL;
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1158 //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
1159 } else {
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1160 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
1161 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
1162 mp_msg(MSGT_DEMUXER,MSGL_INFO,"VIDEO: [%.4s] %ldx%ld %dbpp\n",
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1163 (char *)&sh_video->bih->biCompression,
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1164 sh_video->bih->biWidth,
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1165 sh_video->bih->biHeight,
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1166 sh_video->bih->biBitCount);
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1167 // 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
1168 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1169 }
4587
886bf5274992 Audio only support. Include a fix in the asf demuxer opening.
albeu
parents: 4565
diff changeset
1170 if(d_audio->id!=-2){
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1171 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
1172 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
1173 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
1174 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
1175 } else {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1176 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
1177 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
1178 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1179 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1180 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1181 }
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1182 case DEMUXER_TYPE_H264_ES:
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1183 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
1184 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
1185 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
1186 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
1187 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
1188 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1189 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1190 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
1191 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
1192 // 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
1193
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1194 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
1195 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
1196 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
1197 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
1198 } else {
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1199 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
1200 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
1201 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
1202 case 0xA0: sh_audio->format=0x10001;break; // dvd pcm
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1203 case 0x80: sh_audio->format=0x2000;break; // ac3
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1204 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
1205 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1206 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1207 }
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1208 break;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1209 }
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1210 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1211 case DEMUXER_TYPE_TV: {
7329
9129781e5939 removed messy global 'tv_handle', use stream->priv for that purpose
arpi
parents: 7058
diff changeset
1212 if (!demux_open_tv(demuxer)) return(NULL);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1213 break;
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1214 }
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1215 #endif
6910
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1216 #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
1217 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
1218 demux_open_rtp(demuxer);
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1219 break;
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1220 }
1a747aee653b applied live.com streaming patch (-sdp and rtsp:// support) by Ross Finlayson <finlayson@live.com>
arpi
parents: 6871
diff changeset
1221 #endif
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1222 case DEMUXER_TYPE_MPEG_TS: {
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1223 demux_open_ts(demuxer);
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1224 break;
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1225 }
10033
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1226 case DEMUXER_TYPE_REALAUDIO: {
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1227 if (!demux_open_ra(demuxer)) return NULL;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1228 break;
4ecb40d73e24 Add support for Realaudio files
rtognimp
parents: 10024
diff changeset
1229 }
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1230 } // switch(file_format)
2590
b1e6f5aa1815 pts_from_bps fix
arpi
parents: 2419
diff changeset
1231 pts_from_bps=0; // !!!
1375
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1232 return demuxer;
dbcb5b5e1fae file-format detection stuff moved out from mplayer.c to demuxer.c and dec_video.c
arpi
parents: 1331
diff changeset
1233 }
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1234
6623
7bc4c6ba9485 add -audiofile support for gui
pontscho
parents: 6384
diff changeset
1235 char* audio_stream = NULL;
7867
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1236 char* sub_stream = NULL;
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1237 int demuxer_type = 0, audio_demuxer_type = 0, sub_demuxer_type = 0;
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1238 int audio_stream_cache = 0;
7867
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1239
3dc0b71630ff cleanup config option handling in libmpdemux.
arpi
parents: 7754
diff changeset
1240 extern int hr_mp3_seek;
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1241
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1242 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
1243 stream_t *as = NULL,*ss = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1244 demuxer_t *vd,*ad = NULL,*sd = NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1245 int afmt = 0,sfmt = 0;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1246
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1247 if(audio_stream) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1248 as = open_stream(audio_stream,0,&afmt);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1249 if(!as) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1250 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
1251 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1252 }
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1253 if(audio_stream_cache) {
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1254 if(!stream_enable_cache(as,audio_stream_cache*1024,audio_stream_cache*1024/5,
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1255 audio_stream_cache*1024/20)) {
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1256 free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1257 mp_msg(MSGT_DEMUXER,MSGL_ERR,"Can't enable audio stream cache\n");
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1258 return NULL;
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1259 }
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1260 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1261 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1262 if(sub_stream) {
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1263 ss = open_stream(sub_stream,0,&sfmt);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1264 if(!ss) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1265 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
1266 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1267 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1268 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1269
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1270 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
1271 if(!vd) {
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1272 if(as) free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1273 if(ss) free_stream(ss);
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1274 return NULL;
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1275 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1276 if(as) {
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1277 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
1278 if(!ad) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1279 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningAudioDemuxerFailed,audio_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1280 free_stream(as);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1281 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1282 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
1283 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
1284 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1285 if(ss) {
9006
d00997f12257 extension-based filetype detection for headerless files (mp3 vs mpeg, etc)
arpi
parents: 8937
diff changeset
1286 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
1287 if(!sd) {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1288 mp_msg(MSGT_DEMUXER,MSGL_WARN,MSGTR_OpeningSubtitlesDemuxerFailed,sub_stream);
9709
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1289 free_stream(ss);
1b1e33d1688a Fix rawvideo and -audiofile
albeu
parents: 9610
diff changeset
1290 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1291 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1292
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1293 if(ad && sd)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1294 return new_demuxers_demuxer(vd,ad,sd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1295 else if(ad)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1296 return new_demuxers_demuxer(vd,ad,vd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1297 else if(sd)
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1298 return new_demuxers_demuxer(vd,vd,sd);
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1299 else
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1300 return vd;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1301 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1302
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1303 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
1304 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
1305 int demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,int flags);
3863
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1306 int demux_seek_y4m(demuxer_t *demuxer,float rel_seek_secs,int flags);
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1307 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
1308 int demux_seek_film(demuxer_t *demuxer,float rel_seek_secs,int flags);
4551
716b00618bfc add mfi support
pontscho
parents: 4451
diff changeset
1309 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
1310 int demux_seek_nuv(demuxer_t *demuxer,float rel_seek_secs,int flags);
2227
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1311 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
1312 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
1313 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
1314 int demux_seek_ts(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
1315
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1316 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1317 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
1318 #endif
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1319
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1320 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
1321 extern void demux_demuxers_seek(demuxer_t *demuxer,float rel_seek_secs,int flags);
5732
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1322 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
1323 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
1324 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
1325 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
1326 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
1327
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1328 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
1329 demux_stream_t *d_audio=demuxer->audio;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1330 demux_stream_t *d_video=demuxer->video;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1331 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
1332 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
1333
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1334 if(!demuxer->seekable){
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1335 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
1336 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekRawAVI);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1337 #ifdef USE_TV
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1338 else if (demuxer->file_format==DEMUXER_TYPE_TV)
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1339 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_TVInputNotSeekable);
2790
98769cea155c added tv subsystem
alex
parents: 2687
diff changeset
1340 #endif
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1341 else
1973
5216f108cb4f all error/warn/info messages moved to help_mp-en.h for translation
arpi
parents: 1659
diff changeset
1342 mp_msg(MSGT_SEEK,MSGL_WARN,MSGTR_CantSeekFile);
1623
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1343 return 0;
5908dd344067 added demuxer->seekable flag to generalize seeking ability test
arpi
parents: 1584
diff changeset
1344 }
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1345
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1346 // clear demux buffers:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1347 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
1348 ds_free_packs(d_video);
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1349
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1350 demuxer->stream->eof=0; // clear eof flag
3542
465329581ad8 reset ds eof flags at seeking - requires for mpeg -loop
arpi
parents: 3411
diff changeset
1351 demuxer->video->eof=0;
465329581ad8 reset ds eof flags at seeking - requires for mpeg -loop
arpi
parents: 3411
diff changeset
1352 demuxer->audio->eof=0;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1353
4203
7cfa69df9e0b reverted old seeking method - ask Holm why...
arpi
parents: 4189
diff changeset
1354 #if 0
3824
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1355 if(sh_audio) sh_audio->timer=sh_video->timer;
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1356 #else
8056
324b6e5387be A-V sync cleanup: sh_audio->timer replaced by sh_audio->delay, it contains
arpi
parents: 8030
diff changeset
1357 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
1358 if(sh_video) sh_video->timer=0; // !!!!!!
3824
be5e58955f57 don't reset timer at seek - req. for dxr3
arpi
parents: 3801
diff changeset
1359 #endif
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1360
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1361 switch(demuxer->file_format){
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1362
6925
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1363 #ifdef HAVE_LIBDV095
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1364 case DEMUXER_TYPE_RAWDV:
cc46462d0015 raw .dv stream demuxer by Alexander Neundorf <neundorf@kde.org>
arpi
parents: 6910
diff changeset
1365 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
1366 #endif
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1367 case DEMUXER_TYPE_AVI:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1368 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
1369
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1370 case DEMUXER_TYPE_ASF:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1371 demux_seek_asf(demuxer,rel_seek_secs,flags); break;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1372
9824
39b68c2664ec H264-ES demuxer
michael
parents: 9751
diff changeset
1373 case DEMUXER_TYPE_H264_ES:
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1374 case DEMUXER_TYPE_MPEG4_ES:
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1375 case DEMUXER_TYPE_MPEG_ES:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1376 case DEMUXER_TYPE_MPEG_PS:
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1377 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
1378
2227
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1379 case DEMUXER_TYPE_MOV:
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1380 demux_seek_mov(demuxer,rel_seek_secs,flags); break;
10b279d72a8f mov seeking implemented
arpi
parents: 2127
diff changeset
1381
5084
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1382 case DEMUXER_TYPE_REAL:
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1383 demux_seek_real(demuxer,rel_seek_secs,flags); break;
2fd327bf64fc added get_sh_video/audio and realmedia seeking
alex
parents: 5068
diff changeset
1384
3863
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1385 case DEMUXER_TYPE_Y4M:
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1386 demux_seek_y4m(demuxer,rel_seek_secs,flags); break;
64f5c5749bad Applied Rik Snel's seeking patch
alex
parents: 3833
diff changeset
1387
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1388 case DEMUXER_TYPE_MF:
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1389 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
1390
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1391 case DEMUXER_TYPE_PVA:
b2445802532c .PVA (mpeg-like fileformat used by MultiDec && WinTV) demuxer
arpi
parents: 7329
diff changeset
1392 demux_seek_pva(demuxer,rel_seek_secs,flags); break;
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4551
diff changeset
1393
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1394 case DEMUXER_TYPE_FLI:
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1395 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
1396 case DEMUXER_TYPE_FILM:
f67b321e1eda FILM demuxer is leaner, meaner, and cleaner, also with proper bailout on
melanson
parents: 5152
diff changeset
1397 demux_seek_film(demuxer,rel_seek_secs,flags); break;
4065
763a0e7e0521 seek patch by Panagoitis Issaris
alex
parents: 3863
diff changeset
1398 case DEMUXER_TYPE_NUV:
763a0e7e0521 seek patch by Panagoitis Issaris
alex
parents: 3863
diff changeset
1399 demux_seek_nuv(demuxer,rel_seek_secs,flags); break;
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1400 case DEMUXER_TYPE_AUDIO:
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1401 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
1402 case DEMUXER_TYPE_DEMUXERS:
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1403 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
1404 #ifdef HAVE_OGGVORBIS
5732
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1405 case DEMUXER_TYPE_OGG:
6586448b5243 Seeking implemented
albeu
parents: 5572
diff changeset
1406 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
1407 #endif
6384
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1408 case DEMUXER_TYPE_RAWAUDIO:
f0b933918a22 Support for playing audio cds using cdparanoia. Include a raw audio
albeu
parents: 6192
diff changeset
1409 demux_rawaudio_seek(demuxer,rel_seek_secs,flags); break;
9065
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1410 case DEMUXER_TYPE_RAWVIDEO:
59805b2d220a raw video demuxer, requested by Michael
arpi
parents: 9006
diff changeset
1411 demux_rawvideo_seek(demuxer,rel_seek_secs,flags); break;
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1412 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1413 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1414 demux_xmms_seek(demuxer,rel_seek_secs,flags); break;
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1415 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1416 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1417 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1418 demux_mkv_seek(demuxer,rel_seek_secs,flags); break;
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1419 #endif
9610
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1420 case DEMUXER_TYPE_MPEG_TS:
76c6d8f1ebf5 this is a combo patch that:
arpi
parents: 9446
diff changeset
1421 demux_seek_ts(demuxer,rel_seek_secs,flags); break;
3544
61b89c10e4e8 fli seeking implemented
arpi
parents: 3542
diff changeset
1422
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1423 } // switch(demuxer->file_format)
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1424
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1425 return 1;
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1426 }
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1427
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1428 int demux_info_add(demuxer_t *demuxer, char *opt, char *param)
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1429 {
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1430 char **info = demuxer->info;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1431 int n = 0;
1497
ad4d402b3d29 seek.c moved to demuxer.c, stream_reset in new_demuxer()
arpi
parents: 1496
diff changeset
1432
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1433
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1434 for(n = 0; info && info[2*n] != NULL; n++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1435 {
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1436 if(!strcasecmp(opt,info[2*n]))
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1437 {
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1438 mp_msg(MSGT_DEMUX, MSGL_WARN,MSGTR_DemuxerInfoAlreadyPresent,opt);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1439 return 0;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1440 }
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1441 }
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1442
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1443 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
1444 info[2*n] = strdup(opt);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1445 info[2*n+1] = strdup(param);
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1446 memset(&info[2*(n+1)],0,2*sizeof(char*));
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1447
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1448 return 1;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1449 }
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1450
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1451 int demux_info_print(demuxer_t *demuxer)
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1452 {
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1453 char **info = demuxer->info;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1454 int n;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1455
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1456 if(!info)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1457 return 0;
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1458
6951
0504c8beccba messages moved again
jaf
parents: 6943
diff changeset
1459 mp_msg(MSGT_DEMUX, MSGL_INFO,MSGTR_ClipInfo);
4694
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1460 for(n = 0; info[2*n] != NULL ; n++)
a21735031d6a Audio file demuxer. Extended version for demuxer info.
albeu
parents: 4660
diff changeset
1461 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
1462
6871d97e4261 initial support for FILM file demuxing
melanson
parents: 4065
diff changeset
1463 return 0;
3050
9ed968c05954 added demuxer_info
alex
parents: 2931
diff changeset
1464 }
4765
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1465
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1466 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
1467 int i;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1468 char **info = demuxer->info;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1469
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1470 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
1471 if(!strcasecmp(opt,info[2*i]))
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1472 return info[2*i+1];
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1473 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1474
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1475 return NULL;
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1476 }
d0c2c8af46b4 Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents: 4735
diff changeset
1477
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1478 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
1479 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
1480 extern int demux_avi_control(demuxer_t *demuxer, int cmd, void *arg);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1481 extern int demux_xmms_control(demuxer_t *demuxer, int cmd, void *arg);
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1482 extern int demux_mkv_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
1483
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1484 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
1485 switch(demuxer->type) {
9069
0d2b25a821c9 raw mpeg4-es support (you need to set -fps manually!)
arpi
parents: 9065
diff changeset
1486 case DEMUXER_TYPE_MPEG4_ES:
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1487 case DEMUXER_TYPE_MPEG_ES:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1488 case DEMUXER_TYPE_MPEG_PS:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1489 return demux_mpg_control(demuxer,cmd,arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1490 case DEMUXER_TYPE_ASF:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1491 return demux_asf_control(demuxer,cmd,arg);
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1492 case DEMUXER_TYPE_AVI:
8425
58063f77aa4d 10l - demux_avi handles AVI_NI and AVI_NINI too
arpi
parents: 8387
diff changeset
1493 case DEMUXER_TYPE_AVI_NI:
58063f77aa4d 10l - demux_avi handles AVI_NI and AVI_NINI too
arpi
parents: 8387
diff changeset
1494 case DEMUXER_TYPE_AVI_NINI:
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1495 return demux_avi_control(demuxer,cmd,arg);
8528
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1496 #ifdef HAVE_XMMS
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1497 case DEMUXER_TYPE_XMMS:
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1498 return demux_xmms_control(demuxer,cmd,arg);
9d143176d95f XMMS Input plugin support
arpi
parents: 8425
diff changeset
1499 #endif
10024
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1500 #ifdef HAVE_MATROSKA
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1501 case DEMUXER_TYPE_MATROSKA:
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1502 return demux_mkv_control(demuxer,cmd,arg);
c6fab860ab18 Added Matroska demuxing support.
mosu
parents: 9918
diff changeset
1503 #endif
8208
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1504 default:
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1505 return DEMUXER_CTRL_NOTIMPL;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1506 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1507 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1508
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1509
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1510
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1511 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
1512 unsigned long get_time_ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1513 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
1514 get_time_ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1515 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1516 return get_time_ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1517 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1518
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1519 int demuxer_get_percent_pos(demuxer_t *demuxer){
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1520 int ans;
8387
arpi
parents: 8208
diff changeset
1521 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
1522 ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1523 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1524 if (ans>100 || ans<0) ans=0;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1525 return ans;
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1526 }
ae5a2ae1c349 demuxer_control(), percent position and time length query implemented in
arpi
parents: 8123
diff changeset
1527