Mercurial > mplayer.hg
annotate libmpdemux/demux_mf.c @ 37003:2d8157b3b386
Fix the index passed to PutImage() for item type itVPotmeter.
Unlike the position for drawing the button (from bottom to top), the
index for the phase image has to be in the usual range, i.e. 0 for 0%
and numphases - 1 for 100%, so that the phase image can be designed
straightforwardly.
Fix the parameter although PutImage() currently doesn't work for item
type itVPotmeter at all.
author | ib |
---|---|
date | Fri, 28 Mar 2014 12:21:07 +0000 |
parents | 92dd1764392a |
children |
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) | |
36800
f3c835ddce85
demuxers: ensure that stream ids are correctly initialized.
reimar
parents:
35903
diff
changeset
|
150 demuxer->video->id = 0; |
4550 | 151 demuxer->video->sh = sh_video; |
152 | |
25033
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
153 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
|
154 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
|
155 break; |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
156 if (!type2format[i].type) { |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
157 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
|
158 free(mf); |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
159 return NULL; |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
160 } |
3dceb6c96307
Replace if-else constructs for type -> fourcc mapping by a table in demux_mf
reimar
parents:
25020
diff
changeset
|
161 sh_video->format = type2format[i].format; |
4550 | 162 |
163 sh_video->disp_w = mf_w; | |
164 sh_video->disp_h = mf_h; | |
165 sh_video->fps = mf_fps; | |
166 sh_video->frametime = 1 / sh_video->fps; | |
167 | |
4556 | 168 // emulate BITMAPINFOHEADER: |
32105 | 169 sh_video->bih=calloc(1, sizeof(*sh_video->bih)); |
4556 | 170 sh_video->bih->biSize=40; |
171 sh_video->bih->biWidth = mf_w; | |
172 sh_video->bih->biHeight = mf_h; | |
173 sh_video->bih->biPlanes=1; | |
174 sh_video->bih->biBitCount=24; | |
175 sh_video->bih->biCompression=sh_video->format; | |
176 sh_video->bih->biSizeImage=sh_video->bih->biWidth*sh_video->bih->biHeight*3; | |
177 | |
4550 | 178 /* disable seeking */ |
4565 | 179 // demuxer->seekable = 0; |
4550 | 180 |
7407 | 181 demuxer->priv=(void*)mf; |
4550 | 182 |
183 return demuxer; | |
184 } | |
5810 | 185 |
16175 | 186 static void demux_close_mf(demuxer_t* demuxer) { |
7407 | 187 mf_t *mf = demuxer->priv; |
5810 | 188 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29238
diff
changeset
|
189 free(mf); |
5810 | 190 } |
16175 | 191 |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
192 static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg) { |
35284 | 193 mf_t *mf = demuxer->priv; |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
194 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
|
195 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
196 switch(cmd) { |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
197 case DEMUXER_CTRL_GET_TIME_LENGTH: |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
198 *((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
|
199 return DEMUXER_CTRL_OK; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
200 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
201 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
|
202 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
|
203 return DEMUXER_CTRL_DONTKNOW; |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
204 *((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
|
205 return DEMUXER_CTRL_OK; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
206 |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
207 default: |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
208 return DEMUXER_CTRL_NOTIMPL; |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
209 } |
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
210 } |
16175 | 211 |
25707
d4fe6e23283e
Make all demuxer_desc_t const, thus moving them to .rodata
reimar
parents:
25062
diff
changeset
|
212 const demuxer_desc_t demuxer_desc_mf = { |
16175 | 213 "mf demuxer", |
214 "mf", | |
215 "MF", | |
216 "?", | |
217 "multiframe?, pictures demuxer", | |
218 DEMUXER_TYPE_MF, | |
219 0, // no autodetect | |
220 NULL, | |
221 demux_mf_fill_buffer, | |
222 demux_open_mf, | |
223 demux_close_mf, | |
224 demux_seek_mf, | |
19220
fbd2391fcbb8
Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents:
19180
diff
changeset
|
225 demux_control_mf |
16175 | 226 }; |