Mercurial > mplayer.hg
annotate libmpdemux/demux_demuxers.c @ 29625:aaf67d00ae75
Sort preferred_list alphabetically since the order does not matter otherwise.
author | reimar |
---|---|
date | Thu, 10 Sep 2009 17:28:35 +0000 |
parents | 3e13839031b3 |
children | fa5a020677d6 |
rev | line source |
---|---|
29238
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
1 /* |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
2 * This file is part of MPlayer. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
3 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
7 * (at your option) any later version. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
8 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
12 * GNU General Public License for more details. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
13 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
26817
diff
changeset
|
17 */ |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
18 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
19 #include "config.h" |
18176
f72bc5754209
Part3 of Otvos Attila's oattila AT chello-hu mp_msg changes, with lots of modifications as usual
reynaldo
parents:
17636
diff
changeset
|
20 #include "mp_msg.h" |
f72bc5754209
Part3 of Otvos Attila's oattila AT chello-hu mp_msg changes, with lots of modifications as usual
reynaldo
parents:
17636
diff
changeset
|
21 #include "help_mp.h" |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
22 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
23 #include <stdlib.h> |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
24 #include <stdio.h> |
22605
4d81dbdf46b9
Add explicit location for headers from the stream/ directory.
diego
parents:
20071
diff
changeset
|
25 #include "stream/stream.h" |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
26 #include "demuxer.h" |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
27 #include "stheader.h" |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
28 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
29 typedef struct dd_priv { |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
30 demuxer_t* vd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
31 demuxer_t* ad; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
32 demuxer_t* sd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
33 } dd_priv_t; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
34 |
25707
d4fe6e23283e
Make all demuxer_desc_t const, thus moving them to .rodata
reimar
parents:
22605
diff
changeset
|
35 extern const demuxer_desc_t demuxer_desc_demuxers; |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
36 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
37 demuxer_t* new_demuxers_demuxer(demuxer_t* vd, demuxer_t* ad, demuxer_t* sd) { |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
38 demuxer_t* ret; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
39 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
40 |
18885 | 41 ret = calloc(1,sizeof(demuxer_t)); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
42 |
18885 | 43 priv = malloc(sizeof(dd_priv_t)); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
44 priv->vd = vd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
45 priv->ad = ad; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
46 priv->sd = sd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
47 ret->priv = priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
48 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
49 ret->type = ret->file_format = DEMUXER_TYPE_DEMUXERS; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
50 // Video is the most important :-) |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
51 ret->stream = vd->stream; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
52 ret->seekable = vd->seekable && ad->seekable && sd->seekable; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
53 |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
54 ret->video = vd->video; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
55 ret->audio = ad->audio; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
56 ret->sub = sd->sub; |
29568
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
57 if (vd) vd->video->demuxer = ret; |
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
58 if (ad) ad->audio->demuxer = ret; |
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
59 if (sd) sd->sub->demuxer = ret; |
16175 | 60 |
26817
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
61 // HACK?, necessary for subtitle (and audio and video when implemented) switching |
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
62 memcpy(ret->v_streams, vd->v_streams, sizeof(ret->v_streams)); |
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
63 memcpy(ret->a_streams, ad->a_streams, sizeof(ret->a_streams)); |
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
64 memcpy(ret->s_streams, sd->s_streams, sizeof(ret->s_streams)); |
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
65 |
16175 | 66 ret->desc = &demuxer_desc_demuxers; |
67 | |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
68 return ret; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
69 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
70 |
16175 | 71 static int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds) { |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
72 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
73 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
74 priv=demux->priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
75 |
29569
3e13839031b3
Add a hack to ensure data from e.g. mov format -subfile gets read at all
reimar
parents:
29568
diff
changeset
|
76 // HACK: make sure the subtitles get properly interleaved if with -subfile |
3e13839031b3
Add a hack to ensure data from e.g. mov format -subfile gets read at all
reimar
parents:
29568
diff
changeset
|
77 if (priv->sd && priv->sd->sub != ds && |
3e13839031b3
Add a hack to ensure data from e.g. mov format -subfile gets read at all
reimar
parents:
29568
diff
changeset
|
78 priv->sd != priv->vd && priv->sd != priv->ad) |
3e13839031b3
Add a hack to ensure data from e.g. mov format -subfile gets read at all
reimar
parents:
29568
diff
changeset
|
79 ds_get_next_pts(priv->sd->sub); |
29568
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
80 if(priv->vd && priv->vd->video == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
81 return demux_fill_buffer(priv->vd,ds); |
29568
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
82 else if(priv->ad && priv->ad->audio == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
83 return demux_fill_buffer(priv->ad,ds); |
29568
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
84 else if(priv->sd && priv->sd->sub == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
85 return demux_fill_buffer(priv->sd,ds); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
86 |
18176
f72bc5754209
Part3 of Otvos Attila's oattila AT chello-hu mp_msg changes, with lots of modifications as usual
reynaldo
parents:
17636
diff
changeset
|
87 mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_MPDEMUX_DEMUXERS_FillBufferError); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
88 return 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
89 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
90 |
17636 | 91 static void demux_demuxers_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags) { |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
92 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
93 float pos; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
94 priv=demuxer->priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
95 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
96 priv->ad->stream->eof = 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
97 priv->sd->stream->eof = 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
98 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
99 // Seek video |
17636 | 100 demux_seek(priv->vd,rel_seek_secs,audio_delay,flags); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
101 // Get the new pos |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
102 pos = demuxer->video->pts; |
20071
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
103 if (!pos) { |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
104 demux_fill_buffer(priv->vd, demuxer->video); |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
105 if (demuxer->video->first) |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
106 pos = demuxer->video->first->pts; |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
107 } |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
108 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
109 if(priv->ad != priv->vd) { |
26297 | 110 sh_audio_t* sh = demuxer->audio->sh; |
17636 | 111 demux_seek(priv->ad,pos,audio_delay,1); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
112 // In case the demuxer don't set pts |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
113 if(!demuxer->audio->pts) |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
114 demuxer->audio->pts = pos-((ds_tell_pts(demuxer->audio)-sh->a_in_buffer_len)/(float)sh->i_bps); |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
115 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
116 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
117 if(priv->sd != priv->vd) |
17636 | 118 demux_seek(priv->sd,pos,audio_delay,1); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
119 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
120 } |
5812 | 121 |
16175 | 122 static void demux_close_demuxers(demuxer_t* demuxer) { |
5812 | 123 dd_priv_t* priv = demuxer->priv; |
9710 | 124 stream_t *s; |
5812 | 125 |
126 if(priv->vd) | |
127 free_demuxer(priv->vd); | |
9710 | 128 if(priv->ad && priv->ad != priv->vd) { |
129 // That's a hack to free the audio file stream | |
130 // It's ok atm but we shouldn't free that here | |
131 s = priv->ad->stream; | |
5812 | 132 free_demuxer(priv->ad); |
9710 | 133 free_stream(s); |
134 } if(priv->sd && priv->sd != priv->vd && priv->sd != priv->ad) { | |
135 s = priv->sd->stream; | |
5812 | 136 free_demuxer(priv->sd); |
9710 | 137 free_stream(s); |
138 } | |
5812 | 139 |
140 free(priv); | |
141 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
142 |
16175 | 143 |
16876
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
144 static int demux_demuxers_control(demuxer_t *demuxer,int cmd, void *arg){ |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
145 dd_priv_t* priv = demuxer->priv; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
146 switch (cmd) { |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
147 case DEMUXER_CTRL_GET_TIME_LENGTH: |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
148 *((double *)arg) = demuxer_get_time_length(priv->vd); |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
149 return DEMUXER_CTRL_OK; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
150 case DEMUXER_CTRL_GET_PERCENT_POS: |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
151 *((int *)arg) = demuxer_get_percent_pos(priv->vd); |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
152 return DEMUXER_CTRL_OK; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
153 } |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
154 return DEMUXER_CTRL_NOTIMPL; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
155 } |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
156 |
25707
d4fe6e23283e
Make all demuxer_desc_t const, thus moving them to .rodata
reimar
parents:
22605
diff
changeset
|
157 const demuxer_desc_t demuxer_desc_demuxers = { |
16175 | 158 "Demuxers demuxer", |
159 "", // Not selectable | |
160 "", | |
161 "?", | |
162 "internal use only", | |
163 DEMUXER_TYPE_DEMUXERS, | |
164 0, // no autodetect | |
165 NULL, | |
166 demux_demuxers_fill_buffer, | |
167 NULL, | |
168 demux_close_demuxers, | |
169 demux_demuxers_seek, | |
16876
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
170 demux_demuxers_control |
16175 | 171 }; |