diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-07-31 23:18:16 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-07-31 23:18:16 +0000 |
commit | 9e3123d6a3f686998c6e83ceec33760efaa1e56f (patch) | |
tree | afeebbb25b6d57ccddd5036c3e925440d6b4c697 /seek.c | |
parent | 5f8d90d83b69b6945f49cea655c374f430eb6179 (diff) | |
download | mpv-9e3123d6a3f686998c6e83ceec33760efaa1e56f.tar.bz2 mpv-9e3123d6a3f686998c6e83ceec33760efaa1e56f.tar.xz |
largefile patch by Stephen Davies <steve@daviesfam.org>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1429 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'seek.c')
-rw-r--r-- | seek.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -58,6 +58,7 @@ if(demuxer->file_format==DEMUXER_TYPE_AVI && demuxer->idx_size<=0){ switch(demuxer->file_format){ + //FIXME: OFF_T - Didn't check AVI case yet (avi files can't be >2G anyway?) case DEMUXER_TYPE_AVI: { //================= seek in AVI ========================== int rel_seek_frames=rel_seek_secs*sh_video->fps; @@ -187,12 +188,14 @@ switch(demuxer->file_format){ } break; + //FIXME: OFF_T - didn't test ASF case yet (don't have a large asf...) + //FIXME: reports good or bad to steve@daviesfam.org please case DEMUXER_TYPE_ASF: { //================= seek in ASF ========================== float p_rate=10; // packets / sec - int rel_seek_packs=rel_seek_secs*p_rate; - int rel_seek_bytes=rel_seek_packs*asf_packetsize; - int newpos; + off_t rel_seek_packs=rel_seek_secs*p_rate; // FIXME: int may be enough? + off_t rel_seek_bytes=rel_seek_packs*asf_packetsize; + off_t newpos; //printf("ASF: packs: %d duration: %d \n",(int)fileh.packets,*((int*)&fileh.duration)); // printf("ASF_seek: %d secs -> %d packs -> %d bytes \n", // rel_seek_secs,rel_seek_packs,rel_seek_bytes); @@ -228,14 +231,18 @@ switch(demuxer->file_format){ case DEMUXER_TYPE_MPEG_ES: case DEMUXER_TYPE_MPEG_PS: { //================= seek in MPEG ========================== - int newpos; + off_t newpos; if(!sh_video->i_bps) // unspecified? newpos=demuxer->filepos+2324*75*rel_seek_secs; // 174.3 kbyte/sec else newpos=demuxer->filepos+(sh_video->i_bps)*rel_seek_secs; if(newpos<seek_to_byte) newpos=seek_to_byte; +#ifdef _LARGEFILE_SOURCE + newpos&=~((long long)STREAM_BUFFER_SIZE-1); /* sector boundary */ +#else newpos&=~(STREAM_BUFFER_SIZE-1); /* sector boundary */ +#endif stream_seek(demuxer->stream,newpos); // re-sync video: |