Commit d21d510c authored by Christophe Massiot's avatar Christophe Massiot

* Portability : changed off64_t to off_t and activated appropriate

  GNU/Linux options ;
* Changed fseek() to fseeko() for 64-bit offsets ;
* Reset frame predictors on a stream discontinuity.
parent 785049d7
...@@ -44,16 +44,21 @@ DEFINE += -DSTATS ...@@ -44,16 +44,21 @@ DEFINE += -DSTATS
endif endif
# PROGRAM_BUILD is a complete identification of the build # PROGRAM_BUILD is a complete identification of the build
# ( we can't use fancy options with date since OSes like Solaris # (we can't use fancy options with date since OSes like Solaris
# or FreeBSD have strange date implementations ) # or FreeBSD have strange date implementations)
PROGRAM_BUILD = `date` $(USER) PROGRAM_BUILD = `date` $(USER)
# XXX: beos does not support hostname # XXX: beos does not support hostname (how lame...)
#PROGRAM_BUILD = `date` $(USER)@`hostname` #PROGRAM_BUILD = `date` $(USER)@`hostname`
# DEFINE will contain some of the constants definitions decided in Makefile, # DEFINE will contain some of the constants definitions decided in Makefile,
# including SYS_xx. It will be passed to C compiler. # including SYS_xx. It will be passed to C compiler.
DEFINE += -DSYS_$(shell echo $(SYS) | sed 's/-.*//' | tr a-z. A-Z_) DEFINE += -DSYS_$(shell echo $(SYS) | sed 's/-.*//' | tr a-z. A-Z_)
# On Linux activate 64-bit off_t (by default under BSD)
ifneq (,$(findstring linux,$(SYS)))
DEFINE += -D_FILE_OFFSET_BITS=64 -D__USE_UNIX98
endif
################################################################################ ################################################################################
# Tuning and other variables - do not change anything except if you know # Tuning and other variables - do not change anything except if you know
# exactly what you are doing # exactly what you are doing
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input.h: structures of the input not exported to other modules * input.h: structures of the input not exported to other modules
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input.h,v 1.27 2001/02/08 13:52:34 massiot Exp $ * $Id: input.h,v 1.28 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -109,7 +109,7 @@ static __inline__ void input_NullPacket( input_thread_t * p_input, ...@@ -109,7 +109,7 @@ static __inline__ void input_NullPacket( input_thread_t * p_input,
if( p_pes != NULL ) if( p_pes != NULL )
{ {
p_pes->b_messed_up = 1; p_pes->b_discontinuity = 1;
p_es->p_last->p_next = p_pad_data; p_es->p_last->p_next = p_pad_data;
p_es->p_last = p_pad_data; p_es->p_last = p_pad_data;
} }
...@@ -124,10 +124,8 @@ static __inline__ void input_NullPacket( input_thread_t * p_input, ...@@ -124,10 +124,8 @@ static __inline__ void input_NullPacket( input_thread_t * p_input,
p_pes->i_rate = p_input->stream.control.i_rate; p_pes->i_rate = p_input->stream.control.i_rate;
p_pes->p_first = p_pad_data; p_pes->p_first = p_pad_data;
p_pes->b_messed_up = p_pes->b_discontinuity = 1; p_pes->b_discontinuity = 1;
input_DecodePES( p_es->p_decoder_fifo, p_pes ); input_DecodePES( p_es->p_decoder_fifo, p_pes );
} }
p_es->b_discontinuity = 0;
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ext-dec.h: structures exported to the VideoLAN decoders * input_ext-dec.h: structures exported to the VideoLAN decoders
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-dec.h,v 1.21 2001/02/08 13:52:34 massiot Exp $ * $Id: input_ext-dec.h,v 1.22 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Kaempf <maxx@via.ecp.fr> * Michel Kaempf <maxx@via.ecp.fr>
...@@ -53,8 +53,6 @@ typedef struct data_packet_s ...@@ -53,8 +53,6 @@ typedef struct data_packet_s
typedef struct pes_packet_s typedef struct pes_packet_s
{ {
/* PES properties */ /* PES properties */
boolean_t b_messed_up; /* At least one of the data packets
* has a questionable content */
boolean_t b_data_alignment; /* used to find the beginning of boolean_t b_data_alignment; /* used to find the beginning of
* a video or audio unit */ * a video or audio unit */
boolean_t b_discontinuity; /* This packet doesn't follow the boolean_t b_discontinuity; /* This packet doesn't follow the
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* control the pace of reading. * control the pace of reading.
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-intf.h,v 1.17 2001/02/08 13:52:34 massiot Exp $ * $Id: input_ext-intf.h,v 1.18 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -60,7 +60,6 @@ typedef struct es_descriptor_s ...@@ -60,7 +60,6 @@ typedef struct es_descriptor_s
struct pes_packet_s * p_pes; /* Current PES */ struct pes_packet_s * p_pes; /* Current PES */
struct data_packet_s * p_last; /* The last packet gathered at present */ struct data_packet_s * p_last; /* The last packet gathered at present */
int i_pes_real_size; /* as indicated by the header */ int i_pes_real_size; /* as indicated by the header */
boolean_t b_discontinuity; /* Stream changed */
/* Decoder information */ /* Decoder information */
struct decoder_fifo_s * p_decoder_fifo; struct decoder_fifo_s * p_decoder_fifo;
...@@ -115,7 +114,6 @@ typedef struct pgrm_descriptor_s ...@@ -115,7 +114,6 @@ typedef struct pgrm_descriptor_s
count_t c_average_count; count_t c_average_count;
/* counter used to compute dynamic average values */ /* counter used to compute dynamic average values */
int i_synchro_state; int i_synchro_state;
boolean_t b_discontinuity;
/* Demultiplexer data */ /* Demultiplexer data */
void * p_demux_data; void * p_demux_data;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* dvd_css.c: Functions for DVD authentification and unscrambling * dvd_css.c: Functions for DVD authentification and unscrambling
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_css.c,v 1.2 2001/02/08 06:41:56 stef Exp $ * $Id: dvd_css.c,v 1.3 2001/02/08 17:44:12 massiot Exp $
* *
* Author: Stphane Borel <stef@via.ecp.fr> * Author: Stphane Borel <stef@via.ecp.fr>
* *
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <fcntl.h> #include <fcntl.h>
#include <malloc.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#ifdef HAVE_SYS_DVDIO_H #ifdef HAVE_SYS_DVDIO_H
...@@ -930,7 +929,7 @@ int CSSGetKeys( css_t * p_css ) ...@@ -930,7 +929,7 @@ int CSSGetKeys( css_t * p_css )
DVD_key_t my_key; DVD_key_t my_key;
title_key_t title_key[MaxKeys] ; title_key_t title_key[MaxKeys] ;
int i_title; int i_title;
off64_t i_pos = 0; off_t i_pos = 0;
int i_bytes_read; int i_bytes_read;
int i_best_plen; int i_best_plen;
int i_best_p; int i_best_p;
...@@ -948,7 +947,7 @@ int CSSGetKeys( css_t * p_css ) ...@@ -948,7 +947,7 @@ int CSSGetKeys( css_t * p_css )
i_pos = p_css->p_title_key[i_title].i; i_pos = p_css->p_title_key[i_title].i;
do do
{ {
i_pos = lseek64( i_fd, i_pos, SEEK_SET ); i_pos = lseek( i_fd, i_pos, SEEK_SET );
i_bytes_read = read( i_fd, pi_buf, 0x800 ); i_bytes_read = read( i_fd, pi_buf, 0x800 );
if( pi_buf[0x14] & 0x30 ) // PES_scrambling_control if( pi_buf[0x14] & 0x30 ) // PES_scrambling_control
{ {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* dvd_ifo.c: Functions for ifo parsing * dvd_ifo.c: Functions for ifo parsing
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_ifo.c,v 1.2 2001/02/08 08:08:03 stef Exp $ * $Id: dvd_ifo.c,v 1.3 2001/02/08 17:44:12 massiot Exp $
* *
* Author: Stphane Borel <stef@via.ecp.fr> * Author: Stphane Borel <stef@via.ecp.fr>
* *
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <fcntl.h> #include <fcntl.h>
#include <malloc.h>
#include "common.h" #include "common.h"
...@@ -54,7 +53,7 @@ static int IfoFindVMG( ifo_t* p_ifo ) ...@@ -54,7 +53,7 @@ static int IfoFindVMG( ifo_t* p_ifo )
while( strncmp( psz_test, psz_ifo_start, 12 ) != 0 ) while( strncmp( psz_test, psz_ifo_start, 12 ) != 0 )
{ {
/* The start of ifo file is on a sector boundary */ /* The start of ifo file is on a sector boundary */
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_pos = lseek( p_ifo->i_fd,
p_ifo->i_pos + DVD_LB_SIZE, p_ifo->i_pos + DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
read( p_ifo->i_fd, psz_test, 12 ); read( p_ifo->i_fd, psz_test, 12 );
...@@ -79,7 +78,7 @@ static int IfoFindVTS( ifo_t* p_ifo ) ...@@ -79,7 +78,7 @@ static int IfoFindVTS( ifo_t* p_ifo )
while( strncmp( psz_test, psz_ifo_start, 12 ) != 0 ) while( strncmp( psz_test, psz_ifo_start, 12 ) != 0 )
{ {
/* The start of ifo file is on a sector boundary */ /* The start of ifo file is on a sector boundary */
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_pos = lseek( p_ifo->i_fd,
p_ifo->i_pos + DVD_LB_SIZE, p_ifo->i_pos + DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
read( p_ifo->i_fd, psz_test, 12 ); read( p_ifo->i_fd, psz_test, 12 );
...@@ -103,7 +102,7 @@ ifo_t IfoInit( int i_fd ) ...@@ -103,7 +102,7 @@ ifo_t IfoInit( int i_fd )
ifo.i_fd = i_fd; ifo.i_fd = i_fd;
/* No data at the beginning of the disk /* No data at the beginning of the disk
* 512000 bytes is just another value :) */ * 512000 bytes is just another value :) */
ifo.i_pos = lseek64( ifo.i_fd, 250 *DVD_LB_SIZE, SEEK_SET ); ifo.i_pos = lseek( ifo.i_fd, 250 *DVD_LB_SIZE, SEEK_SET );
/* FIXME : use udf filesystem to find the beginning of the file */ /* FIXME : use udf filesystem to find the beginning of the file */
IfoFindVMG( &ifo ); IfoFindVMG( &ifo );
...@@ -223,7 +222,7 @@ void IfoEnd( ifo_t* p_ifo ) ...@@ -223,7 +222,7 @@ void IfoEnd( ifo_t* p_ifo )
#define FLUSH( i_len ) \ #define FLUSH( i_len ) \
{ \ { \
/*fprintf(stderr, "Pos : %lld\n", (long long)(p_ifo->i_pos - i_start));*/ \ /*fprintf(stderr, "Pos : %lld\n", (long long)(p_ifo->i_pos - i_start));*/ \
p_ifo->i_pos = lseek64( p_ifo->i_fd , \ p_ifo->i_pos = lseek( p_ifo->i_fd , \
p_ifo->i_pos + (i_len), SEEK_SET ); \ p_ifo->i_pos + (i_len), SEEK_SET ); \
} }
...@@ -255,7 +254,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo ) ...@@ -255,7 +254,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo )
{ {
pgc_t pgc; pgc_t pgc;
int i; int i;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "PGC\n" ); //fprintf( stderr, "PGC\n" );
...@@ -290,7 +289,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo ) ...@@ -290,7 +289,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo )
/* Parsing of pgc_com_tab_t */ /* Parsing of pgc_com_tab_t */
if( pgc.i_com_tab_sbyte ) if( pgc.i_com_tab_sbyte )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start p_ifo->i_pos = lseek( p_ifo->i_fd, i_start
+ pgc.i_com_tab_sbyte, SEEK_SET ); + pgc.i_com_tab_sbyte, SEEK_SET );
GETS( &pgc.com_tab.i_pre_com_nb ); GETS( &pgc.com_tab.i_pre_com_nb );
GETS( &pgc.com_tab.i_post_com_nb ); GETS( &pgc.com_tab.i_post_com_nb );
...@@ -345,7 +344,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo ) ...@@ -345,7 +344,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo )
/* Parsing of pgc_prg_map_t */ /* Parsing of pgc_prg_map_t */
if( pgc.i_prg_map_sbyte ) if( pgc.i_prg_map_sbyte )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start p_ifo->i_pos = lseek( p_ifo->i_fd, i_start
+ pgc.i_prg_map_sbyte, SEEK_SET ); + pgc.i_prg_map_sbyte, SEEK_SET );
pgc.prg_map.pi_entry_cell = malloc( pgc.i_prg_nb *sizeof(u8) ); pgc.prg_map.pi_entry_cell = malloc( pgc.i_prg_nb *sizeof(u8) );
if( pgc.prg_map.pi_entry_cell == NULL ) if( pgc.prg_map.pi_entry_cell == NULL )
...@@ -360,7 +359,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo ) ...@@ -360,7 +359,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo )
/* Parsing of cell_play_inf_t */ /* Parsing of cell_play_inf_t */
if( pgc.i_cell_play_inf_sbyte ) if( pgc.i_cell_play_inf_sbyte )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start p_ifo->i_pos = lseek( p_ifo->i_fd, i_start
+ pgc.i_cell_play_inf_sbyte, SEEK_SET ); + pgc.i_cell_play_inf_sbyte, SEEK_SET );
pgc.p_cell_play_inf = malloc( pgc.i_cell_nb *sizeof(cell_play_inf_t) ); pgc.p_cell_play_inf = malloc( pgc.i_cell_nb *sizeof(cell_play_inf_t) );
if( pgc.p_cell_play_inf == NULL ) if( pgc.p_cell_play_inf == NULL )
...@@ -384,7 +383,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo ) ...@@ -384,7 +383,7 @@ static pgc_t ReadPGC( ifo_t* p_ifo )
/* Parsing of cell_pos_inf_map */ /* Parsing of cell_pos_inf_map */
if( pgc.i_cell_pos_inf_sbyte ) if( pgc.i_cell_pos_inf_sbyte )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start p_ifo->i_pos = lseek( p_ifo->i_fd, i_start
+ pgc.i_cell_pos_inf_sbyte, SEEK_SET ); + pgc.i_cell_pos_inf_sbyte, SEEK_SET );
pgc.p_cell_pos_inf = malloc( pgc.i_cell_nb *sizeof(cell_pos_inf_t) ); pgc.p_cell_pos_inf = malloc( pgc.i_cell_nb *sizeof(cell_pos_inf_t) );
if( pgc.p_cell_play_inf == NULL ) if( pgc.p_cell_play_inf == NULL )
...@@ -411,7 +410,7 @@ static pgci_inf_t ReadUnit( ifo_t* p_ifo ) ...@@ -411,7 +410,7 @@ static pgci_inf_t ReadUnit( ifo_t* p_ifo )
{ {
pgci_inf_t inf; pgci_inf_t inf;
int i; int i;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "Unit\n" ); //fprintf( stderr, "Unit\n" );
...@@ -434,7 +433,7 @@ static pgci_inf_t ReadUnit( ifo_t* p_ifo ) ...@@ -434,7 +433,7 @@ static pgci_inf_t ReadUnit( ifo_t* p_ifo )
} }
for( i=0 ; i<inf.i_srp_nb ; i++ ) for( i=0 ; i<inf.i_srp_nb ; i++ )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_pos = lseek( p_ifo->i_fd,
i_start + inf.p_srp[i].i_pgci_sbyte, i_start + inf.p_srp[i].i_pgci_sbyte,
SEEK_SET ); SEEK_SET );
inf.p_srp[i].pgc = ReadPGC( p_ifo ); inf.p_srp[i].pgc = ReadPGC( p_ifo );
...@@ -450,7 +449,7 @@ static pgci_ut_t ReadUnitTable( ifo_t* p_ifo ) ...@@ -450,7 +449,7 @@ static pgci_ut_t ReadUnitTable( ifo_t* p_ifo )
{ {
pgci_ut_t pgci; pgci_ut_t pgci;
int i; int i;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "Unit Table\n" ); //fprintf( stderr, "Unit Table\n" );
...@@ -480,7 +479,7 @@ static pgci_ut_t ReadUnitTable( ifo_t* p_ifo ) ...@@ -480,7 +479,7 @@ static pgci_ut_t ReadUnitTable( ifo_t* p_ifo )
} }
for( i=0 ; i<pgci.i_lu_nb ; i++ ) for( i=0 ; i<pgci.i_lu_nb ; i++ )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start + p_ifo->i_pos = lseek( p_ifo->i_fd, i_start +
pgci.p_lu[i].i_lu_sbyte, pgci.p_lu[i].i_lu_sbyte,
SEEK_SET ); SEEK_SET );
pgci.p_pgci_inf[i] = ReadUnit( p_ifo ); pgci.p_pgci_inf[i] = ReadUnit( p_ifo );
...@@ -496,7 +495,7 @@ static c_adt_t ReadCellInf( ifo_t* p_ifo ) ...@@ -496,7 +495,7 @@ static c_adt_t ReadCellInf( ifo_t* p_ifo )
{ {
c_adt_t c_adt; c_adt_t c_adt;
int i, i_max; int i, i_max;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "CELL ADD\n" ); //fprintf( stderr, "CELL ADD\n" );
...@@ -530,7 +529,7 @@ static vobu_admap_t ReadMap( ifo_t* p_ifo ) ...@@ -530,7 +529,7 @@ static vobu_admap_t ReadMap( ifo_t* p_ifo )
{ {
vobu_admap_t map; vobu_admap_t map;
int i, i_max; int i, i_max;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "VOBU ADMAP\n" ); //fprintf( stderr, "VOBU ADMAP\n" );
...@@ -557,7 +556,7 @@ static vmgi_mat_t ReadVMGInfMat( ifo_t* p_ifo ) ...@@ -557,7 +556,7 @@ static vmgi_mat_t ReadVMGInfMat( ifo_t* p_ifo )
{ {
vmgi_mat_t mat; vmgi_mat_t mat;
int i; int i;
// off64_t i_start = p_ifo->i_pos; // off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "VMGI\n" ); //fprintf( stderr, "VMGI\n" );
...@@ -616,7 +615,7 @@ static vmg_ptt_srpt_t ReadVMGTitlePointer( ifo_t* p_ifo ) ...@@ -616,7 +615,7 @@ static vmg_ptt_srpt_t ReadVMGTitlePointer( ifo_t* p_ifo )
{ {
vmg_ptt_srpt_t ptr; vmg_ptt_srpt_t ptr;
int i; int i;
// off64_t i_start = p_ifo->i_pos; // off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "PTR\n" ); //fprintf( stderr, "PTR\n" );
...@@ -652,7 +651,7 @@ static vmg_ptl_mait_t ReadParentalInf( ifo_t* p_ifo ) ...@@ -652,7 +651,7 @@ static vmg_ptl_mait_t ReadParentalInf( ifo_t* p_ifo )
{ {
vmg_ptl_mait_t par; vmg_ptl_mait_t par;
int i, j, k; int i, j, k;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "PTL\n" ); //fprintf( stderr, "PTL\n" );
...@@ -682,7 +681,7 @@ static vmg_ptl_mait_t ReadParentalInf( ifo_t* p_ifo ) ...@@ -682,7 +681,7 @@ static vmg_ptl_mait_t ReadParentalInf( ifo_t* p_ifo )
} }
for( i=0 ; i<par.i_country_nb ; i++ ) for( i=0 ; i<par.i_country_nb ; i++ )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start + p_ifo->i_pos = lseek( p_ifo->i_fd, i_start +
par.p_ptl_desc[i].i_ptl_mai_sbyte, SEEK_SET ); par.p_ptl_desc[i].i_ptl_mai_sbyte, SEEK_SET );
for( j=1 ; j<=8 ; j++ ) for( j=1 ; j<=8 ; j++ )
{ {
...@@ -711,7 +710,7 @@ static vmg_vts_atrt_t ReadVTSAttr( ifo_t* p_ifo ) ...@@ -711,7 +710,7 @@ static vmg_vts_atrt_t ReadVTSAttr( ifo_t* p_ifo )
{ {
vmg_vts_atrt_t atrt; vmg_vts_atrt_t atrt;
int i, j; int i, j;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "VTS ATTR\n" ); //fprintf( stderr, "VTS ATTR\n" );
...@@ -738,7 +737,7 @@ static vmg_vts_atrt_t ReadVTSAttr( ifo_t* p_ifo ) ...@@ -738,7 +737,7 @@ static vmg_vts_atrt_t ReadVTSAttr( ifo_t* p_ifo )
} }
for( i=0 ; i<atrt.i_vts_nb ; i++ ) for( i=0 ; i<atrt.i_vts_nb ; i++ )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start + p_ifo->i_pos = lseek( p_ifo->i_fd, i_start +
atrt.pi_vts_atrt_sbyte[i], atrt.pi_vts_atrt_sbyte[i],
SEEK_SET ); SEEK_SET );
GETL( &atrt.p_vts_atrt[i].i_ebyte ); GETL( &atrt.p_vts_atrt[i].i_ebyte );
...@@ -788,49 +787,49 @@ static vmg_t ReadVMG( ifo_t* p_ifo ) ...@@ -788,49 +787,49 @@ static vmg_t ReadVMG( ifo_t* p_ifo )
{ {
vmg_t vmg; vmg_t vmg;
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off, SEEK_SET); p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off, SEEK_SET);
vmg.mat = ReadVMGInfMat( p_ifo ); vmg.mat = ReadVMGInfMat( p_ifo );
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_fp_pgc_sbyte, SEEK_SET ); vmg.mat.i_fp_pgc_sbyte, SEEK_SET );
vmg.pgc = ReadPGC( p_ifo ); vmg.pgc = ReadPGC( p_ifo );
if( vmg.mat.i_ptt_srpt_ssector ) if( vmg.mat.i_ptt_srpt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_ptt_srpt_ssector *DVD_LB_SIZE, vmg.mat.i_ptt_srpt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.ptt_srpt = ReadVMGTitlePointer( p_ifo ); vmg.ptt_srpt = ReadVMGTitlePointer( p_ifo );
} }
if( vmg.mat.i_pgci_ut_ssector ) if( vmg.mat.i_pgci_ut_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_pgci_ut_ssector *DVD_LB_SIZE, vmg.mat.i_pgci_ut_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.pgci_ut = ReadUnitTable( p_ifo ); vmg.pgci_ut = ReadUnitTable( p_ifo );
} }
if( vmg.mat.i_ptl_mait_ssector ) if( vmg.mat.i_ptl_mait_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_ptl_mait_ssector *DVD_LB_SIZE, vmg.mat.i_ptl_mait_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.ptl_mait = ReadParentalInf( p_ifo ); vmg.ptl_mait = ReadParentalInf( p_ifo );
} }
if( vmg.mat.i_vts_atrt_ssector ) if( vmg.mat.i_vts_atrt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_vts_atrt_ssector *DVD_LB_SIZE, vmg.mat.i_vts_atrt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.vts_atrt = ReadVTSAttr( p_ifo ); vmg.vts_atrt = ReadVTSAttr( p_ifo );
} }
if( vmg.mat.i_c_adt_ssector ) if( vmg.mat.i_c_adt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_c_adt_ssector *DVD_LB_SIZE, vmg.mat.i_c_adt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.c_adt = ReadCellInf( p_ifo ); vmg.c_adt = ReadCellInf( p_ifo );
} }
if( vmg.mat.i_vobu_admap_ssector ) if( vmg.mat.i_vobu_admap_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vmg.mat.i_vobu_admap_ssector *DVD_LB_SIZE, vmg.mat.i_vobu_admap_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vmg.vobu_admap = ReadMap( p_ifo ); vmg.vobu_admap = ReadMap( p_ifo );
...@@ -850,7 +849,7 @@ static vtsi_mat_t ReadVTSInfMat( ifo_t* p_ifo ) ...@@ -850,7 +849,7 @@ static vtsi_mat_t ReadVTSInfMat( ifo_t* p_ifo )
{ {
vtsi_mat_t mat; vtsi_mat_t mat;
int i; int i;
// off64_t i_start = p_ifo->i_pos; // off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "VTSI\n" ); //fprintf( stderr, "VTSI\n" );
...@@ -918,7 +917,7 @@ static vts_ptt_srpt_t ReadVTSTitlePointer( ifo_t* p_ifo ) ...@@ -918,7 +917,7 @@ static vts_ptt_srpt_t ReadVTSTitlePointer( ifo_t* p_ifo )
{ {
vts_ptt_srpt_t ptr; vts_ptt_srpt_t ptr;
int i; int i;
off64_t i_start = p_ifo->i_pos; off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "PTR\n" ); //fprintf( stderr, "PTR\n" );
...@@ -946,7 +945,7 @@ static vts_ptt_srpt_t ReadVTSTitlePointer( ifo_t* p_ifo ) ...@@ -946,7 +945,7 @@ static vts_ptt_srpt_t ReadVTSTitlePointer( ifo_t* p_ifo )
} }
for( i=0 ; i<ptr.i_ttu_nb ; i++ ) for( i=0 ; i<ptr.i_ttu_nb ; i++ )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_start + p_ifo->i_pos = lseek( p_ifo->i_fd, i_start +
ptr.pi_ttu_sbyte[i], SEEK_SET ); ptr.pi_ttu_sbyte[i], SEEK_SET );
GETS( &ptr.p_ttu[i].i_pgc_nb ); GETS( &ptr.p_ttu[i].i_pgc_nb );
GETS( &ptr.p_ttu[i].i_prg_nb ); GETS( &ptr.p_ttu[i].i_prg_nb );
...@@ -962,7 +961,7 @@ static vts_tmap_ti_t ReadVTSTimeMap( ifo_t* p_ifo ) ...@@ -962,7 +961,7 @@ static vts_tmap_ti_t ReadVTSTimeMap( ifo_t* p_ifo )
{ {
vts_tmap_ti_t tmap; vts_tmap_ti_t tmap;
int i,j; int i,j;
// off64_t i_start = p_ifo->i_pos; // off_t i_start = p_ifo->i_pos;
//fprintf( stderr, "TMAP\n" ); //fprintf( stderr, "TMAP\n" );
...@@ -1022,56 +1021,56 @@ static vts_t ReadVTS( ifo_t* p_ifo ) ...@@ -1022,56 +1021,56 @@ static vts_t ReadVTS( ifo_t* p_ifo )
vts.mat = ReadVTSInfMat( p_ifo ); vts.mat = ReadVTSInfMat( p_ifo );
if( vts.mat.i_ptt_srpt_ssector ) if( vts.mat.i_ptt_srpt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_ptt_srpt_ssector *DVD_LB_SIZE, vts.mat.i_ptt_srpt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.ptt_srpt = ReadVTSTitlePointer( p_ifo ); vts.ptt_srpt = ReadVTSTitlePointer( p_ifo );
} }
if( vts.mat.i_m_pgci_ut_ssector ) if( vts.mat.i_m_pgci_ut_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_m_pgci_ut_ssector *DVD_LB_SIZE, vts.mat.i_m_pgci_ut_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.pgci_ut = ReadUnitTable( p_ifo ); vts.pgci_ut = ReadUnitTable( p_ifo );
} }
if( vts.mat.i_pgcit_ssector ) if( vts.mat.i_pgcit_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_pgcit_ssector *DVD_LB_SIZE, vts.mat.i_pgcit_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.pgci_ti = ReadUnit( p_ifo ); vts.pgci_ti = ReadUnit( p_ifo );
} }
if( vts.mat.i_tmap_ti_ssector ) if( vts.mat.i_tmap_ti_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_tmap_ti_ssector *DVD_LB_SIZE, vts.mat.i_tmap_ti_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.tmap_ti = ReadVTSTimeMap( p_ifo ); vts.tmap_ti = ReadVTSTimeMap( p_ifo );
} }
if( vts.mat.i_m_c_adt_ssector ) if( vts.mat.i_m_c_adt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_m_c_adt_ssector *DVD_LB_SIZE, vts.mat.i_m_c_adt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.m_c_adt = ReadCellInf( p_ifo ); vts.m_c_adt = ReadCellInf( p_ifo );
} }
if( vts.mat.i_m_vobu_admap_ssector ) if( vts.mat.i_m_vobu_admap_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_m_vobu_admap_ssector *DVD_LB_SIZE, vts.mat.i_m_vobu_admap_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.m_vobu_admap = ReadMap( p_ifo ); vts.m_vobu_admap = ReadMap( p_ifo );
} }
if( vts.mat.i_c_adt_ssector ) if( vts.mat.i_c_adt_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_c_adt_ssector *DVD_LB_SIZE, vts.mat.i_c_adt_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.c_adt = ReadCellInf( p_ifo ); vts.c_adt = ReadCellInf( p_ifo );
} }
if( vts.mat.i_vobu_admap_ssector ) if( vts.mat.i_vobu_admap_ssector )
{ {
p_ifo->i_pos = lseek64( p_ifo->i_fd, p_ifo->i_off + p_ifo->i_pos = lseek( p_ifo->i_fd, p_ifo->i_off +
vts.mat.i_vobu_admap_ssector *DVD_LB_SIZE, vts.mat.i_vobu_admap_ssector *DVD_LB_SIZE,
SEEK_SET ); SEEK_SET );
vts.vobu_admap = ReadMap( p_ifo ); vts.vobu_admap = ReadMap( p_ifo );
...@@ -1091,7 +1090,7 @@ static vts_t ReadVTS( ifo_t* p_ifo ) ...@@ -1091,7 +1090,7 @@ static vts_t ReadVTS( ifo_t* p_ifo )
void IfoRead( ifo_t* p_ifo ) void IfoRead( ifo_t* p_ifo )
{ {
int i; int i;
off64_t i_off; off_t i_off;
p_ifo->vmg = ReadVMG( p_ifo ); p_ifo->vmg = ReadVMG( p_ifo );
p_ifo->p_vts = malloc( p_ifo->vmg.mat.i_tts_nb *sizeof(vts_t) ); p_ifo->p_vts = malloc( p_ifo->vmg.mat.i_tts_nb *sizeof(vts_t) );
...@@ -1107,7 +1106,7 @@ void IfoRead( ifo_t* p_ifo ) ...@@ -1107,7 +1106,7 @@ void IfoRead( ifo_t* p_ifo )
intf_WarnMsg( 3, "######### VTS %d #############\n", i+1 ); intf_WarnMsg( 3, "######### VTS %d #############\n", i+1 );
i_off = p_ifo->vmg.ptt_srpt.p_tts[i].i_ssector *DVD_LB_SIZE; i_off = p_ifo->vmg.ptt_srpt.p_tts[i].i_ssector *DVD_LB_SIZE;
p_ifo->i_pos = lseek64( p_ifo->i_fd, i_off, SEEK_SET ); p_ifo->i_pos = lseek( p_ifo->i_fd, i_off, SEEK_SET );
/* FIXME : use udf filesystem to avoid this */ /* FIXME : use udf filesystem to avoid this */
IfoFindVTS( p_ifo ); IfoFindVTS( p_ifo );
p_ifo->p_vts[i] = ReadVTS( p_ifo ); p_ifo->p_vts[i] = ReadVTS( p_ifo );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* dvd_ifo.h: Structures for ifo parsing * dvd_ifo.h: Structures for ifo parsing
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: dvd_ifo.h,v 1.1 2001/02/08 04:43:27 sam Exp $ * $Id: dvd_ifo.h,v 1.2 2001/02/08 17:44:12 massiot Exp $
* *
* Author: Stphane Borel <stef@via.ecp.fr> * Author: Stphane Borel <stef@via.ecp.fr>
* *
...@@ -477,9 +477,9 @@ typedef struct ifo_s ...@@ -477,9 +477,9 @@ typedef struct ifo_s
/* File descriptor for the device */ /* File descriptor for the device */
int i_fd; int i_fd;
/* Offset to video_ts.ifo on the device */ /* Offset to video_ts.ifo on the device */
off64_t i_off; off_t i_off;
/* Position of stream pointer */ /* Position of stream pointer */
off64_t i_pos; off_t i_pos;
/* Error Management */ /* Error Management */
boolean_t b_error; boolean_t b_error;
/* Structure described in video_ts */ /* Structure described in video_ts */
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* -dvd_udf to find files * -dvd_udf to find files
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2001 VideoLAN * Copyright (C) 1998-2001 VideoLAN
* $Id: input_dvd.c,v 1.4 2001/02/08 11:22:41 massiot Exp $ * $Id: input_dvd.c,v 1.5 2001/02/08 17:44:12 massiot Exp $
* *
* Author: Stphane Borel <stef@via.ecp.fr> * Author: Stphane Borel <stef@via.ecp.fr>
* *
...@@ -83,8 +83,7 @@ static void DVDInit ( struct input_thread_s * ); ...@@ -83,8 +83,7 @@ static void DVDInit ( struct input_thread_s * );
static void DVDOpen ( struct input_thread_s * ); static void DVDOpen ( struct input_thread_s * );
static void DVDClose ( struct input_thread_s * ); static void DVDClose ( struct input_thread_s * );
static void DVDEnd ( struct input_thread_s * ); static void DVDEnd ( struct input_thread_s * );
/* FIXME : DVDSeek should be on 64 bits ? Is it possible in input ? */ static void DVDSeek ( struct input_thread_s *, off_t );
static int DVDSeek ( struct input_thread_s *, off_t );
static int DVDRewind ( struct input_thread_s * ); static int DVDRewind ( struct input_thread_s * );
/***************************************************************************** /*****************************************************************************
...@@ -148,7 +147,7 @@ static int DVDCheckCSS( input_thread_t * p_input ) ...@@ -148,7 +147,7 @@ static int DVDCheckCSS( input_thread_t * p_input )
static void DVDInit( input_thread_t * p_input ) static void DVDInit( input_thread_t * p_input )
{ {
thread_dvd_data_t * p_method; thread_dvd_data_t * p_method;
off64_t i_start; off_t i_start;
if( (p_method = malloc( sizeof(thread_dvd_data_t) )) == NULL ) if( (p_method = malloc( sizeof(thread_dvd_data_t) )) == NULL )
{ {
...@@ -166,7 +165,7 @@ static void DVDInit( input_thread_t * p_input ) ...@@ -166,7 +165,7 @@ static void DVDInit( input_thread_t * p_input )
p_method->i_title = 0; p_method->i_title = 0;
lseek64( p_input->i_handle, 0, SEEK_SET ); lseek( p_input->i_handle, 0, SEEK_SET );
/* Reading structures initialisation */ /* Reading structures initialisation */
input_NetlistInit( p_input, 4096, 4096, DVD_LB_SIZE, input_NetlistInit( p_input, 4096, 4096, DVD_LB_SIZE,
...@@ -207,7 +206,7 @@ static void DVDInit( input_thread_t * p_input ) ...@@ -207,7 +206,7 @@ static void DVDInit( input_thread_t * p_input )
i_start = p_method->ifo.p_vts[0].i_pos + i_start = p_method->ifo.p_vts[0].i_pos +
p_method->ifo.p_vts[0].mat.i_tt_vobs_ssector *DVD_LB_SIZE; p_method->ifo.p_vts[0].mat.i_tt_vobs_ssector *DVD_LB_SIZE;
i_start = lseek64( p_input->i_handle, i_start, SEEK_SET ); i_start = lseek( p_input->i_handle, i_start, SEEK_SET );
intf_Msg( "VOB start at : %lld", (long long)i_start ); intf_Msg( "VOB start at : %lld", (long long)i_start );
/* Initialize ES structures */ /* Initialize ES structures */
...@@ -258,7 +257,7 @@ static void DVDInit( input_thread_t * p_input ) ...@@ -258,7 +257,7 @@ static void DVDInit( input_thread_t * p_input )
break; break;
} }
} }
lseek64( p_input->i_handle, i_start, SEEK_SET ); lseek( p_input->i_handle, i_start, SEEK_SET );
vlc_mutex_lock( &p_input->stream.stream_lock ); vlc_mutex_lock( &p_input->stream.stream_lock );
p_input->stream.i_tell = 0; p_input->stream.i_tell = 0;
if( p_demux_data->b_has_PSM ) if( p_demux_data->b_has_PSM )
...@@ -351,8 +350,7 @@ static void DVDOpen( input_thread_t * p_input ) ...@@ -351,8 +350,7 @@ static void DVDOpen( input_thread_t * p_input )
{ {
intf_Msg( "input: opening DVD %s", p_input->p_source ); intf_Msg( "input: opening DVD %s", p_input->p_source );
p_input->i_handle = open( p_input->p_source, p_input->i_handle = open( p_input->p_source, O_RDONLY | O_NONBLOCK );
O_RDONLY | O_NONBLOCK | O_LARGEFILE );
if( p_input->i_handle == -1 ) if( p_input->i_handle == -1 )
{ {
...@@ -519,7 +517,7 @@ static int DVDRewind( input_thread_t * p_input ) ...@@ -519,7 +517,7 @@ static int DVDRewind( input_thread_t * p_input )
* input and translate chronological position from input to logical postion * input and translate chronological position from input to logical postion
* on the device * on the device
*****************************************************************************/ *****************************************************************************/
static int DVDSeek( input_thread_t * p_input, off_t i_off ) static void DVDSeek( input_thread_t * p_input, off_t i_off )
{ {
return( -1 ); return;
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ps.c: PS demux and packet management * input_ps.c: PS demux and packet management
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input_ps.c,v 1.3 2001/02/08 13:52:35 massiot Exp $ * $Id: input_ps.c,v 1.4 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -132,7 +132,7 @@ static void PSInit( input_thread_t * p_input ) ...@@ -132,7 +132,7 @@ static void PSInit( input_thread_t * p_input )
p_input->b_error = 1; p_input->b_error = 1;
return; return;
} }
fseek( p_method->stream, 0, SEEK_SET ); rewind( p_method->stream );
/* FIXME : detect if InitStream failed */ /* FIXME : detect if InitStream failed */
input_InitStream( p_input, sizeof( stream_ps_data_t ) ); input_InitStream( p_input, sizeof( stream_ps_data_t ) );
...@@ -181,7 +181,7 @@ static void PSInit( input_thread_t * p_input ) ...@@ -181,7 +181,7 @@ static void PSInit( input_thread_t * p_input )
break; break;
} }
} }
fseek( p_method->stream, 0, SEEK_SET ); rewind( p_method->stream );
vlc_mutex_lock( &p_input->stream.stream_lock ); vlc_mutex_lock( &p_input->stream.stream_lock );
p_input->stream.i_tell = 0; p_input->stream.i_tell = 0;
if( p_demux_data->b_has_PSM ) if( p_demux_data->b_has_PSM )
...@@ -439,7 +439,7 @@ static void PSSeek( input_thread_t * p_input, off_t i_position ) ...@@ -439,7 +439,7 @@ static void PSSeek( input_thread_t * p_input, off_t i_position )
p_method = (thread_ps_data_t *)p_input->p_plugin_data; p_method = (thread_ps_data_t *)p_input->p_plugin_data;
/* A little bourrin but should work for a while --Meuuh */ /* A little bourrin but should work for a while --Meuuh */
fseek( p_method->stream, i_position, SEEK_SET ); fseeko( p_method->stream, i_position, SEEK_SET );
p_input->stream.i_tell = i_position; p_input->stream.i_tell = i_position;
} }
...@@ -499,7 +499,7 @@ static pes_packet_t * NewPES( void * p_garbage ) ...@@ -499,7 +499,7 @@ static pes_packet_t * NewPES( void * p_garbage )
return NULL; return NULL;
} }
p_pes->b_messed_up = p_pes->b_data_alignment = p_pes->b_discontinuity = p_pes->b_data_alignment = p_pes->b_discontinuity =
p_pes->i_pts = p_pes->i_dts = 0; p_pes->i_pts = p_pes->i_dts = 0;
p_pes->i_pes_size = 0; p_pes->i_pes_size = 0;
p_pes->p_first = NULL; p_pes->p_first = NULL;
......
...@@ -96,8 +96,8 @@ void input_Pause( input_thread_t * p_input ) ...@@ -96,8 +96,8 @@ void input_Pause( input_thread_t * p_input )
*****************************************************************************/ *****************************************************************************/
void input_Seek( input_thread_t * p_input, off_t i_position ) void input_Seek( input_thread_t * p_input, off_t i_position )
{ {
intf_Msg( "input: seeking position %d/%d", i_position, intf_Msg( "input: seeking position %lld/%lld", i_position,
p_input->stream.i_size ); p_input->stream.i_size );
vlc_mutex_lock( &p_input->stream.stream_lock ); vlc_mutex_lock( &p_input->stream.stream_lock );
p_input->stream.i_seek = i_position; p_input->stream.i_seek = i_position;
vlc_cond_signal( &p_input->stream.stream_wait ); vlc_cond_signal( &p_input->stream.stream_wait );
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_netlist.c: netlist management * input_netlist.c: netlist management
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: input_netlist.c,v 1.29 2001/02/08 01:34:42 stef Exp $ * $Id: input_netlist.c,v 1.30 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Henri Fallon <henri@videolan.org> * Authors: Henri Fallon <henri@videolan.org>
* *
...@@ -311,8 +311,7 @@ struct pes_packet_s * input_NetlistNewPES( void * p_method_data ) ...@@ -311,8 +311,7 @@ struct pes_packet_s * input_NetlistNewPES( void * p_method_data )
vlc_mutex_unlock (&p_netlist->lock); vlc_mutex_unlock (&p_netlist->lock);
/* initialize PES */ /* initialize PES */
p_return->b_messed_up = p_return->b_data_alignment =
p_return->b_data_alignment =
p_return->b_discontinuity = p_return->b_discontinuity =
p_return->i_pts = p_return->i_dts = 0; p_return->i_pts = p_return->i_dts = 0;
p_return->i_pes_size = 0; p_return->i_pes_size = 0;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_programs.c: es_descriptor_t, pgrm_descriptor_t management * input_programs.c: es_descriptor_t, pgrm_descriptor_t management
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_programs.c,v 1.30 2001/02/08 13:52:35 massiot Exp $ * $Id: input_programs.c,v 1.31 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -152,7 +152,6 @@ pgrm_descriptor_t * input_AddProgram( input_thread_t * p_input, ...@@ -152,7 +152,6 @@ pgrm_descriptor_t * input_AddProgram( input_thread_t * p_input,
p_input->stream.pp_programs[i_pgrm_index]->i_synchro_state p_input->stream.pp_programs[i_pgrm_index]->i_synchro_state
= SYNCHRO_START; = SYNCHRO_START;
p_input->stream.pp_programs[i_pgrm_index]->b_discontinuity = 0;
p_input->stream.pp_programs[i_pgrm_index]->p_vout p_input->stream.pp_programs[i_pgrm_index]->p_vout
= p_input->p_default_vout; = p_input->p_default_vout;
...@@ -279,7 +278,6 @@ es_descriptor_t * input_AddES( input_thread_t * p_input, ...@@ -279,7 +278,6 @@ es_descriptor_t * input_AddES( input_thread_t * p_input,
/* Init its values */ /* Init its values */
p_es->i_id = i_es_id; p_es->i_id = i_es_id;
p_es->b_discontinuity = 0;
p_es->p_pes = NULL; p_es->p_pes = NULL;
p_es->p_decoder_fifo = NULL; p_es->p_decoder_fifo = NULL;
p_es->b_audio = 0; p_es->b_audio = 0;
...@@ -400,7 +398,7 @@ void input_DumpStream( input_thread_t * p_input ) ...@@ -400,7 +398,7 @@ void input_DumpStream( input_thread_t * p_input )
#define S p_input->stream #define S p_input->stream
intf_Msg( "input info: Dumping stream ID 0x%x", S.i_stream_id ); intf_Msg( "input info: Dumping stream ID 0x%x", S.i_stream_id );
if( S.b_seekable ) if( S.b_seekable )
intf_Msg( "input info: seekable stream, position: %d/%d", intf_Msg( "input info: seekable stream, position: %lld/%lld",
S.i_tell, S.i_size ); S.i_tell, S.i_size );
else else
intf_Msg( "input info: %s", S.b_pace_control ? "pace controlled" : intf_Msg( "input info: %s", S.b_pace_control ? "pace controlled" :
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* mpeg_system.c: TS, PS and PES management * mpeg_system.c: TS, PS and PES management
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: mpeg_system.c,v 1.33 2001/02/08 13:52:35 massiot Exp $ * $Id: mpeg_system.c,v 1.34 2001/02/08 17:44:12 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -164,7 +164,6 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es ) ...@@ -164,7 +164,6 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es )
/* PES_packet_length is set and != total received payload */ /* PES_packet_length is set and != total received payload */
/* Warn the decoder that the data may be corrupt. */ /* Warn the decoder that the data may be corrupt. */
intf_WarnMsg( 3, "PES sizes do not match : packet corrupted" ); intf_WarnMsg( 3, "PES sizes do not match : packet corrupted" );
p_pes->b_messed_up = 1;
} }
switch( p_es->i_stream_id ) switch( p_es->i_stream_id )
...@@ -414,7 +413,7 @@ void input_GatherPES( input_thread_t * p_input, data_packet_t * p_data, ...@@ -414,7 +413,7 @@ void input_GatherPES( input_thread_t * p_input, data_packet_t * p_data,
/* If we lost data, insert a NULL data packet (philosophy : 0 is quite /* If we lost data, insert a NULL data packet (philosophy : 0 is quite
* often an escape sequence in decoders, so that should make them wait * often an escape sequence in decoders, so that should make them wait
* for the next start code). */ * for the next start code). */
if( b_packet_lost || p_es->b_discontinuity ) if( b_packet_lost )
{ {
input_NullPacket( p_input, p_es ); input_NullPacket( p_input, p_es );
} }
...@@ -964,7 +963,7 @@ void input_DemuxTS( input_thread_t * p_input, data_packet_t * p_data ) ...@@ -964,7 +963,7 @@ void input_DemuxTS( input_thread_t * p_input, data_packet_t * p_data )
/* If the PID carries the PCR, there will be a system /* If the PID carries the PCR, there will be a system
* time-based discontinuity. We let the PCR decoder * time-based discontinuity. We let the PCR decoder
* handle that. */ * handle that. */
p_es->p_pgrm->b_discontinuity = 1; p_es->p_pgrm->i_synchro_state = SYNCHRO_REINIT;
/* There also may be a continuity_counter /* There also may be a continuity_counter
* discontinuity: resynchronise our counter with * discontinuity: resynchronise our counter with
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* video_parser.c : video parser thread * video_parser.c : video parser thread
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: video_parser.c,v 1.71 2001/02/07 15:32:26 massiot Exp $ * $Id: video_parser.c,v 1.72 2001/02/08 17:44:13 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr> * Samuel Hocevar <sam@via.ecp.fr>
...@@ -537,5 +537,28 @@ static void BitstreamCallback ( bit_stream_t * p_bit_stream, ...@@ -537,5 +537,28 @@ static void BitstreamCallback ( bit_stream_t * p_bit_stream,
DECODER_FIFO_START( *p_bit_stream->p_decoder_fifo )->i_dts; DECODER_FIFO_START( *p_bit_stream->p_decoder_fifo )->i_dts;
p_vpar->sequence.i_current_rate = p_vpar->sequence.i_current_rate =
DECODER_FIFO_START( *p_bit_stream->p_decoder_fifo )->i_rate; DECODER_FIFO_START( *p_bit_stream->p_decoder_fifo )->i_rate;
if( DECODER_FIFO_START( *p_bit_stream->p_decoder_fifo )->b_discontinuity )
{
/* Escape the current picture and reset the picture predictors. */
p_vpar->picture.b_error = 1;
if( p_vpar->sequence.p_forward != NULL )
{
vout_UnlinkPicture( p_vpar->p_vout, p_vpar->sequence.p_forward );
}
if( p_vpar->sequence.p_backward != NULL )
{
vout_DatePicture( p_vpar->p_vout, p_vpar->sequence.p_backward,
vpar_SynchroDate( p_vpar ) );
vout_UnlinkPicture( p_vpar->p_vout, p_vpar->sequence.p_backward );
}
p_vpar->sequence.p_forward = p_vpar->sequence.p_backward = NULL;
}
}
if( p_bit_stream->p_data->b_discard_payload )
{
/* 1 packet messed up, trash the slice. */
p_vpar->picture.b_error = 1;
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment