annotate libmpdemux/demux_mf.c @ 24576:6704a924d4aa

According to MSDN a thread must call CoUninitialize once for each successful call it has made to CoInitialize or CoInitializeEx, including any call that returns S_FALSE. Only the CoUninitialize call corresponding to the CoInitialize or CoInitializeEx call that initialized the library can close it. patch by Gianluigi Tiesi, mplayer netfarm it
author diego
date Sun, 23 Sep 2007 20:37:33 +0000
parents bbc011e59732
children 87ca3bce504a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
1
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
2 #include <stdio.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
3 #include <stdlib.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
4 #include <unistd.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
5 #include <sys/types.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
6 #include <sys/stat.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
7 #include <unistd.h>
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
8
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
9 #include "config.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
10 #include "mp_msg.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
11 #include "help_mp.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
12
22605
4d81dbdf46b9 Add explicit location for headers from the stream/ directory.
diego
parents: 22083
diff changeset
13 #include "stream/stream.h"
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
14 #include "demuxer.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
15 #include "stheader.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
16 #include "mf.h"
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
17
17636
b849a99cdc3c Second-try commit of this patch.
corey
parents: 17624
diff changeset
18 static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
19 mf_t * mf = (mf_t *)demuxer->priv;
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
20 sh_video_t * sh_video = demuxer->video->sh;
19180
c5ee8c9808ef fix 3 bugs in libmpdemux/demux_mf.c
gpoirier
parents: 17636
diff changeset
21 int newpos = (flags & 1)?0:mf->curr_frame - 1;
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
22
19180
c5ee8c9808ef fix 3 bugs in libmpdemux/demux_mf.c
gpoirier
parents: 17636
diff changeset
23 if ( flags & 2 ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
24 else newpos+=rel_seek_secs * sh_video->fps;
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
25 if ( newpos < 0 ) newpos=0;
19180
c5ee8c9808ef fix 3 bugs in libmpdemux/demux_mf.c
gpoirier
parents: 17636
diff changeset
26 if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1;
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
27 mf->curr_frame=newpos;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
28 }
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
29
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
30 // return value:
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
31 // 0 = EOF or no stream found
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
32 // 1 = successfully read a packet
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
33 static int demux_mf_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds){
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
34 mf_t * mf;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
35 struct stat fs;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
36 FILE * f;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
37
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
38 mf=(mf_t*)demuxer->priv;
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
39 if ( mf->curr_frame >= mf->nr_of_files ) return 0;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
40
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
41 stat( mf->names[mf->curr_frame],&fs );
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
42 // printf( "[demux_mf] frame: %d (%s,%d)\n",mf->curr_frame,mf->names[mf->curr_frame],fs.st_size );
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
43
9992
e33317c4d9af fopen requires binary flag on windows, too
faust3
parents: 9945
diff changeset
44 #ifdef WIN32
e33317c4d9af fopen requires binary flag on windows, too
faust3
parents: 9945
diff changeset
45 if ( !( f=fopen( mf->names[mf->curr_frame],"rb" ) ) ) return 0;
e33317c4d9af fopen requires binary flag on windows, too
faust3
parents: 9945
diff changeset
46 #else
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
47 if ( !( f=fopen( mf->names[mf->curr_frame],"r" ) ) ) return 0;
9992
e33317c4d9af fopen requires binary flag on windows, too
faust3
parents: 9945
diff changeset
48 #endif
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
49 {
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
50 sh_video_t * sh_video = demuxer->video->sh;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
51 demux_packet_t * dp = new_demux_packet( fs.st_size );
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
52 if ( !fread( dp->buffer,fs.st_size,1,f ) ) return 0;
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
53 dp->pts=mf->curr_frame / sh_video->fps;
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
54 dp->pos=mf->curr_frame;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
55 dp->flags=0;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
56 // append packet to DS stream:
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
57 ds_add_packet( demuxer->video,dp );
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
58 }
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
59 fclose( f );
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
60
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
61 mf->curr_frame++;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
62 return 1;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
63 }
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
64
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
65 static demuxer_t* demux_open_mf(demuxer_t* demuxer){
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
66 sh_video_t *sh_video = NULL;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
67 mf_t *mf = NULL;
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
68
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
69 if(!demuxer->stream->url) return NULL;
22083
59982606e602 mf demuxer only works with mf:// urls, so check for that.
reimar
parents: 19794
diff changeset
70 if(strncmp(demuxer->stream->url, "mf://", 5)) return NULL;
9148
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
71
17624
7b30bef00830 allow autodetection of pictures type when using mf://@file.list syntax
iive
parents: 17569
diff changeset
72
7b30bef00830 allow autodetection of pictures type when using mf://@file.list syntax
iive
parents: 17569
diff changeset
73 mf=open_mf(demuxer->stream->url + 5);
7b30bef00830 allow autodetection of pictures type when using mf://@file.list syntax
iive
parents: 17569
diff changeset
74 if(!mf) return NULL;
7b30bef00830 allow autodetection of pictures type when using mf://@file.list syntax
iive
parents: 17569
diff changeset
75
9148
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
76 if(!mf_type){
17624
7b30bef00830 allow autodetection of pictures type when using mf://@file.list syntax
iive
parents: 17569
diff changeset
77 char* p=strrchr(mf->names[0],'.');
9148
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
78 if(!p){
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
79 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
80 free( mf ); return NULL;
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
81 }
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
82 mf_type=strdup(p+1);
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
83 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
84 }
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
85
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
86 mf->curr_frame=0;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
87
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
88 demuxer->movi_start = 0;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
89 demuxer->movi_end = mf->nr_of_files - 1;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
90
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
91 // create a new video stream header
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
92 sh_video = new_sh_video(demuxer, 0);
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
93 // make sure the demuxer knows about the new video stream header
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
94 // (even though new_sh_video() ought to take care of it)
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
95 demuxer->video->sh = sh_video;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
96
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
97 // make sure that the video demuxer stream header knows about its
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
98 // parent video demuxer stream (this is getting wacky), or else
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
99 // video_read_properties() will choke
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
100 sh_video->ds = demuxer->video;
9148
946b14a9e743 type autodetection (from filemask/filelist extension)
arpi
parents: 7407
diff changeset
101
4656
04880518728d add initial mPNG support
pontscho
parents: 4643
diff changeset
102 if ( !strcasecmp( mf_type,"jpg" ) ||
5029
ef8a43b74075 Add IJPG decoder.
pontscho
parents: 4656
diff changeset
103 !(strcasecmp(mf_type, "jpeg"))) sh_video->format = mmioFOURCC('I', 'J', 'P', 'G');
7362
8ae490fbf89d TGA images (-mf on:type=tga) support
arpi
parents: 5810
diff changeset
104 else
4656
04880518728d add initial mPNG support
pontscho
parents: 4643
diff changeset
105 if ( !strcasecmp( mf_type,"png" )) sh_video->format = mmioFOURCC('M', 'P', 'N', 'G' );
7362
8ae490fbf89d TGA images (-mf on:type=tga) support
arpi
parents: 5810
diff changeset
106 else
8ae490fbf89d TGA images (-mf on:type=tga) support
arpi
parents: 5810
diff changeset
107 if ( !strcasecmp( mf_type,"tga" )) sh_video->format = mmioFOURCC('M', 'T', 'G', 'A' );
22903
bbc011e59732 BMP support for mf://
reimar
parents: 22605
diff changeset
108 else
bbc011e59732 BMP support for mf://
reimar
parents: 22605
diff changeset
109 if ( !strcasecmp( mf_type,"bmp" )) sh_video->format = mmioFOURCC('b', 'm', 'p', ' ' );
9534
87e03d96a4cd add support for sgi files to mencoder patch by (Todd Kirby <slapcat at pacbell dot net>)
michael
parents: 9148
diff changeset
110 else
87e03d96a4cd add support for sgi files to mencoder patch by (Todd Kirby <slapcat at pacbell dot net>)
michael
parents: 9148
diff changeset
111 if (!strcasecmp( mf_type,"sgi" )) sh_video->format = mmioFOURCC('S', 'G', 'I', '1');
87e03d96a4cd add support for sgi files to mencoder patch by (Todd Kirby <slapcat at pacbell dot net>)
michael
parents: 9148
diff changeset
112 else { mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" ); free( mf ); return NULL; }
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
113
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
114 sh_video->disp_w = mf_w;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
115 sh_video->disp_h = mf_h;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
116 sh_video->fps = mf_fps;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
117 sh_video->frametime = 1 / sh_video->fps;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
118
4556
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
119 // emulate BITMAPINFOHEADER:
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
120 sh_video->bih=malloc(sizeof(BITMAPINFOHEADER));
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
121 memset(sh_video->bih,0,sizeof(BITMAPINFOHEADER));
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
122 sh_video->bih->biSize=40;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
123 sh_video->bih->biWidth = mf_w;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
124 sh_video->bih->biHeight = mf_h;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
125 sh_video->bih->biPlanes=1;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
126 sh_video->bih->biBitCount=24;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
127 sh_video->bih->biCompression=sh_video->format;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
128 sh_video->bih->biSizeImage=sh_video->bih->biWidth*sh_video->bih->biHeight*3;
90a535d87e7b emulating BITMAPINFOHDR (for win32 codecs)
arpi
parents: 4550
diff changeset
129
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
130 /* disable seeking */
4565
be1562b2c2d0 finalize mfi support.
pontscho
parents: 4556
diff changeset
131 // demuxer->seekable = 0;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
132
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
133 demuxer->priv=(void*)mf;
4550
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
134
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
135 return demuxer;
ff9f62e4bdd8 add mfi demuxer
pontscho
parents:
diff changeset
136 }
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5029
diff changeset
137
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
138 static void demux_close_mf(demuxer_t* demuxer) {
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
139 mf_t *mf = demuxer->priv;
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5029
diff changeset
140
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
141 if(!mf)
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5029
diff changeset
142 return;
7407
8780415baa87 stream layer cleanup - part 1
arpi
parents: 7362
diff changeset
143 free(mf);
5810
8a357300d0ec Added demuxer uninit
albeu
parents: 5029
diff changeset
144 }
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
145
19220
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
146 static int demux_control_mf(demuxer_t *demuxer, int cmd, void *arg) {
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
147 mf_t *mf = (mf_t *)demuxer->priv;
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
148 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
149
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
150 switch(cmd) {
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
151 case DEMUXER_CTRL_GET_TIME_LENGTH:
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
152 *((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
153 return DEMUXER_CTRL_OK;
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
154
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
155 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
156 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
157 return DEMUXER_CTRL_DONTKNOW;
19220
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
158 *((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
159 return DEMUXER_CTRL_OK;
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
160
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
161 default:
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
162 return DEMUXER_CTRL_NOTIMPL;
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
163 }
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
164 }
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
165
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
166 demuxer_desc_t demuxer_desc_mf = {
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
167 "mf demuxer",
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
168 "mf",
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
169 "MF",
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
170 "?",
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
171 "multiframe?, pictures demuxer",
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
172 DEMUXER_TYPE_MF,
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
173 0, // no autodetect
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
174 NULL,
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
175 demux_mf_fill_buffer,
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
176 demux_open_mf,
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
177 demux_close_mf,
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
178 demux_seek_mf,
19220
fbd2391fcbb8 Implement DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS,
reimar
parents: 19180
diff changeset
179 demux_control_mf
16175
6b86089c2edd Demuxer modularization
rtognimp
parents: 9992
diff changeset
180 };