[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