]> git.sesse.net Git - vlc/blobdiff - modules/demux/flac.c
Fixed input slave reading of a52/dts/flac/m4a/mpga (close #1818).
[vlc] / modules / demux / flac.c
index da9fbf4c8dbd2c5658fa4ca635770580cdee8b6d..4d6c24c42b33ed293b1998f9f404c0215cb7bd11 100644 (file)
@@ -230,13 +230,18 @@ static int Demux( demux_t *p_demux )
                 p_sys->p_es = es_out_Add( p_demux->out, &p_sys->p_packetizer->fmt_out);
             }
 
+            p_sys->i_pts = p_block_out->i_dts;
+
+            /* Correct timestamp */
+            p_block_out->i_pts += p_sys->i_time_offset;
+            p_block_out->i_dts += p_sys->i_time_offset;
+
             /* set PCR */
-            if( p_block_out->i_dts >= p_sys->i_pts_start )
+            if( p_block_out->i_dts >= p_sys->i_pts_start + p_sys->i_time_offset )
                 es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block_out->i_dts );
             else
                 es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
 
-            p_sys->i_pts = p_block_out->i_dts;
             es_out_Send( p_demux->out, p_sys->p_es, p_block_out );
 
             p_block_out = p_next;
@@ -309,7 +314,7 @@ static int ControlSetTime( demux_t *p_demux, int64_t i_time )
 
         p_sys->i_time_offset = p_sys->seekpoint[i]->i_time_offset - p_sys->i_pts;
         p_sys->i_pts_start = p_sys->i_pts+i_delta_time;
-        es_out_Control( p_demux->out, ES_OUT_SET_NEXT_DISPLAY_TIME, p_sys->p_es, p_sys->i_pts_start );
+        es_out_Control( p_demux->out, ES_OUT_SET_NEXT_DISPLAY_TIME, p_sys->p_es, p_sys->i_pts_start + p_sys->i_time_offset );
     }
     else
     {