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

Reply via email to