Update of /cvsroot/freevo/freevo/WIP/Thomas/mplayer-patches
In directory sc8-pr-cvs1:/tmp/cvs-serv21572
Modified Files:
mplayer_timeshift2.patch
Removed Files:
mplayer_timeshift3.patch
Log Message:
patch was incomplete.
Index: mplayer_timeshift2.patch
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/Thomas/mplayer-patches/mplayer_timeshift2.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** mplayer_timeshift2.patch 16 Jun 2003 21:21:42 -0000 1.2
--- mplayer_timeshift2.patch 16 Jun 2003 23:03:06 -0000 1.3
***************
*** 121,122 ****
--- 121,309 ----
#define STREAM_BUFFER_SIZE 2048
+ diff -Naur ./libmpdemux/timeshift.c ../main2/libmpdemux/timeshift.c
+ --- ./libmpdemux/timeshift.c 1970-01-01 01:00:00.000000000 +0100
+ +++ ../main2/libmpdemux/timeshift.c 2003-06-17 02:04:48.000000000 +0200
+ @@ -0,0 +1,183 @@
+ +#include <stdlib.h>
+ +#include <fcntl.h>
+ +#include <stdarg.h>
+ +#include <errno.h>
+ +#include <netdb.h>
+ +#include <unistd.h>
+ +#include <string.h>
+ +#include <sys/ioctl.h>
+ +#include <sys/types.h>
+ +#include <sys/stat.h>
+ +#include <unistd.h>
+ +#include <sys/mman.h>
+ +#include <fcntl.h>
+ +#include <stdio.h>
+ +
+ +#include "../version.h"
+ +#include "stream.h"
+ +#include "network.h"
+ +
+ +#define OVERRUN_DELTA 1
+ +#define SEEK_END_OFFSET 1000000
+ +
+ +typedef struct tagHeaderInfo
+ +{
+ + char freevots[12] ;
+ + int file_size ;
+ + int file_size2 ;
+ + int header_size ;
+ + int header_size2 ;
+ + int data_size ;
+ + int data_size2 ;
+ + int writepointer ;
+ + int writepointer2 ;
+ + char reserved[20] ;
+ +} HEADERINFO ;
+ +
+ +stream_t* timeshift_open(char* url)
+ +{
+ + int fd = 0;
+ + caddr_t pointer ;
+ + stream_t* s = NULL ;
+ + fd = open( url, O_RDONLY ) ;
+ + if ( fd <= 0 ) return NULL ;
+ + /* read header */
+ + HEADERINFO header ;
+ + read( fd, &header, sizeof( header ) ) ;
+ + if (strcmp( header.freevots, "freevots") == 0)
+ + {
+ + pointer = mmap( 0, header.file_size, PROT_READ, MAP_SHARED, fd, 0 ) ;
+ + printf( "\nopen_timeshift: %s\n", url ) ;
+ + s = new_stream((int)pointer,STREAMTYPE_TIMESHIFT) ;
+ + }
+ + else
+ + {
+ + printf( "\nopen_timeshift failed: %s\n", url ) ;
+ + }
+ + close( fd ) ;
+ + return s;
+ +}
+ +
+ +int timeshift_read(stream_t* s,void *buffer,int size)
+ +{
+ + int readsize ;
+ + int maxpos ;
+ + int waititerations ;
+ + HEADERINFO * pHeader ;
+ + pHeader = (HEADERINFO*) s->fd ;
+ + readsize = 0 ;
+ +
+ + if ( msync( (void*)s->fd, pHeader->file_size, MS_SYNC ) == -1 )
+ + {
+ + fprintf( stderr, "Error in msync.\n" ) ;
+ + }
+ + waititerations = 0 ;
+ + /* Wait until size bytes are available */
+ + while ( ((s->pos) + size) > pHeader->writepointer)
+ + {
+ + /* That's a Buffer Underrun Condition */
+ + usleep( 20 * 1000 ) ;
+ + if ( msync( (void*)s->fd, pHeader->file_size, MS_SYNC ) == -1 )
+ + {
+ + fprintf( stderr, "Error in msync.\n" ) ;
+ + }
+ + if ( ++waititerations > 5 )
+ + {
+ + fprintf( stderr, "Buffer Underrun WP: %d / RP: %d\n", pHeader->writepointer,
s->pos ) ;
+ + break ;
+ + }
+ + }
+ +// fprintf( stderr, "Writepointer %d ", pHeader->writepointer ) ;
+ +
+ + /* Detect a Buffer Overrun Condition */
+ + if (( pHeader->writepointer - s->pos ) <= OVERRUN_DELTA )
+ + {
+ + fprintf( stderr, "Buffer Overrun: fd = %d, Pos = %d, WP = %d \n",
+ + s->fd, s->pos, pHeader->writepointer ) ;
+ + }
+ + /* find maximum readpos. It's either writepos or datasize. */
+ + if ( s->pos%pHeader->data_size > pHeader->writepointer%pHeader->data_size )
+ + {
+ + maxpos = pHeader->data_size ;
+ + }
+ + else
+ + {
+ + maxpos = pHeader->writepointer % pHeader->data_size ;
+ + }
+ + if ( size > maxpos - (s->pos % pHeader->data_size) )
+ + {
+ + size = maxpos - (s->pos % pHeader->data_size) ;
+ + }
+ + memcpy( buffer, (void*) (s->fd + sizeof( HEADERINFO ) + (s->pos %
pHeader->data_size)), size ) ;
+ +// fprintf( stderr, "\nrp: %d / wp: %d %d, s = %d\n", (s->pos %
pHeader->data_size), pHeader->writepointer, size ) ;
+ + return size ;
+ +}
+ +
+ +void timeshift_close(stream_t* s)
+ +{
+ + HEADERINFO * pHeader = (HEADERINFO*)(s->fd);
+ + // munmap();
+ +}
+ +
+ +int timeshift_lseek(stream_t* s, off_t offset, int whence)
+ +{
+ + HEADERINFO * pHeader ;
+ + pHeader = (HEADERINFO*)(s->fd) ;
+ + int maxoffset = pHeader->writepointer ;
+ + int minoffset = maxoffset - pHeader->data_size ;
+ + if ( minoffset < 0 ) minoffset = 0 ;
+ + maxoffset -= SEEK_END_OFFSET;
+ + int readpointer ;
+ + if ( msync( (void*)s->fd, pHeader->file_size, MS_SYNC ) == -1 )
+ + {
+ + fprintf( stderr, "Error in msync.\n" ) ;
+ + return -1 ;
+ + }
+ + switch ( whence )
+ + {
+ + case SEEK_SET:
+ + readpointer = offset ;
+ + if ( readpointer > maxoffset )
+ + readpointer = maxoffset ;
+ + if ( readpointer < minoffset )
+ + readpointer = minoffset ;
+ + return readpointer ;
+ + break ;
+ + }
+ + return offset ;
+ +}
+ +
+ +int timeshift_seek(stream_t* s,int offset,int whence)
+ +{
+ + HEADERINFO * pHeader ;
+ + pHeader = (HEADERINFO*)(s->fd) ;
+ + int maxoffset = pHeader->writepointer ;
+ + int minoffset = maxoffset - pHeader->data_size ;
+ + if ( minoffset < 0 ) minoffset = 0 ;
+ + maxoffset -= SEEK_END_OFFSET;
+ + int readpointer ;
+ + if ( msync( (void*)s->fd, pHeader->file_size, MS_SYNC ) == -1 )
+ + {
+ + fprintf( stderr, "Error in msync.\n" ) ;
+ + return -1 ;
+ + }
+ + switch ( whence )
+ + {
+ + case SEEK_SET:
+ + readpointer = offset ;
+ + if ( readpointer > maxoffset )
+ + readpointer = maxoffset ;
+ + if ( readpointer < minoffset )
+ + readpointer = minoffset ;
+ + return readpointer ;
+ + break ;
+ + case SEEK_CUR:
+ + readpointer = ( readpointer + offset ) % pHeader->data_size ;
+ + break ;
+ + case SEEK_END:
+ + /* Positioning beyond End = Position behind writepointer */
+ + readpointer = ( pHeader->writepointer + offset ) % pHeader->data_size ;
+ + break ;
+ + }
+ + return offset ;
+ +}
--- mplayer_timeshift3.patch DELETED ---
-------------------------------------------------------
This SF.Net email is sponsored by: INetU
Attention Web Developers & Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog