Author: ArcRiley
Date: 2007-07-05 03:26:18 -0400 (Thu, 05 Jul 2007)
New Revision: 361

Modified:
   trunk/pysoy/src/transports/Transport.pxi
Log:
read in all header pages during init


Modified: trunk/pysoy/src/transports/Transport.pxi
===================================================================
--- trunk/pysoy/src/transports/Transport.pxi    2007-07-05 07:02:09 UTC (rev 
360)
+++ trunk/pysoy/src/transports/Transport.pxi    2007-07-05 07:26:18 UTC (rev 
361)
@@ -74,6 +74,7 @@
   # Ogg functions
   #
   cdef void _headOgg(self) :
+    cdef int _sn
     cdef unsigned int m
     cdef char *_magic
     cdef ogg.ogg_page         _page
@@ -90,21 +91,29 @@
     while self._readOggPage(&_page) :
       if not ogg.ogg_page_bos(&_page) :
         (<soy._internals.Loadable> self._objs['video'])._load(&_page)
-        break 
-      ogg.ogg_stream_init(&_testStream, ogg.ogg_page_serialno(&_page))
+        break
+      _sn = ogg.ogg_page_serialno(&_page)
+      ogg.ogg_stream_init(&_testStream, _sn)
       ogg.ogg_stream_pagein(&_testStream, &_page)
       ogg.ogg_stream_packetout(&_testStream, &_packet)
       ogg.oggpackB_readinit(&_buffer, _packet.packet, _packet.bytes)
       m = ogg.oggpackB_read(&_buffer, 32)
       if m == 2155112549L and not self._objs.has_key('video') :
         self._objs['video'] = soy.textures.Video()
-        self._snos[ogg.ogg_page_serialno(&_page)] = 'video'
+        self._snos[_sn] = 'video'
         (<soy._internals.Loadable> self._objs['video'])._load(&_page)
       # 24538994 = vorbis
       # 7828073 = writ
       # 1399874917L = speex
       # 2135313473L = flac
       ogg.ogg_stream_clear(&_testStream)
+    # Grab the rest of the headers so codec instances can fully init
+    while ogg.ogg_page_granulepos(&_page) == 0 :
+      if not self._readOggPage(&_page) :
+        break
+      _sn = ogg.ogg_page_serialno(&_page)
+      if self._snos.has_key(_sn) :
+        (<soy._internals.Loadable> self._objs[self._snos[_sn]])._load(&_page)
     self._vers = 0 # Ogg
     self._mode = 1 # Loading
 

_______________________________________________
PySoy-SVN mailing list
[email protected]
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to