From 0fe9b6988f8d59a1716abe67e659adf5f843a250 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sat, 15 Nov 2003 18:57:12 +0000 Subject: [PATCH] * set dts/length of all pes packet. --- modules/mux/mpeg/pes.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/mux/mpeg/pes.c b/modules/mux/mpeg/pes.c index 24f95611be..488774881b 100644 --- a/modules/mux/mpeg/pes.c +++ b/modules/mux/mpeg/pes.c @@ -2,7 +2,7 @@ * pes.c: PES packetizer used by the MPEG multiplexers ***************************************************************************** * Copyright (C) 2001, 2002 VideoLAN - * $Id: pes.c,v 1.11 2003/08/15 01:58:46 fenrir Exp $ + * $Id: pes.c,v 1.12 2003/11/15 18:57:12 fenrir Exp $ * * Authors: Laurent Aimar * Eric Petit @@ -235,7 +235,7 @@ int E_( EStoPES )( sout_instance_t *p_sout, int b_mpeg2 ) { sout_buffer_t *p_es_sav, *p_pes; - mtime_t i_pts, i_dts; + mtime_t i_pts, i_dts, i_length; uint8_t *p_data; int i_size; @@ -246,6 +246,8 @@ int E_( EStoPES )( sout_instance_t *p_sout, int i_pes_payload; int i_pes_header; + int i_pes_count = 1; + /* HACK for private stream 1 in ps */ if( ( i_stream_id >> 8 ) == PES_PRIVATE_STREAM_1 ) { @@ -297,6 +299,7 @@ int E_( EStoPES )( sout_instance_t *p_sout, p_sout->p_vlc->pf_memcpy( p_pes->p_buffer + i_pes_header, p_data, i_pes_payload ); } + i_pes_count++; } /* copy header */ @@ -314,5 +317,17 @@ int E_( EStoPES )( sout_instance_t *p_sout, sout_BufferRealloc( p_sout, p_es_sav, p_es_sav->i_size ); } + /* Now redate all pes */ + i_dts = (*pp_pes)->i_dts; + i_length = (*pp_pes)->i_length / i_pes_count; + for( p_pes = *pp_pes; p_pes != NULL; p_pes = p_pes->p_next ) + { + p_pes->i_dts = i_dts; + p_pes->i_length = i_length; + + i_dts += i_length; + } return( 0 ); } + + -- 2.39.2