[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] avi/fileformat aviffpln.cpp, 1.5.6.6,
From:       dushyantvipradas () helixcommunity ! org
Date:       2010-05-26 15:40:18
Message-ID: 201005261540.o4QFettG030818 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/datatype/avi/fileformat
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv21317

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	aviffpln.cpp avistrm.cpp 
Log Message:
Date: 5-21-2010
 
Project: SymbianMmf_wm
 
Error ID: ou1cimx1#375100: EASZ-8583DT
 
Synopsis: HarvesterServer crash when reading AVI file from MMC
 
Problem: Metadata makes minifileobject to operate in sync mode. So when we call \
GetRelativeFileObject the subsequent ‘read’ is called from the same call stack and \
hence the avistream is not informed about the existence of avi2.0 fileformat during \
this read. Because of this the avistream goes in wrong state which results in a \
crash.   
Solution: Informing the avistream about the existence of avi2.0 before calling \
GetRelativeFileObject solves the problem.   
This CR only address the issue of harvester crash. The second issue associated with \
this error is playback problem. The clip used for the error is a corrupted clip and \
hence the second issue can be ignored. I did analyzed the problem and the playback  \
stops because we encounter a bad chunk while reading.   
Also checking-in a potential error in case of AVI_INDEX_OF_CHUNKS in \
CAVIStream::SetAVIXIndex.   
Files Modified: 
\datatype\avi\fileformat\aviffpln.cpp
\datatype\avi\fileformat\avistrm.cpp


Index: aviffpln.cpp
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/aviffpln.cpp,v
retrieving revision 1.5.6.6
retrieving revision 1.5.6.7
diff -u -d -r1.5.6.6 -r1.5.6.7
--- aviffpln.cpp	15 Feb 2010 05:12:43 -0000	1.5.6.6
+++ aviffpln.cpp	26 May 2010 15:40:15 -0000	1.5.6.7
@@ -1305,15 +1305,14 @@
               			  
               			// We initialize the stream here when we find that the file \
contains   // AVI2.0 ODML style index. We only read super index. 
+    		          	CAVIStream* pStream = (CAVIStream*) m_streamArray[m_usStreamTarget \
-1]; +    		          	HX_ASSERT(pStream);
+    		          	result = pStream->SetAVIXIndex(pBuffer, \
m_pGeneralReader->GetOffset()); +
               			m_state = AS_GetODMLStreamFilePending;
     		          	const char* szFilename = NULL;
     		          	m_pFile->GetFilename(szFilename);
     		          	m_pFileSystemManager->GetRelativeFileObject(m_pFile, szFilename);
-                  			
-                  			
-    		          	CAVIStream* pStream = (CAVIStream*) m_streamArray[m_usStreamTarget \
                -1];
-    		          	HX_ASSERT(pStream);
-    		          	result = pStream->SetAVIXIndex(pBuffer, \
m_pGeneralReader->GetOffset());  m_state = AS_STRLRead;
                 }
                 break;   

Index: avistrm.cpp
===================================================================
RCS file: /cvsroot/datatype/avi/fileformat/avistrm.cpp,v
retrieving revision 1.9.6.12
retrieving revision 1.9.6.13
diff -u -d -r1.9.6.12 -r1.9.6.13
--- avistrm.cpp	25 May 2010 16:07:30 -0000	1.9.6.12
+++ avistrm.cpp	26 May 2010 15:40:15 -0000	1.9.6.13
@@ -473,7 +473,9 @@
         HX_DELETE(m_pSuperIndex);
         m_pSuperIndex = new AviSuperIndex; 
         AviSuperIndex* pSuperIndex = (AviSuperIndex*) buf;
-        
+
+        m_pSuperIndex->ucIndexSubType    = pSuperIndex->ucIndexSubType;
+        m_pSuperIndex->ucIndexType		 = pSuperIndex->ucIndexType;
         m_pSuperIndex->usLongsPerEntry   = \
                LE16_TO_HOST(pSuperIndex->usLongsPerEntry);
         m_pSuperIndex->ulNEntriesInUse   = \
                LE32_TO_HOST(pSuperIndex->ulNEntriesInUse);
         m_pSuperIndex->ulChunkId         = LE32_TO_HOST(pSuperIndex->ulChunkId);
@@ -499,8 +501,6 @@
         }
         else	// It must be an AVI_INDEX_OF_INDEXES 
         {
-        	  m_pSuperIndex->ucIndexSubType    = pSuperIndex->ucIndexSubType;
-            m_pSuperIndex->ucIndexType		 = pSuperIndex->ucIndexType;
             if(m_pSuperIndex->ulNEntriesInUse <= MAX_INDEX_CHUNKS)
             {
                	for(int i=0 ; i < m_pSuperIndex->ulNEntriesInUse ; i++)


_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic