[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