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

List:       helix-datatype-cvs
Subject:    [Datatype-cvs] avi/fileformat aviffpln.cpp, 1.17, 1.18 avistrm.cpp,
From:       dushyantvipradas () helixcommunity ! org
Date:       2010-05-26 15:47:53
Message-ID: 201005261548.o4QFm5G3031513 () mailer ! progressive-comp ! com
[Download RAW message or body]

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

Modified Files:
	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.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- aviffpln.cpp	15 Feb 2010 05:17:03 -0000	1.17
+++ aviffpln.cpp	26 May 2010 15:47:50 -0000	1.18
@@ -1304,15 +1304,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.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- avistrm.cpp	25 May 2010 16:48:52 -0000	1.33
+++ avistrm.cpp	26 May 2010 15:47:50 -0000	1.34
@@ -486,6 +486,8 @@
         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);
@@ -511,8 +513,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