Game Development Community

(CORRECTED)[Bug T3D 1.0.1] Theora video crash on Mac Mini GMA950 - LOGGED

by Nicolas Buquet · in Torque 3D Professional · 04/13/2010 (3:28 am) · 2 replies

Trying to integrate a video in theora format on my main menu screen, it works on my MacBookPro (8600M GT, 512 MB, Mac OSX 10.5.8), but it crashes on my MacMini (GMA950 share memory, 2 GB RAM, 10.6.3).

Thread 3 Crashed:
0   ...gegames.MS Bundle	0x119cdbed .wloop_sse + 136
1   ...gegames.MS Bundle	0x119ce480 OggTheoraDecoder::read(OggTheoraFrame**, unsigned int) + 480
2   ...gegames.MS Bundle	0x11ad423f TheoraTexture::FrameReadItem::execute() + 53
3   ...gegames.MS Bundle	0x11cf45dc ThreadPool::WorkItem::process() + 24
4   ...gegames.MS Bundle	0x11cf4da9 ThreadPool::WorkerThread::run(void*) + 269
5   ...gegames.MS Bundle	0x11cff9d1 ThreadRunHandler(void*) + 73
6   libSystem.B.dylib             	0x95952a19 _pthread_start + 345
7   libSystem.B.dylib             	0x9595289e thread_start + 34

The transcoder property of the GuiTheoraCtrl is set to "Auto".

Nicolas Buquet
www.buquet-net.com/cv/

#1
04/27/2010 (8:30 am)
Corrected by including this modification from Windows 1.1a version in 'oggInputStream.cpp' (I think…):
bool OggInputStream::_pullNextPage( ogg_page* page)
{   
   // Read another page.
   
while( ogg_sync_pageout( &mOggSyncState, page ) != 1 )
//while( ogg_sync_pageout( &mOggSyncState, page ) <= 0
//          && mStream->getStatus() != Stream::EOS )
   {
      enum { BUFFER_SIZE = 4096 };
      
      // Read more data.
      
      char* buffer = ogg_sync_buffer( &mOggSyncState, BUFFER_SIZE );
      const U32 oldPos = mStream->getPosition();
      mStream->read( BUFFER_SIZE, buffer );
         
      const U32 numBytes = mStream->getPosition() - oldPos;
      if( numBytes )
         ogg_sync_wrote( &mOggSyncState, numBytes );
      else
         return false;
   }
   
   #ifdef DEBUG_SPEW
   Platform::outputDebugString( "[OggInputStream] pulled next page (header: %i, body: %i)",
      page->header_len, page->body_len );
   #endif
   
   return true;
}
#2
06/05/2010 (1:41 pm)
logged: TQA-236