vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Feb 13 
17:58:53 2019 +0100| [e81b889d9820a2a6e3c51a8d8a27fb89864a17d6] | committer: 
Francois Cartegnie

demux: ogg: check first frame granule index

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

 modules/demux/ogg_granule.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/demux/ogg_granule.c b/modules/demux/ogg_granule.c
index d10e91a540..87b05d5f3e 100644
--- a/modules/demux/ogg_granule.c
+++ b/modules/demux/ogg_granule.c
@@ -100,6 +100,9 @@ static int64_t Ogg_GranuleToSample( const logical_stream_t 
*p_stream, int64_t i_
     switch( p_stream->fmt.i_codec )
     {
         case VLC_CODEC_THEORA:
+            if( p_stream->i_first_frame_index == 0 && !p_stream->b_oggds )
+                i_granule++;
+            /* fallthrough */
         case VLC_CODEC_DAALA:
         case VLC_CODEC_KATE:
         {
@@ -176,7 +179,7 @@ vlc_tick_t Ogg_SampleToTime( const logical_stream_t 
*p_stream, int64_t i_sample,
 bool Ogg_GranuleIsValid( const logical_stream_t *p_stream, int64_t i_granule )
 {
     /* First frame in ogm is 0 (0[header] 0[frame] -1 2 3 -1 5 ...) */
-    return !( i_granule < 1 - !!p_stream->b_oggds );
+    return !( i_granule < p_stream->i_first_frame_index - !!p_stream->b_oggds 
);
 }
 
 vlc_tick_t Ogg_GranuleToTime( const logical_stream_t *p_stream, int64_t 
i_granule,

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to