18
18
static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){
19
19
mf_t * mf = (mf_t *)demuxer->priv;
20
20
sh_video_t * sh_video = demuxer->video->sh;
21
int newpos = (flags & 1)?0:mf->curr_frame - 1;
21
int newpos = (flags & SEEK_ABSOLUTE)?0:mf->curr_frame - 1;
23
if ( flags & 2 ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
23
if ( flags & SEEK_FACTOR ) newpos+=rel_seek_secs*(mf->nr_of_files - 1);
24
24
else newpos+=rel_seek_secs * sh_video->fps;
25
25
if ( newpos < 0 ) newpos=0;
26
26
if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1;
41
41
stat( mf->names[mf->curr_frame],&fs );
42
42
// printf( "[demux_mf] frame: %d (%s,%d)\n",mf->curr_frame,mf->names[mf->curr_frame],fs.st_size );
45
44
if ( !( f=fopen( mf->names[mf->curr_frame],"rb" ) ) ) return 0;
47
if ( !( f=fopen( mf->names[mf->curr_frame],"r" ) ) ) return 0;
50
46
sh_video_t * sh_video = demuxer->video->sh;
51
47
demux_packet_t * dp = new_demux_packet( fs.st_size );
65
{ "bmp", mmioFOURCC('b', 'm', 'p', ' ') },
66
{ "jpeg", mmioFOURCC('I', 'J', 'P', 'G') },
67
{ "jpg", mmioFOURCC('I', 'J', 'P', 'G') },
68
{ "pcx", mmioFOURCC('p', 'c', 'x', ' ') },
69
{ "png", mmioFOURCC('M', 'P', 'N', 'G') },
70
{ "ptx", mmioFOURCC('p', 't', 'x', ' ') },
71
{ "tga", mmioFOURCC('M', 'T', 'G', 'A') },
72
{ "tif", mmioFOURCC('t', 'i', 'f', 'f') },
73
{ "sgi", mmioFOURCC('S', 'G', 'I', '1') },
74
{ "sun", mmioFOURCC('s', 'u', 'n', ' ') },
75
{ "ras", mmioFOURCC('s', 'u', 'n', ' ') },
76
{ "ra", mmioFOURCC('s', 'u', 'n', ' ') },
77
{ "im1", mmioFOURCC('s', 'u', 'n', ' ') },
78
{ "im8", mmioFOURCC('s', 'u', 'n', ' ') },
79
{ "im24", mmioFOURCC('s', 'u', 'n', ' ') },
80
{ "sunras", mmioFOURCC('s', 'u', 'n', ' ') },
65
84
static demuxer_t* demux_open_mf(demuxer_t* demuxer){
66
85
sh_video_t *sh_video = NULL;
69
89
if(!demuxer->stream->url) return NULL;
70
90
if(strncmp(demuxer->stream->url, "mf://", 5)) return NULL;
99
119
// video_read_properties() will choke
100
120
sh_video->ds = demuxer->video;
102
if ( !strcasecmp( mf_type,"jpg" ) ||
103
!(strcasecmp(mf_type, "jpeg"))) sh_video->format = mmioFOURCC('I', 'J', 'P', 'G');
105
if ( !strcasecmp( mf_type,"png" )) sh_video->format = mmioFOURCC('M', 'P', 'N', 'G' );
107
if ( !strcasecmp( mf_type,"tga" )) sh_video->format = mmioFOURCC('M', 'T', 'G', 'A' );
109
if ( !strcasecmp( mf_type,"bmp" )) sh_video->format = mmioFOURCC('b', 'm', 'p', ' ' );
111
if (!strcasecmp( mf_type,"sgi" )) sh_video->format = mmioFOURCC('S', 'G', 'I', '1');
112
else { mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" ); free( mf ); return NULL; }
122
for (i = 0; type2format[i].type; i++)
123
if (strcasecmp(mf_type, type2format[i].type) == 0)
125
if (!type2format[i].type) {
126
mp_msg(MSGT_DEMUX, MSGL_INFO, "[demux_mf] unknown input file type.\n" );
130
sh_video->format = type2format[i].format;
114
132
sh_video->disp_w = mf_w;
115
133
sh_video->disp_h = mf_h;