Mercurial > mplayer.hg
annotate seek.c @ 1493:ba230d9b252a
*** empty log message ***
author | gabucino |
---|---|
date | Sun, 12 Aug 2001 08:00:10 +0000 |
parents | b895f95e7657 |
children |
rev | line source |
---|---|
1405 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
1430 | 3 #include <unistd.h> |
1403 | 4 |
1466 | 5 //extern int verbose; // defined in mplayer.c |
1405 | 6 |
7 #include "config.h" | |
8 | |
9 #include "stream.h" | |
10 #include "demuxer.h" | |
11 #include "parse_es.h" | |
12 | |
13 #include "wine/mmreg.h" | |
14 #include "wine/avifmt.h" | |
15 #include "wine/vfw.h" | |
16 | |
17 #include "codec-cfg.h" | |
18 #include "stheader.h" | |
19 | |
1466 | 20 //extern void resync_audio_stream(sh_audio_t *sh_audio); |
21 //extern void skip_audio_frame(sh_audio_t *sh_audio); | |
1405 | 22 |
1466 | 23 //extern int asf_packetsize; // for seeking |
1405 | 24 |
1466 | 25 //extern char* current_module; // for debugging |
1405 | 26 |
27 // flags: | |
28 // 0x1 - absolute/relative | |
29 // 0x2 - keyframe/hard | |
30 | |
1466 | 31 int demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,int flags); |
32 int demux_seek_asf(demuxer_t *demuxer,float rel_seek_secs,int flags); | |
33 int demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,int flags); | |
34 | |
1405 | 35 int demux_seek(demuxer_t *demuxer,float rel_seek_secs,int flags){ |
36 demux_stream_t *d_audio=demuxer->audio; | |
37 demux_stream_t *d_video=demuxer->video; | |
38 sh_audio_t *sh_audio=d_audio->sh; | |
39 sh_video_t *sh_video=d_video->sh; | |
1466 | 40 // float skip_audio_secs=0; |
1403 | 41 |
1485
b895f95e7657
AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents:
1466
diff
changeset
|
42 //if(demuxer->file_format==DEMUXER_TYPE_AVI && demuxer->idx_size<=0){ |
b895f95e7657
AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents:
1466
diff
changeset
|
43 // printf("Can't seek in raw .AVI streams! (index required, try with the -idx switch!) \n"); |
b895f95e7657
AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents:
1466
diff
changeset
|
44 // return 0; |
b895f95e7657
AVI demuxer cleanups, fileformat-dependent stuff moved to priv_t
arpi
parents:
1466
diff
changeset
|
45 //} |
1405 | 46 |
1466 | 47 // current_module="seek"; |
1405 | 48 |
1403 | 49 // clear demux buffers: |
50 if(sh_audio){ ds_free_packs(d_audio);sh_audio->a_buffer_len=0;} | |
51 ds_free_packs(d_video); | |
52 | |
1421 | 53 demuxer->stream->eof=0; // clear eof flag |
1466 | 54 |
55 if(sh_audio) sh_audio->timer=0; | |
56 sh_video->timer=0; // !!!!!! | |
1421 | 57 |
1403 | 58 // printf("sh_audio->a_buffer_len=%d \n",sh_audio->a_buffer_len); |
59 | |
60 | |
1405 | 61 switch(demuxer->file_format){ |
1403 | 62 |
1466 | 63 case DEMUXER_TYPE_AVI: |
64 demux_seek_avi(demuxer,rel_seek_secs,flags); break; | |
1403 | 65 |
1466 | 66 case DEMUXER_TYPE_ASF: |
67 demux_seek_asf(demuxer,rel_seek_secs,flags); break; | |
1403 | 68 |
69 case DEMUXER_TYPE_MPEG_ES: | |
1466 | 70 case DEMUXER_TYPE_MPEG_PS: |
71 demux_seek_mpg(demuxer,rel_seek_secs,flags); break; | |
1403 | 72 |
1405 | 73 } // switch(demuxer->file_format) |
1403 | 74 |
1405 | 75 return 1; |
76 } |