[vlc-commits] demux: flac: fix random audio pos on seek
    Francois Cartegnie 
    git at videolan.org
       
    Fri Apr  7 15:45:54 CEST 2017
    
    
  
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Apr  7 15:01:09 2017 +0200| [93c5244ff778bbdaf135d5860577b6d00cac0f76] | committer: Francois Cartegnie
demux: flac: fix random audio pos on seek
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=93c5244ff778bbdaf135d5860577b6d00cac0f76
---
 modules/demux/flac.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
diff --git a/modules/demux/flac.c b/modules/demux/flac.c
index 69730d8..9115244 100644
--- a/modules/demux/flac.c
+++ b/modules/demux/flac.c
@@ -215,6 +215,18 @@ static void Close( vlc_object_t * p_this )
     free( p_sys );
 }
 
+static void FlushPacketizer( decoder_t *p_packetizer )
+{
+    if( p_packetizer->pf_flush )
+        p_packetizer->pf_flush( p_packetizer );
+    else
+    {
+        block_t *p_block_out;
+        while( (p_block_out = p_packetizer->pf_packetize( p_packetizer, NULL )) )
+            block_Release( p_block_out );
+    }
+}
+
 /*****************************************************************************
  * Demux: reads and demuxes data packets
  *****************************************************************************
@@ -365,6 +377,14 @@ static int ControlSetTime( demux_t *p_demux, int64_t i_time )
     }
     p_sys->i_pts = VLC_TS_INVALID;
     p_sys->i_next_block_flags |= BLOCK_FLAG_DISCONTINUITY;
+
+    FlushPacketizer( p_sys->p_packetizer );
+    if( p_sys->p_current_block )
+    {
+        block_Release( p_sys->p_current_block );
+        p_sys->p_current_block = NULL;
+    }
+
     return VLC_SUCCESS;
 }
 
    
    
More information about the vlc-commits
mailing list