Mercurial > mplayer.hg
annotate libmpdemux/demux_demuxers.c @ 36358:d53606fdb693
Autodetect if pthread_cancel is available.
Necessary for properly working reception of streams
via UDP, e.g. via FFmpeg's RTSP-over-UDP implementation.
author | reimar |
---|---|
date | Sat, 21 Sep 2013 16:39:24 +0000 |
parents | f4828b517f4a |
children | a50d90b27e2d |
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) { |
33237
a8619bfabf84
Add a alloc_demuxer function that ensures all the critical stuff is
reimar
parents:
32604
diff
changeset
|
38 // Video is the most important :-) |
a8619bfabf84
Add a alloc_demuxer function that ensures all the critical stuff is
reimar
parents:
32604
diff
changeset
|
39 demuxer_t* ret = alloc_demuxer(vd->stream, DEMUXER_TYPE_DEMUXERS, vd->filename); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
40 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
41 |
18885 | 42 priv = malloc(sizeof(dd_priv_t)); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
43 priv->vd = vd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
44 priv->ad = ad; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
45 priv->sd = sd; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
46 ret->priv = priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
47 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
48 ret->type = ret->file_format = DEMUXER_TYPE_DEMUXERS; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
49 ret->seekable = vd->seekable && ad->seekable && sd->seekable; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
50 |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
51 ret->video = vd->video; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
52 ret->audio = ad->audio; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
53 ret->sub = sd->sub; |
29768
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
54 if (sd && sd != vd && sd != ad) sd->sub->non_interleaved = 1; |
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
55 |
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
56 // without these, demux_demuxers_fill_buffer will never be called, |
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
57 // but they break the demuxer-specific code in video.c |
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
58 #if 0 |
29568
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
59 if (vd) vd->video->demuxer = ret; |
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
60 if (ad) ad->audio->demuxer = ret; |
ccb7b7f4b764
Hack demux_demuxers so that demux_demuxers_fill_buffer is actually called.
reimar
parents:
29263
diff
changeset
|
61 if (sd) sd->sub->demuxer = ret; |
29768
fa5a020677d6
Unbreak the demuxer-specific code in video.c with e.g.
reimar
parents:
29569
diff
changeset
|
62 #endif |
16175 | 63 |
26817
a0c157a99aac
Make internal subtitle and subtitle switching work with -audiofile
reimar
parents:
26297
diff
changeset
|
64 // 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
|
65 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
|
66 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
|
67 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
|
68 |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
69 return ret; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
70 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
71 |
16175 | 72 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
|
73 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
74 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
75 priv=demux->priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
76 |
29569
3e13839031b3
Add a hack to ensure data from e.g. mov format -subfile gets read at all
reimar
parents:
29568
diff
changeset
|
77 // 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
|
78 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
|
79 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
|
80 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
|
81 if(priv->vd && priv->vd->video == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
82 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
|
83 else if(priv->ad && priv->ad->audio == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
84 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
|
85 else if(priv->sd && priv->sd->sub == ds) |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
86 return demux_fill_buffer(priv->sd,ds); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
87 |
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
|
88 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
|
89 return 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
90 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
91 |
17636 | 92 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
|
93 dd_priv_t* priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
94 float pos; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
95 priv=demuxer->priv; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
96 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
97 priv->ad->stream->eof = 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
98 priv->sd->stream->eof = 0; |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
99 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
100 // Seek video |
17636 | 101 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
|
102 // Get the new pos |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
103 pos = demuxer->video->pts; |
20071
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
104 if (!pos) { |
33238
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
105 // since the video demuxer might provide multiple |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
106 // streams (e.g. subs) we might have to call |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
107 // demux_fill_buffer multiple times. |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
108 int limit = 10; |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
109 do { |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
110 demux_fill_buffer(priv->vd, demuxer->video); |
b09a5d9ff050
Call demux_fill_buffer multiple times when trying to get a
reimar
parents:
33237
diff
changeset
|
111 } while (--limit && !demuxer->video->first); |
20071
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
112 if (demuxer->video->first) |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
113 pos = demuxer->video->first->pts; |
672123d27ae3
Fix demux_demuxers seeking if the video demuxer does not set
reimar
parents:
18958
diff
changeset
|
114 } |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
115 |
32604 | 116 if(priv->ad != priv->vd && demuxer->audio->sh) { |
26297 | 117 sh_audio_t* sh = demuxer->audio->sh; |
17636 | 118 demux_seek(priv->ad,pos,audio_delay,1); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
119 // In case the demuxer don't set pts |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
120 if(!demuxer->audio->pts) |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
121 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
|
122 } |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
123 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
124 if(priv->sd != priv->vd) |
17636 | 125 demux_seek(priv->sd,pos,audio_delay,1); |
4765
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
126 |
d0c2c8af46b4
Demuxers demuxer support for using external audiofile (or muxed subtitles).
albeu
parents:
diff
changeset
|
127 } |
5812 | 128 |
16175 | 129 static void demux_close_demuxers(demuxer_t* demuxer) { |
5812 | 130 dd_priv_t* priv = demuxer->priv; |
9710 | 131 stream_t *s; |
5812 | 132 |
133 if(priv->vd) | |
134 free_demuxer(priv->vd); | |
9710 | 135 if(priv->ad && priv->ad != priv->vd) { |
136 // That's a hack to free the audio file stream | |
137 // It's ok atm but we shouldn't free that here | |
138 s = priv->ad->stream; | |
5812 | 139 free_demuxer(priv->ad); |
9710 | 140 free_stream(s); |
141 } if(priv->sd && priv->sd != priv->vd && priv->sd != priv->ad) { | |
142 s = priv->sd->stream; | |
5812 | 143 free_demuxer(priv->sd); |
9710 | 144 free_stream(s); |
145 } | |
5812 | 146 |
147 free(priv); | |
148 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
149 |
16175 | 150 |
16876
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
151 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
|
152 dd_priv_t* priv = demuxer->priv; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
153 switch (cmd) { |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
154 case DEMUXER_CTRL_GET_TIME_LENGTH: |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
155 *((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
|
156 return DEMUXER_CTRL_OK; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
157 case DEMUXER_CTRL_GET_PERCENT_POS: |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
158 *((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
|
159 return DEMUXER_CTRL_OK; |
33239
6cb191a2cc1a
Pass through correct-pts setting from video sub demuxer.
reimar
parents:
33238
diff
changeset
|
160 case DEMUXER_CTRL_CORRECT_PTS: |
6cb191a2cc1a
Pass through correct-pts setting from video sub demuxer.
reimar
parents:
33238
diff
changeset
|
161 return demux_control(priv->vd, DEMUXER_CTRL_CORRECT_PTS, NULL); |
16876
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
162 } |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
163 return DEMUXER_CTRL_NOTIMPL; |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
164 } |
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
165 |
25707
d4fe6e23283e
Make all demuxer_desc_t const, thus moving them to .rodata
reimar
parents:
22605
diff
changeset
|
166 const demuxer_desc_t demuxer_desc_demuxers = { |
16175 | 167 "Demuxers demuxer", |
168 "", // Not selectable | |
169 "", | |
170 "?", | |
171 "internal use only", | |
172 DEMUXER_TYPE_DEMUXERS, | |
173 0, // no autodetect | |
174 NULL, | |
175 demux_demuxers_fill_buffer, | |
176 NULL, | |
177 demux_close_demuxers, | |
178 demux_demuxers_seek, | |
16876
9dd44ff7ec32
Provide DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS.
reimar
parents:
16291
diff
changeset
|
179 demux_demuxers_control |
16175 | 180 }; |