[vlc-commits] demux: ogg: better track of es state

Francois Cartegnie git at videolan.org
Mon Dec 30 15:42:11 CET 2013


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon Dec 30 14:13:02 2013 +0100| [723a1c363f2eb178c95aaa900fcefdc4b53e29cd] | committer: Francois Cartegnie

demux: ogg: better track of es state

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

 modules/demux/ogg.c |   13 ++++---------
 modules/demux/ogg.h |    1 +
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c
index 6fe9228..1b5a414 100644
--- a/modules/demux/ogg.c
+++ b/modules/demux/ogg.c
@@ -291,16 +291,10 @@ static int Demux( demux_t * p_demux )
         }
     }
 
-    if ( p_sys->b_preparsing_done )
+    if ( p_sys->b_preparsing_done && !p_sys->b_es_created )
     {
-        for ( int i=0; i < p_sys->i_streams; i++ )
-        {
-            if ( !p_sys->pp_stream[i]->p_es )
-            {
-                Ogg_CreateES( p_demux );
-                break;
-            }
-        }
+        Ogg_CreateES( p_demux );
+        p_sys->b_es_created = true;
     }
 
     /*
@@ -1944,6 +1938,7 @@ static void Ogg_EndOfStream( demux_t *p_demux )
     p_ogg->skeleton.major = 0;
     p_ogg->skeleton.minor = 0;
     p_ogg->b_preparsing_done = false;
+    p_ogg->b_es_created = false;
     p_ogg->i_pcr_offset = p_ogg->i_pcr;
 
     /* */
diff --git a/modules/demux/ogg.h b/modules/demux/ogg.h
index 3ec4d24..b0d8508 100644
--- a/modules/demux/ogg.h
+++ b/modules/demux/ogg.h
@@ -173,6 +173,7 @@ struct demux_sys_t
 
     /* preparsing info */
     bool b_preparsing_done;
+    bool b_es_created;
 
     /* Length, if available. */
     int64_t i_length;



More information about the vlc-commits mailing list