Mercurial > mplayer.hg
annotate libmpdemux/demux_mf.c @ 36295:0bd0297b073a
Handle special argument -1 to switch_ratio as intended.
Reset to the original aspect ratio that would have been used for
the very first rescaling rather than to the display size ratio.
This will now handle anamorphic videos correctly as well.
author | ib |
---|---|
date | Thu, 01 Aug 2013 21:18:14 +0000 |
parents | 389d43c448b3 |
children | f3c835ddce85 |
rev | line source |
---|---|
29238
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
1 /* |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
2 * This file is part of MPlayer. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
3 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
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:
28990
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:
28990
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:
28990
diff
changeset
|
7 * (at your option) any later version. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
8 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
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:
28990
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:
28990
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
12 * GNU General Public License for more details. |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
diff
changeset
|
13 * |
d643e4643313
Add standard license header to all files in libmpdemux.
diego
parents:
28990
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:
28990
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:
28990
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:
28990
diff
changeset
|
17 */ |
4550 | 18 |
19 #include <stdio.h> | |
20 #include <stdlib.h> | |
35903 | 21 #include <string.h> |
22 #include <strings.h> | |
4550 | 23 #include <unistd.h> |
24 #include <sys/types.h> | |
25 #include <sys/stat.h> | |
26 #include <unistd.h> | |
27 | |
28 #include "config.h" | |
29 #include "mp_msg.h" | |
30 #include "help_mp.h" | |
31 | |
22605
4d81dbdf46b9
Add explicit location for headers from the stream/ directory.
diego
parents:
22083
diff
changeset
|
32 #include "stream/stream.h" |
4550 | 33 #include "demuxer.h" |
34 #include "stheader.h" | |
35 #include "mf.h" | |
36 | |
17636 | 37 static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ |
35284 | 38 mf_t * mf = demuxer->priv; |
4565 | 39 sh_video_t * sh_video = demuxer->video->sh; |
25883
baf32110d3fc
Use defines to give names to the different seek flags.
reimar
parents:
25707
diff
changeset
|
40 int newpos = (flags & SEEK_ABSOLUTE)?0:mf->curr_frame - 1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
41 |
25883
baf32110d3fc
Use defines to give names to the different seek flags.
reimar
parents:
25707
diff
changeset
|
42 if ( flags & SEEK_FACTOR ) newpos+=rel_seek_secs*(mf->nr_of_files - 1); |
4565 | 43 else newpos+=rel_seek_secs * sh_video->fps; |
44 if ( newpos < 0 ) newpos=0; | |
19180 | 45 if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1; |
29488
6f7e97c44353
Set demuxer->filepos in mf demuxer, since the stream_tell fallback is not
reimar
parents:
29447
diff
changeset
|
46 demuxer->filepos=mf->curr_frame=newpos; |
4550 | 47 } |
48 | |
49 // return value: | |
50 // 0 = EOF or no stream found | |
51 // 1 = successfully read a packet | |
16175 | 52 static int demux_mf_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds){ |
35284 | 53 mf_t * mf = demuxer->priv; |
4550 | 54 struct stat fs; |
55 FILE * f; | |
56 | |
7407 | 57 if ( mf->curr_frame >= mf->nr_of_files ) return 0; |
4550 | 58 |
7407 | 59 stat( mf->names[mf->curr_frame],&fs ); |
60 // printf( "[demux_mf] frame: %d (%s,%d)\n",mf->curr_frame,mf->names[mf->curr_frame],fs.st_size ); | |
4550 | 61 |
9992 | 62 if ( !( f=fopen( mf->names[mf->curr_frame],"rb" ) ) ) return 0; |
4550 | 63 { |
64 sh_video_t * sh_video = demuxer->video->sh; | |
65 demux_packet_t * dp = new_demux_packet( fs.st_size ); | |
35285 | 66 if ( !fread( dp->buffer,fs.st_size,1,f ) ) { |
67 fclose(f); | |
68 free_demux_packet(dp); | |
69 return 0; | |
70 } | |
7407 | 71 dp->pts=mf->curr_frame / sh_video->fps; |
72 dp->pos=mf->curr_frame; | |
34947
1e843d908eae
For mf:// all frames are keyframes, mark them as such.
reimar
parents:
34554
diff
changeset
|
73 dp->flags=1; |
4550 | 74 // append packet to DS stream: |
75 ds_add_packet( demuxer->video,dp ); | |
76 } | |
77 fclose( f ); | |
78 | |
29488
6f7e97c44353
Set demuxer->filepos in mf demuxer, since the stream_tell fallback is not
reimar
parents:
29447
diff
changeset
|
79 demuxer->filepos=mf->curr_frame++; |
4550 | 80 return 1; |
81 } | |
82 | |
28990
e2552a27678c
map jls (jpeg-ls), thm and db (thumbnails) files to jpg
compn
parents:
26711
diff
changeset
|
83 // force extension/type to have a fourcc |
e2552a27678c
map jls (jpeg-ls), thm and db (thumbnails) files to jpg
compn
parents:
26711
diff
changeset
|
84 |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
85 static const struct { |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
86 const char *type; |
25062
25ee4d06a2df
100l, fix uint32_t* instead of uint32_t typo in demux_mf type->fourcc table
reimar
parents:
25034
diff
changeset
|
87 uint32_t format; |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
88 } type2format[] = { |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
89 { "bmp", mmioFOURCC('b', 'm', 'p', ' ') }, |
29447 | 90 { "dpx", mmioFOURCC('d', 'p', 'x', ' ') }, |
34499
7247b323cfc3
demux_mf: add j2c and jpc as jpeg2k, add tiff extension as tif image.
compn
parents:
32537
diff
changeset
|
91 { "j2c", mmioFOURCC('M', 'J', '2', 'C') }, |
30132 | 92 { "j2k", mmioFOURCC('M', 'J', '2', 'C') }, |
93 { "jp2", mmioFOURCC('M', 'J', '2', 'C') }, | |
34499
7247b323cfc3
demux_mf: add j2c and jpc as jpeg2k, add tiff extension as tif image.
compn
parents:
32537
diff
changeset
|
94 { "jpc", mmioFOURCC('M', 'J', '2', 'C') }, |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
95 { "jpeg", mmioFOURCC('I', 'J', 'P', 'G') }, |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
96 { "jpg", mmioFOURCC('I', 'J', 'P', 'G') }, |
34554 | 97 { "jps", mmioFOURCC('I', 'J', 'P', 'G') }, |
28990
e2552a27678c
map jls (jpeg-ls), thm and db (thumbnails) files to jpg
compn
parents:
26711
diff
changeset
|
98 { "jls", mmioFOURCC('I', 'J', 'P', 'G') }, |
e2552a27678c
map jls (jpeg-ls), thm and db (thumbnails) files to jpg
compn
parents:
26711
diff
changeset
|
99 { "thm", mmioFOURCC('I', 'J', 'P', 'G') }, |
e2552a27678c
map jls (jpeg-ls), thm and db (thumbnails) files to jpg
compn
parents:
26711
diff
changeset
|
100 { "db", mmioFOURCC('I', 'J', 'P', 'G') }, |
25961 | 101 { "pcx", mmioFOURCC('p', 'c', 'x', ' ') }, |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
102 { "png", mmioFOURCC('M', 'P', 'N', 'G') }, |
34554 | 103 { "pns", mmioFOURCC('M', 'P', 'N', 'G') }, |
26711 | 104 { "ptx", mmioFOURCC('p', 't', 'x', ' ') }, |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
105 { "tga", mmioFOURCC('M', 'T', 'G', 'A') }, |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
106 { "tif", mmioFOURCC('t', 'i', 'f', 'f') }, |
34499
7247b323cfc3
demux_mf: add j2c and jpc as jpeg2k, add tiff extension as tif image.
compn
parents:
32537
diff
changeset
|
107 { "tiff", mmioFOURCC('t', 'i', 'f', 'f') }, |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
108 { "sgi", mmioFOURCC('S', 'G', 'I', '1') }, |
26070 | 109 { "sun", mmioFOURCC('s', 'u', 'n', ' ') }, |
110 { "ras", mmioFOURCC('s', 'u', 'n', ' ') }, | |
111 { "ra", mmioFOURCC('s', 'u', 'n', ' ') }, | |
112 { "im1", mmioFOURCC('s', 'u', 'n', ' ') }, | |
113 { "im8", mmioFOURCC('s', 'u', 'n', ' ') }, | |
114 { "im24", mmioFOURCC('s', 'u', 'n', ' ') }, | |
115 { "sunras", mmioFOURCC('s', 'u', 'n', ' ') }, | |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
116 { NULL, 0 } |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
117 }; |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
118 |
16175 | 119 static demuxer_t* demux_open_mf(demuxer_t* demuxer){ |
4550 | 120 sh_video_t *sh_video = NULL; |
121 mf_t *mf = NULL; | |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
122 int i; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
123 |
7407 | 124 if(!demuxer->stream->url) return NULL; |
22083
59982606e602
mf demuxer only works with mf:// urls, so check for that.
reimar
parents:
19794
diff
changeset
|
125 if(strncmp(demuxer->stream->url, "mf://", 5)) return NULL; |
9148
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
126 |
17624
7b30bef00830
allow autodetection of pictures type when using mf://@file.list syntax
iive
parents:
17569
diff
changeset
|
127 |
7b30bef00830
allow autodetection of pictures type when using mf://@file.list syntax
iive
parents:
17569
diff
changeset
|
128 mf=open_mf(demuxer->stream->url + 5); |
7b30bef00830
allow autodetection of pictures type when using mf://@file.list syntax
iive
parents:
17569
diff
changeset
|
129 if(!mf) return NULL; |
7b30bef00830
allow autodetection of pictures type when using mf://@file.list syntax
iive
parents:
17569
diff
changeset
|
130 |
9148
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
131 if(!mf_type){ |
17624
7b30bef00830
allow autodetection of pictures type when using mf://@file.list syntax
iive
parents:
17569
diff
changeset
|
132 char* p=strrchr(mf->names[0],'.'); |
9148
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
133 if(!p){ |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
134 mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] file type was not set! (try -mf type=xxx)\n" ); |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
135 free( mf ); return NULL; |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
136 } |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
137 mf_type=strdup(p+1); |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
138 mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] file type was not set! trying 'type=%s'...\n", mf_type); |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
139 } |
946b14a9e743
type autodetection (from filemask/filelist extension)
arpi
parents:
7407
diff
changeset
|
140 |
29488
6f7e97c44353
Set demuxer->filepos in mf demuxer, since the stream_tell fallback is not
reimar
parents:
29447
diff
changeset
|
141 demuxer->filepos=mf->curr_frame=0; |
4550 | 142 |
143 demuxer->movi_start = 0; | |
144 demuxer->movi_end = mf->nr_of_files - 1; | |
145 | |
146 // create a new video stream header | |
147 sh_video = new_sh_video(demuxer, 0); | |
148 // make sure the demuxer knows about the new video stream header | |
149 // (even though new_sh_video() ought to take care of it) | |
150 demuxer->video->sh = sh_video; | |
151 | |
152 // make sure that the video demuxer stream header knows about its | |
153 // parent video demuxer stream (this is getting wacky), or else | |
154 // video_read_properties() will choke | |
155 sh_video->ds = demuxer->video; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
156 |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
157 for (i = 0; type2format[i].type; i++) |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
158 if (strcasecmp(mf_type, type2format[i].type) == 0) |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
159 break; |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
160 if (!type2format[i].type) { |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
161 mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" ); |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
162 free(mf); |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
163 return NULL; |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
164 } |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
165 sh_video->format = type2format[i].format; |
4550 | 166 |
167 sh_video->disp_w = mf_w; | |
168 sh_video->disp_h = mf_h; | |
169 sh_video->fps = mf_fps; | |
170 sh_video->frametime = 1 / sh_video->fps; | |
171 | |
4556 | 172 // emulate BITMAPINFOHEADER: |
32105 | 173 sh_video->bih=calloc(1, sizeof(*sh_video->bih)); |
4556 | 174 sh_video->bih->biSize=40; |
175 sh_video->bih->biWidth = mf_w; | |
176 sh_video->bih->biHeight = mf_h; | |
177 sh_video->bih->biPlanes=1; | |
178 sh_video->bih->biBitCount=24; | |
179 sh_video->bih->biCompression=sh_video->format; | |
180 sh_video->bih->biSizeImage=sh_video->bih->biWidth*sh_video->bih->biHeight*3; | |
181 | |
4550 | 182 /* disable seeking */ |
4565 | 183 // demuxer->seekable = 0; |
4550 | 184 |
7407 | 185 demuxer->priv=(void*)mf; |
4550 | 186 |
187 return demuxer; | |
188 } | |
5810 | 189 |
16175 | 190 static void demux_close_mf(demuxer_t* demuxer) { |
7407 | 191 mf_t *mf = demuxer->priv; |
5810 | 192 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
193 free(mf); |
5810 | 194 } |
16175 | 195 |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
196 static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg) { |
35284 | 197 mf_t *mf = demuxer->priv; |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
198 sh_video_t *sh_video = demuxer->video->sh; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
199 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
200 switch(cmd) { |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
201 case DEMUXER_CTRL_GET_TIME_LENGTH: |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
202 *((double *)arg) = (double)mf->nr_of_files / sh_video->fps; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
203 return DEMUXER_CTRL_OK; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
204 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
205 case DEMUXER_CTRL_GET_PERCENT_POS: |
19794
0951c3e8864b
Avoid division by zero DEMUXER_CTRL_GET_PERCENT_POS with only one frame by just
reimar
parents:
19220
diff
changeset
|
206 if (mf->nr_of_files <= 1) |
0951c3e8864b
Avoid division by zero DEMUXER_CTRL_GET_PERCENT_POS with only one frame by just
reimar
parents:
19220
diff
changeset
|
207 return DEMUXER_CTRL_DONTKNOW; |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
208 *((int *)arg) = 100 * mf->curr_frame / (mf->nr_of_files - 1); |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
209 return DEMUXER_CTRL_OK; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
210 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
211 default: |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
212 return DEMUXER_CTRL_NOTIMPL; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
213 } |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
214 } |
16175 | 215 |
25707
d4fe6e23283e
Make all demuxer_desc_t const, thus moving them to .rodata
reimar
parents:
25062
diff
changeset
|
216 const demuxer_desc_t demuxer_desc_mf = { |
16175 | 217 "mf demuxer", |
218 "mf", | |
219 "MF", | |
220 "?", | |
221 "multiframe?, pictures demuxer", | |
222 DEMUXER_TYPE_MF, | |
223 0, // no autodetect | |
224 NULL, | |
225 demux_mf_fill_buffer, | |
226 demux_open_mf, | |
227 demux_close_mf, | |
228 demux_seek_mf, | |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
229 demux_control_mf |
16175 | 230 }; |