Mercurial > mplayer.hg
comparison libmpdemux/demux_fli.c @ 3544:61b89c10e4e8
fli seeking implemented
author | arpi |
---|---|
date | Mon, 17 Dec 2001 00:24:03 +0000 |
parents | 85feae032869 |
children | e47b32c0eca8 |
comparison
equal
deleted
inserted
replaced
3543:5a11cbf8791f | 3544:61b89c10e4e8 |
---|---|
20 int current_frame; | 20 int current_frame; |
21 off_t *filepos; | 21 off_t *filepos; |
22 unsigned int *frame_size; | 22 unsigned int *frame_size; |
23 } fli_frames_t; | 23 } fli_frames_t; |
24 | 24 |
25 void demux_seek_fli(demuxer_t *demuxer,float rel_seek_secs,int flags){ | |
26 fli_frames_t *frames = (fli_frames_t *)demuxer->priv; | |
27 sh_video_t *sh_video = demuxer->video->sh; | |
28 int newpos=(flags&1)?0:frames->current_frame; | |
29 if(flags&2){ | |
30 // float 0..1 | |
31 newpos+=rel_seek_secs*frames->num_frames; | |
32 } else { | |
33 // secs | |
34 newpos+=rel_seek_secs*sh_video->fps; | |
35 } | |
36 if(newpos<0) newpos=0; else | |
37 if(newpos>frames->num_frames) newpos=frames->num_frames; | |
38 frames->current_frame=newpos; | |
39 } | |
40 | |
25 // return value: | 41 // return value: |
26 // 0 = EOF or no stream found | 42 // 0 = EOF or no stream found |
27 // 1 = successfully read a packet | 43 // 1 = successfully read a packet |
28 int demux_fli_fill_buffer(demuxer_t *demuxer){ | 44 int demux_fli_fill_buffer(demuxer_t *demuxer){ |
29 fli_frames_t *frames = (fli_frames_t *)demuxer->priv; | 45 fli_frames_t *frames = (fli_frames_t *)demuxer->priv; |
30 sh_video_t *sh_video = demuxer->video->sh; | 46 sh_video_t *sh_video = demuxer->video->sh; |
31 | 47 |
32 // see if the end has been reached | 48 // see if the end has been reached |
33 if (frames->current_frame == frames->num_frames) | 49 if (frames->current_frame >= frames->num_frames) |
34 return 0; | 50 return 0; |
35 | 51 |
36 // fetch the frame from the file | 52 // fetch the frame from the file |
37 // first, position the file properly since ds_read_packet() doesn't | 53 // first, position the file properly since ds_read_packet() doesn't |
38 // seem to do it, even though it takes a file offset as a parameter | 54 // seem to do it, even though it takes a file offset as a parameter |