[vlc-devel] commit: Used VLC_TS_INVALID/0 in ES demuxer. (Laurent Aimar )

git version control git at videolan.org
Mon Dec 21 00:02:40 CET 2009


vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Sun Dec 20 22:55:34 2009 +0100| [2574a3a3b45a98381a1c1d301c4d34edfde56d6c] | committer: Laurent Aimar 

Used VLC_TS_INVALID/0 in ES demuxer.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2574a3a3b45a98381a1c1d301c4d34edfde56d6c
---

 modules/demux/mpeg/es.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/modules/demux/mpeg/es.c b/modules/demux/mpeg/es.c
index 5d40390..dfc2931 100644
--- a/modules/demux/mpeg/es.c
+++ b/modules/demux/mpeg/es.c
@@ -228,7 +228,7 @@ static int Demux( demux_t *p_demux )
         swab( p_block_in->p_buffer, p_block_in->p_buffer, p_block_in->i_buffer );
     }
 
-    p_block_in->i_pts = p_block_in->i_dts = p_sys->b_start || p_sys->b_initial_sync_failed ? 1 : 0;
+    p_block_in->i_pts = p_block_in->i_dts = p_sys->b_start || p_sys->b_initial_sync_failed ? VLC_TS_0 : VLC_TS_INVALID;
     p_sys->b_initial_sync_failed = p_sys->b_start; /* Only try to resync once */
 
     while( ( p_block_out = p_sys->p_packetizer->pf_packetize( p_sys->p_packetizer, &p_block_in ) ) )
@@ -261,18 +261,23 @@ static int Demux( demux_t *p_demux )
                     p_sys->i_bitrate_avg = p_sys->p_packetizer->fmt_out.i_bitrate;
             }
 
-            p_sys->i_pts = p_block_out->i_pts;
+            p_sys->i_pts = p_block_out->i_pts - VLC_TS_0;
 
             /* Re-estimate bitrate */
-            if( p_sys->b_estimate_bitrate && p_sys->i_pts > 1 + INT64_C(500000) )
+            if( p_sys->b_estimate_bitrate && p_sys->i_pts > INT64_C(500000) )
                 p_sys->i_bitrate_avg = 8*INT64_C(1000000)*p_sys->i_bytes/(p_sys->i_pts-1);
             p_sys->i_bytes += p_block_out->i_buffer;
 
             /* Correct timestamp */
-            p_block_out->i_pts += p_sys->i_time_offset;
-            p_block_out->i_dts += p_sys->i_time_offset;
-
-            es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block_out->i_dts );
+            if( p_block_out->i_pts > VLC_TS_INVALID )
+            {
+                p_block_out->i_pts += p_sys->i_time_offset;
+            }
+            if( p_block_out->i_dts > VLC_TS_INVALID )
+            {
+                p_block_out->i_dts += p_sys->i_time_offset;
+                es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block_out->i_dts );
+            }
 
             es_out_Send( p_demux->out, p_sys->p_es, p_block_out );
 




More information about the vlc-devel mailing list