]> git.sesse.net Git - vlc/blobdiff - modules/demux/wav.c
Fix the subtitles loss at MKV segment changes
[vlc] / modules / demux / wav.c
index 30d10dc1c7049f5871db4be493593c5408a1140f..4a96f0e1257c99eb8ed0e56ce0e9b187f0df25a2 100644 (file)
@@ -291,7 +291,7 @@ static int Open( vlc_object_t * p_this )
             p_sys->fmt.i_extra = 0;
             goto error;
         }
-        memcpy( p_sys->fmt.p_extra, ((uint8_t *)p_wf) + i_extended,
+        memcpy( p_sys->fmt.p_extra, (uint8_t *)p_wf + sizeof( WAVEFORMATEX ) + i_extended,
                 p_sys->fmt.i_extra );
     }
 
@@ -318,12 +318,12 @@ static int Open( vlc_object_t * p_this )
                            &p_sys->fmt ) )
             goto error;
         break;
-    case VLC_FOURCC( 'm', 's', 0x00, 0x02 ):
+    case VLC_CODEC_ADPCM_MS:
         if( FrameInfo_MS_ADPCM( &p_sys->i_frame_size, &p_sys->i_frame_samples,
                                 &p_sys->fmt ) )
             goto error;
         break;
-    case VLC_FOURCC( 'm', 's', 0x00, 0x11 ):
+    case VLC_CODEC_ADPCM_IMA_WAV:
         if( FrameInfo_IMA_ADPCM( &p_sys->i_frame_size, &p_sys->i_frame_samples,
                                  &p_sys->fmt ) )
             goto error;
@@ -419,7 +419,7 @@ static int Demux( demux_t *p_demux )
     }
 
     p_block->i_dts =
-    p_block->i_pts = date_Increment( &p_sys->pts, p_sys->i_frame_samples );
+    p_block->i_pts = VLC_TS_0 + date_Get( &p_sys->pts );
 
     /* set PCR */
     es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block->i_pts );
@@ -433,6 +433,8 @@ static int Demux( demux_t *p_demux )
 
     es_out_Send( p_demux->out, p_sys->p_es, p_block );
 
+    date_Increment( &p_sys->pts, p_sys->i_frame_samples );
+
     return 1;
 }